repositoryquerier_test.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package customcost
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/opencost/opencost/core/pkg/opencost"
  6. "github.com/opencost/opencost/core/pkg/util/timeutil"
  7. )
  8. func TestGetCustomCostAccumulateOption(t *testing.T) {
  9. now := time.Now().UTC()
  10. nextHour := opencost.RoundForward(now, time.Hour)
  11. midnight := opencost.RoundForward(now, timeutil.Day)
  12. tests := map[string]struct {
  13. window opencost.Window
  14. want opencost.AccumulateOption
  15. from []opencost.AccumulateOption
  16. wantErr bool
  17. }{
  18. "open window": {
  19. window: opencost.NewWindow(nil, nil),
  20. from: nil,
  21. want: opencost.AccumulateOptionNone,
  22. wantErr: true,
  23. },
  24. "negative window": {
  25. window: opencost.NewClosedWindow(midnight, midnight.Add(-1)),
  26. from: nil,
  27. want: opencost.AccumulateOptionNone,
  28. wantErr: true,
  29. },
  30. "hourly max": {
  31. window: opencost.NewClosedWindow(nextHour.Add(-time.Hour*49).Add(-1), nextHour),
  32. from: nil,
  33. want: opencost.AccumulateOptionDay,
  34. wantErr: false,
  35. },
  36. "daily min": {
  37. window: opencost.NewClosedWindow(nextHour.Add(-time.Hour*49).Add(-1), nextHour),
  38. from: nil,
  39. want: opencost.AccumulateOptionDay,
  40. wantErr: false,
  41. },
  42. "daily max": {
  43. window: opencost.NewClosedWindow(midnight.Add(-timeutil.Day*7), midnight),
  44. from: nil,
  45. want: opencost.AccumulateOptionDay,
  46. wantErr: false,
  47. },
  48. "out of range": {
  49. window: opencost.NewClosedWindow(midnight.Add(-timeutil.Day*120), midnight.Add(-timeutil.Day*30)),
  50. from: nil,
  51. want: opencost.AccumulateOptionDay,
  52. wantErr: false,
  53. },
  54. "daily from daily, monthly": {
  55. window: opencost.NewClosedWindow(nextHour.Add(-time.Hour*24), nextHour),
  56. from: []opencost.AccumulateOption{
  57. opencost.AccumulateOptionDay,
  58. opencost.AccumulateOptionMonth,
  59. },
  60. want: opencost.AccumulateOptionDay,
  61. wantErr: false,
  62. },
  63. }
  64. for name, tt := range tests {
  65. t.Run(name, func(t *testing.T) {
  66. got, err := getCustomCostAccumulateOption(tt.window, tt.from)
  67. if (err != nil) != tt.wantErr {
  68. t.Errorf("GetAccumulateOption() error = %v, wantErr %v", err, tt.wantErr)
  69. return
  70. }
  71. if got != tt.want {
  72. t.Errorf("GetAccumulateOption() got = %v, want %v", got, tt.want)
  73. }
  74. })
  75. }
  76. }