(t *testing.T)
| 195 | } |
| 196 | |
| 197 | func TestManagerGzip(t *testing.T) { |
| 198 | writeConfig := func(filename string, gzipped bool) string { |
| 199 | dir := t.TempDir() |
| 200 | filePath := filepath.Join(dir, filename) |
| 201 | f, err := os.Create(filePath) |
| 202 | require.NoError(t, err) |
| 203 | defer f.Close() |
| 204 | w := io.Writer(f) |
| 205 | if gzipped { |
| 206 | gw := gzip.NewWriter(f) |
| 207 | defer gw.Close() |
| 208 | w = gw |
| 209 | } |
| 210 | require.NoError(t, yaml.NewEncoder(w).Encode(map[string]any{ |
| 211 | "overrides": map[string]any{ |
| 212 | "user1": map[string]any{ |
| 213 | "limit2": 150, |
| 214 | }, |
| 215 | }, |
| 216 | })) |
| 217 | return filePath |
| 218 | } |
| 219 | |
| 220 | cfg := func(file string) Config { |
| 221 | return Config{ |
| 222 | ReloadPeriod: time.Second, |
| 223 | LoadPath: []string{file}, |
| 224 | Loader: testLoadOverrides, |
| 225 | } |
| 226 | } |
| 227 | |
| 228 | defaultTestLimits = &TestLimits{Limit1: 100} |
| 229 | t.Run("gzipped with .gz extension should succeed", func(t *testing.T) { |
| 230 | file := writeConfig("overrides.yaml.gz", true) |
| 231 | manager, err := New(cfg(file), "overrides", nil, log.NewNopLogger()) |
| 232 | require.NoError(t, err) |
| 233 | require.NoError(t, services.StartAndAwaitRunning(context.Background(), manager)) |
| 234 | t.Cleanup(func() { require.NoError(t, services.StopAndAwaitTerminated(context.Background(), manager)) }) |
| 235 | |
| 236 | // Make sure test limits were loaded. |
| 237 | require.NotNil(t, manager.GetConfig()) |
| 238 | conf := manager.GetConfig().(*testOverrides) |
| 239 | require.NotNil(t, conf) |
| 240 | require.Equal(t, 150, conf.Overrides["user1"].Limit2) |
| 241 | }) |
| 242 | |
| 243 | t.Run("non-gzipped with .gz extension should fail", func(t *testing.T) { |
| 244 | file := writeConfig("overrides.yaml.gz", false) |
| 245 | manager, err := New(cfg(file), "overrides", nil, log.NewNopLogger()) |
| 246 | require.NoError(t, err) |
| 247 | err = services.StartAndAwaitRunning(context.Background(), manager) |
| 248 | require.Error(t, err) |
| 249 | require.ErrorIs(t, err, gzip.ErrHeader) |
| 250 | }) |
| 251 | |
| 252 | t.Run("gzipped without .gz extension should mention that in the error", func(t *testing.T) { |
| 253 | file := writeConfig("overrides.yaml", true) |
| 254 | manager, err := New(cfg(file), "overrides", nil, log.NewNopLogger()) |
nothing calls this directly
no test coverage detected