cloud_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package test
  2. import (
  3. "testing"
  4. "github.com/kubecost/cost-model/pkg/cloud"
  5. v1 "k8s.io/api/core/v1"
  6. )
  7. const(
  8. providerIDMap = "spec.providerID"
  9. nameMap = "metadata.name"
  10. labelMapFoo = "metadata.labels.foo"
  11. )
  12. func TestNodeValueFromMapField(t *testing.T) {
  13. providerIDWant := "providerid"
  14. nameWant := "gke-standard-cluster-1-pool-1-91dc432d-cg69"
  15. labelFooWant := "labelfoo"
  16. n := &v1.Node{}
  17. n.Spec.ProviderID = providerIDWant
  18. n.Name = nameWant
  19. n.Labels = make(map[string]string)
  20. n.Labels["foo"] = labelFooWant
  21. got := cloud.NodeValueFromMapField(providerIDMap, n)
  22. if got != providerIDWant {
  23. t.Errorf("Assert on '%s' want '%s' got '%s'", providerIDMap, providerIDWant, got)
  24. }
  25. got = cloud.NodeValueFromMapField(nameMap, n)
  26. if got != nameWant {
  27. t.Errorf("Assert on '%s' want '%s' got '%s'", nameMap, nameWant, got)
  28. }
  29. got = cloud.NodeValueFromMapField(labelMapFoo, n)
  30. if got != labelFooWant {
  31. t.Errorf("Assert on '%s' want '%s' got '%s'", labelMapFoo, labelFooWant, got)
  32. }
  33. }
  34. func TestNodePriceFromCSV(t * testing.T) {
  35. providerIDWant := "providerid"
  36. nameWant := "gke-standard-cluster-1-pool-1-91dc432d-cg69"
  37. labelFooWant := "labelfoo"
  38. n := &v1.Node{}
  39. n.Spec.ProviderID = providerIDWant
  40. n.Name = nameWant
  41. n.Labels = make(map[string]string)
  42. n.Labels["foo"] = labelFooWant
  43. wantPrice := "0.1337"
  44. c := &cloud.CSVProvider{
  45. CSVLocation: "../configs/pricing_schema.csv",
  46. CustomProvider: &cloud.CustomProvider{
  47. Config: cloud.NewProviderConfig("../configs/default.json"),
  48. },
  49. }
  50. c.DownloadPricingData()
  51. k := c.GetKey(n.Labels, n)
  52. resN, _ := c.NodePricing(k)
  53. gotPrice := resN.Cost
  54. if gotPrice != wantPrice {
  55. t.Errorf("Wanted price '%s' got price '%s'", wantPrice, gotPrice)
  56. }
  57. }