|
4 | 4 | "fmt" |
5 | 5 | "os" |
6 | 6 | "path/filepath" |
| 7 | + "runtime" |
7 | 8 | "sync" |
8 | 9 | "testing" |
9 | 10 | "time" |
@@ -474,3 +475,50 @@ func TestConcurrentPresetUpdates(t *testing.T) { |
474 | 475 | a.NoError(err) |
475 | 476 | a.Equal(numGoroutines, len(finalMetrics.PresetDefs), "Some updates were lost due to race condition!") |
476 | 477 | } |
| 478 | + |
| 479 | +func TestGetMetricsNonExistentPath(t *testing.T) { |
| 480 | + nonExistent := filepath.Join(t.TempDir(), "does_not_exist", "metrics.yaml") |
| 481 | + fmr, err := metrics.NewYAMLMetricReaderWriter(ctx, nonExistent) |
| 482 | + assert.NoError(t, err) |
| 483 | + _, err = fmr.GetMetrics() |
| 484 | + assert.Error(t, err) |
| 485 | +} |
| 486 | + |
| 487 | +func TestGetMetricsDirWithInvalidYAML(t *testing.T) { |
| 488 | + dir := t.TempDir() |
| 489 | + err := os.WriteFile(filepath.Join(dir, "bad.yaml"), []byte("invalid: yaml: {unclosed"), 0644) |
| 490 | + assert.NoError(t, err) |
| 491 | + fmr, err := metrics.NewYAMLMetricReaderWriter(ctx, dir) |
| 492 | + assert.NoError(t, err) |
| 493 | + _, err = fmr.GetMetrics() |
| 494 | + assert.Error(t, err) |
| 495 | +} |
| 496 | + |
| 497 | +func TestMutationsGetMetricsError(t *testing.T) { |
| 498 | + nonExistent := filepath.Join(t.TempDir(), "does_not_exist", "metrics.yaml") |
| 499 | + fmr, err := metrics.NewYAMLMetricReaderWriter(ctx, nonExistent) |
| 500 | + assert.NoError(t, err) |
| 501 | + |
| 502 | + assert.Error(t, fmr.DeleteMetric("x")) |
| 503 | + assert.Error(t, fmr.UpdateMetric("x", metrics.Metric{})) |
| 504 | + assert.Error(t, fmr.CreateMetric("x", metrics.Metric{})) |
| 505 | + assert.Error(t, fmr.DeletePreset("x")) |
| 506 | + assert.Error(t, fmr.UpdatePreset("x", metrics.Preset{})) |
| 507 | + assert.Error(t, fmr.CreatePreset("x", metrics.Preset{})) |
| 508 | +} |
| 509 | + |
| 510 | +func TestLoadMetricsUnreadableFile(t *testing.T) { |
| 511 | + if runtime.GOOS == "windows" { |
| 512 | + t.Skip("cannot reliably test file permissions on Windows") |
| 513 | + } |
| 514 | + if os.Getuid() == 0 { |
| 515 | + t.Skip("running as root, permission checks do not apply") |
| 516 | + } |
| 517 | + f := filepath.Join(t.TempDir(), "metrics.yaml") |
| 518 | + err := os.WriteFile(f, []byte(""), 0000) |
| 519 | + assert.NoError(t, err) |
| 520 | + fmr, err := metrics.NewYAMLMetricReaderWriter(ctx, f) |
| 521 | + assert.NoError(t, err) |
| 522 | + _, err = fmr.GetMetrics() |
| 523 | + assert.Error(t, err) |
| 524 | +} |
0 commit comments