github.com/argoproj/argo-cd/v3@v3.2.1/reposerver/metrics/githandlers_test.go (about) 1 package metrics 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "golang.org/x/sync/semaphore" 9 ) 10 11 func TestMain(m *testing.M) { 12 os.Exit(m.Run()) 13 } 14 15 func TestEdgeCasesAndErrorHandling(t *testing.T) { 16 tests := []struct { 17 name string 18 setup func() 19 teardown func() 20 testFunc func(t *testing.T) 21 }{ 22 { 23 name: "lsRemoteParallelismLimitSemaphore is nil", 24 testFunc: func(t *testing.T) { 25 t.Helper() 26 lsRemoteParallelismLimitSemaphore = nil 27 assert.NotPanics(t, func() { 28 NewGitClientEventHandlers(&MetricsServer{}) 29 }) 30 }, 31 }, 32 { 33 name: "lsRemoteParallelismLimitSemaphore is not nil", 34 setup: func() { 35 lsRemoteParallelismLimitSemaphore = semaphore.NewWeighted(1) 36 }, 37 teardown: func() { 38 lsRemoteParallelismLimitSemaphore = nil 39 }, 40 testFunc: func(t *testing.T) { 41 t.Helper() 42 assert.NotPanics(t, func() { 43 NewGitClientEventHandlers(&MetricsServer{}) 44 }) 45 }, 46 }, 47 { 48 name: "lsRemoteParallelismLimitSemaphore is not nil and Acquire returns error", 49 setup: func() { 50 lsRemoteParallelismLimitSemaphore = semaphore.NewWeighted(1) 51 }, 52 teardown: func() { 53 lsRemoteParallelismLimitSemaphore = nil 54 }, 55 testFunc: func(t *testing.T) { 56 t.Helper() 57 assert.NotPanics(t, func() { 58 NewGitClientEventHandlers(&MetricsServer{}) 59 }) 60 }, 61 }, 62 } 63 for _, tt := range tests { 64 t.Run(tt.name, func(t *testing.T) { 65 if tt.setup != nil { 66 tt.setup() 67 } 68 if tt.teardown != nil { 69 defer tt.teardown() 70 } 71 tt.testFunc(t) 72 }) 73 } 74 } 75 76 func TestSemaphoreFunctionality(t *testing.T) { 77 t.Setenv("ARGOCD_GIT_LSREMOTE_PARALLELISM_LIMIT", "1") 78 79 tests := []struct { 80 name string 81 setup func() 82 teardown func() 83 testFunc func(t *testing.T) 84 }{ 85 { 86 name: "lsRemoteParallelismLimitSemaphore is not nil", 87 setup: func() { 88 lsRemoteParallelismLimitSemaphore = semaphore.NewWeighted(1) 89 }, 90 teardown: func() { 91 lsRemoteParallelismLimitSemaphore = nil 92 }, 93 testFunc: func(t *testing.T) { 94 t.Helper() 95 assert.NotPanics(t, func() { 96 NewGitClientEventHandlers(&MetricsServer{}) 97 }) 98 }, 99 }, 100 { 101 name: "lsRemoteParallelismLimitSemaphore is not nil and Acquire returns error", 102 setup: func() { 103 lsRemoteParallelismLimitSemaphore = semaphore.NewWeighted(1) 104 }, 105 teardown: func() { 106 lsRemoteParallelismLimitSemaphore = nil 107 }, 108 testFunc: func(t *testing.T) { 109 t.Helper() 110 assert.NotPanics(t, func() { 111 NewGitClientEventHandlers(&MetricsServer{}) 112 }) 113 }, 114 }, 115 } 116 for _, tt := range tests { 117 t.Run(tt.name, func(t *testing.T) { 118 if tt.setup != nil { 119 tt.setup() 120 } 121 if tt.teardown != nil { 122 defer tt.teardown() 123 } 124 tt.testFunc(t) 125 }) 126 } 127 }