暂无描述

index_test.go 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package profile
  2. import (
  3. "testing"
  4. )
  5. func TestSampleIndexByName(t *testing.T) {
  6. for _, c := range []struct {
  7. desc string
  8. sampleTypes []string
  9. defaultSampleType string
  10. index string
  11. want int
  12. wantError bool
  13. }{
  14. {
  15. desc: "use last by default",
  16. index: "",
  17. want: 1,
  18. sampleTypes: []string{"zero", "default"},
  19. },
  20. {
  21. desc: "honour specified default",
  22. index: "",
  23. want: 1,
  24. defaultSampleType: "default",
  25. sampleTypes: []string{"zero", "default", "two"},
  26. },
  27. {
  28. desc: "invalid default is ignored",
  29. index: "",
  30. want: 2,
  31. defaultSampleType: "non-existent",
  32. sampleTypes: []string{"zero", "one", "default"},
  33. },
  34. {
  35. desc: "index by int",
  36. index: "0",
  37. want: 0,
  38. sampleTypes: []string{"zero", "one", "two"},
  39. },
  40. {
  41. desc: "index by int ignores default",
  42. index: "0",
  43. want: 0,
  44. defaultSampleType: "default",
  45. sampleTypes: []string{"zero", "default", "two"},
  46. },
  47. {
  48. desc: "index by name",
  49. index: "two",
  50. want: 2,
  51. sampleTypes: []string{"zero", "one", "two", "three"},
  52. },
  53. {
  54. desc: "index by name ignores default",
  55. index: "zero",
  56. want: 0,
  57. defaultSampleType: "default",
  58. sampleTypes: []string{"zero", "default", "two"},
  59. },
  60. {
  61. desc: "out of bound int causes error",
  62. index: "100",
  63. wantError: true,
  64. sampleTypes: []string{"zero", "default"},
  65. },
  66. {
  67. desc: "unknown name causes error",
  68. index: "does not exist",
  69. wantError: true,
  70. sampleTypes: []string{"zero", "default"},
  71. },
  72. {
  73. desc: "'inused_{x}' recognized for legacy '{x}'",
  74. index: "inuse_zero",
  75. want: 0,
  76. sampleTypes: []string{"zero", "default"},
  77. },
  78. } {
  79. p := &Profile{
  80. DefaultSampleType: c.defaultSampleType,
  81. SampleType: []*ValueType{},
  82. }
  83. for _, st := range c.sampleTypes {
  84. p.SampleType = append(p.SampleType, &ValueType{Type: st, Unit: "milliseconds"})
  85. }
  86. got, err := p.SampleIndexByName(c.index)
  87. switch {
  88. case c.wantError && err == nil:
  89. t.Errorf("%s: error should have been returned not index=%d, err=%v", c.desc, got, err)
  90. case !c.wantError && err != nil:
  91. t.Errorf("%s: unexpected got index=%d, err=%v; wanted index=%d, err=nil", c.desc, got, err, c.want)
  92. case !c.wantError && got != c.want:
  93. t.Errorf("%s: got index=%d, want index=%d", c.desc, got, c.want)
  94. }
  95. }
  96. }