| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package azure
- import (
- "os"
- "path/filepath"
- "testing"
- "time"
- "github.com/opencost/opencost/core/pkg/env"
- pkgenv "github.com/opencost/opencost/pkg/env"
- )
- func TestDeleteFilesOlderThanRetention(t *testing.T) {
- testCases := []struct {
- name string
- pre func()
- files map[string]time.Duration
- deleted int
- expected string
- }{
- {
- name: "Ensure the default value of '2' works",
- files: map[string]time.Duration{
- "today.gz": 1 * 24 * time.Hour,
- "yesterday.gz": 1.5 * 24 * time.Hour,
- "two_days_ago.gz": 3 * 24 * time.Hour,
- },
- deleted: 1,
- expected: "today.gz,yesterday.gz",
- },
- {
- name: "Ensure the a value of 7 works",
- pre: func() {
- env.Set(pkgenv.CloudCostPvRetentionEnvVar, "7")
- },
- files: map[string]time.Duration{
- "today.gz": 1 * 24 * time.Hour,
- "yesterday.gz": 1.5 * 24 * time.Hour,
- "two_days_ago.gz": 3 * 24 * time.Hour,
- },
- deleted: 0,
- expected: "today.gz,yesterday.gz,two_days_ago.gz",
- },
- {
- name: "Ensure the a value of 7 works",
- pre: func() {
- env.Set(pkgenv.CloudCostPvRetentionEnvVar, "7")
- },
- files: map[string]time.Duration{
- "today.gz": 1 * 24 * time.Hour,
- "yesterday.gz": 1.5 * 24 * time.Hour,
- "two_days_ago.gz": 3 * 24 * time.Hour,
- "old_file.gz": 8 * 24 * time.Hour,
- },
- deleted: 1,
- expected: "today.gz,yesterday.gz,two_days_ago.gz",
- },
- }
- for _, tt := range testCases {
- if tt.pre != nil {
- tt.pre()
- }
- tmpDir, err := os.MkdirTemp("", "test-delete-files")
- if err != nil {
- t.Errorf("Failed to make temp directory: %v", err)
- }
- defer os.RemoveAll(tmpDir)
- for name, days := range tt.files {
- confPath := filepath.Join(tmpDir, name)
- err = os.WriteFile(confPath, []byte(`{"status": "ok"}`), 0644)
- if err != nil {
- t.Errorf("Failed to write file inside temp directory: %v", err)
- }
- modTime := time.Now().Add(-days)
- err = os.Chtimes(confPath, modTime, modTime)
- if err != nil {
- t.Errorf("Failed to set modification time for file: %v", err)
- }
- }
- sc := &StorageConnection{}
- cleaned, err := sc.deleteFilesOlderThanRetention(tmpDir)
- if err != nil {
- t.Fatalf("unexpected error: %v", err)
- }
- if len(cleaned) != tt.deleted {
- t.Errorf("deleteFilesOlderThanRetention() cleaned %d files, want %d", len(cleaned), tt.deleted)
- }
- }
- }
|