(t *testing.T)
| 79 | } |
| 80 | |
| 81 | func TestDetectLegacyOverrides(t *testing.T) { |
| 82 | tests := []struct { |
| 83 | name string |
| 84 | m map[string]interface{} |
| 85 | expectErr bool |
| 86 | }{ |
| 87 | { |
| 88 | name: "new format with defaults key", |
| 89 | m: map[string]interface{}{ |
| 90 | "overrides": map[string]interface{}{ |
| 91 | "defaults": map[string]interface{}{ |
| 92 | "ingestion": map[string]interface{}{ |
| 93 | "rate_limit_bytes": 5000000, |
| 94 | }, |
| 95 | }, |
| 96 | }, |
| 97 | }, |
| 98 | expectErr: false, |
| 99 | }, |
| 100 | { |
| 101 | name: "legacy format detected", |
| 102 | m: map[string]interface{}{ |
| 103 | "overrides": map[string]interface{}{ |
| 104 | "ingestion_rate_strategy": "global", |
| 105 | "ingestion_rate_limit_bytes": 5000000, |
| 106 | "max_traces_per_user": 50000, |
| 107 | }, |
| 108 | }, |
| 109 | expectErr: true, |
| 110 | }, |
| 111 | { |
| 112 | name: "no overrides section", |
| 113 | m: map[string]interface{}{}, |
| 114 | expectErr: false, |
| 115 | }, |
| 116 | { |
| 117 | name: "unknown keys without legacy keys is fine", |
| 118 | m: map[string]interface{}{ |
| 119 | "overrides": map[string]interface{}{ |
| 120 | "defaults": map[string]interface{}{}, |
| 121 | "some_unknown_key": "value", |
| 122 | }, |
| 123 | }, |
| 124 | expectErr: false, |
| 125 | }, |
| 126 | } |
| 127 | |
| 128 | for _, tt := range tests { |
| 129 | t.Run(tt.name, func(t *testing.T) { |
| 130 | err := detectLegacyOverrides(tt.m) |
| 131 | if tt.expectErr { |
| 132 | require.Error(t, err) |
| 133 | assert.Contains(t, err.Error(), "legacy overrides format detected") |
| 134 | assert.Contains(t, err.Error(), "tempo-cli migrate overrides-config") |
| 135 | } else { |
| 136 | require.NoError(t, err) |
| 137 | } |
| 138 | }) |
nothing calls this directly
no test coverage detected