Skip to content

Commit b244b40

Browse files
committed
fix tests
Signed-off-by: SungJin1212 <[email protected]>
1 parent f2aed1d commit b244b40

File tree

5 files changed

+111
-66
lines changed

5 files changed

+111
-66
lines changed

pkg/alertmanager/alertstore/store.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ package alertstore
22

33
import (
44
"context"
5+
"fmt"
6+
"io"
57

68
"github.com/go-kit/log"
79
"github.com/prometheus/client_golang/prometheus"
10+
"github.com/thanos-io/objstore"
811

912
"github.com/cortexproject/cortex/pkg/alertmanager/alertspb"
1013
"github.com/cortexproject/cortex/pkg/alertmanager/alertstore/bucketclient"
@@ -14,6 +17,10 @@ import (
1417
"github.com/cortexproject/cortex/pkg/storage/bucket"
1518
)
1619

20+
var (
21+
errAccessDenied = fmt.Errorf("access denied")
22+
)
23+
1724
// AlertStore stores and configures users rule configs
1825
type AlertStore interface {
1926
// ListAllUsers returns all users with alertmanager configuration.
@@ -69,3 +76,27 @@ func NewAlertStore(ctx context.Context, cfg Config, cfgProvider bucket.TenantCon
6976

7077
return bucketclient.NewBucketAlertStore(bucketClient, cfg.UsersScanner, cfgProvider, logger, reg)
7178
}
79+
80+
type MockBucket struct {
81+
objstore.Bucket
82+
err error
83+
}
84+
85+
func (m *MockBucket) WithExpectedErrs(expectedFunc objstore.IsOpFailureExpectedFunc) objstore.Bucket {
86+
return m
87+
}
88+
89+
func (m *MockBucket) ReaderWithExpectedErrs(expectedFunc objstore.IsOpFailureExpectedFunc) objstore.BucketReader {
90+
return m
91+
}
92+
93+
func (m *MockBucket) Get(ctx context.Context, name string) (io.ReadCloser, error) {
94+
if m.err != nil {
95+
return nil, m.err
96+
}
97+
return m.Bucket.Get(ctx, name)
98+
}
99+
100+
func (m *MockBucket) IsAccessDeniedErr(err error) bool {
101+
return err == errAccessDenied
102+
}

pkg/alertmanager/alertstore/store_test.go

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package alertstore
22

33
import (
44
"context"
5-
"fmt"
6-
"io"
75
"testing"
86

97
"github.com/go-kit/log"
@@ -18,12 +16,8 @@ import (
1816
cortextsdb "github.com/cortexproject/cortex/pkg/storage/tsdb"
1917
)
2018

21-
var (
22-
errAccessDenied = fmt.Errorf("access denied")
23-
)
24-
2519
func TestAlertStore_ListAllUsers(t *testing.T) {
26-
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *mockBucket, client interface{}) {
20+
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *MockBucket, client interface{}) {
2721
ctx := context.Background()
2822
user1Cfg := alertspb.AlertConfigDesc{User: "user-1", RawConfig: "content-1"}
2923
user2Cfg := alertspb.AlertConfigDesc{User: "user-2", RawConfig: "content-2"}
@@ -57,7 +51,7 @@ func TestAlertStore_ListAllUsers(t *testing.T) {
5751
}
5852

5953
func TestAlertStore_SetAndGetAlertConfig(t *testing.T) {
60-
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *mockBucket, client interface{}) {
54+
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *MockBucket, client interface{}) {
6155
ctx := context.Background()
6256
user1Cfg := alertspb.AlertConfigDesc{User: "user-1", RawConfig: "content-1"}
6357
user2Cfg := alertspb.AlertConfigDesc{User: "user-2", RawConfig: "content-2"}
@@ -95,7 +89,7 @@ func TestAlertStore_SetAndGetAlertConfig(t *testing.T) {
9589
}
9690

9791
func TestStore_GetAlertConfigs(t *testing.T) {
98-
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *mockBucket, client interface{}) {
92+
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *MockBucket, client interface{}) {
9993
ctx := context.Background()
10094
user1Cfg := alertspb.AlertConfigDesc{User: "user-1", RawConfig: "content-1"}
10195
user2Cfg := alertspb.AlertConfigDesc{User: "user-2", RawConfig: "content-2"}
@@ -140,7 +134,7 @@ func TestStore_GetAlertConfigs(t *testing.T) {
140134
}
141135

142136
func TestAlertStore_DeleteAlertConfig(t *testing.T) {
143-
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *mockBucket, client interface{}) {
137+
runForEachAlertStore(t, func(t *testing.T, store AlertStore, m *MockBucket, client interface{}) {
144138
ctx := context.Background()
145139
user1Cfg := alertspb.AlertConfigDesc{User: "user-1", RawConfig: "content-1"}
146140
user2Cfg := alertspb.AlertConfigDesc{User: "user-2", RawConfig: "content-2"}
@@ -180,9 +174,9 @@ func TestAlertStore_DeleteAlertConfig(t *testing.T) {
180174
})
181175
}
182176

183-
func runForEachAlertStore(t *testing.T, testFn func(t *testing.T, store AlertStore, b *mockBucket, client interface{})) {
177+
func runForEachAlertStore(t *testing.T, testFn func(t *testing.T, store AlertStore, b *MockBucket, client interface{})) {
184178
bucketClient := objstore.NewInMemBucket()
185-
mBucketClient := &mockBucket{Bucket: bucketClient}
179+
mBucketClient := &MockBucket{Bucket: bucketClient}
186180
usersScannerConfig := cortextsdb.UsersScannerConfig{Strategy: cortextsdb.UserScanStrategyList}
187181
reg := prometheus.NewPedanticRegistry()
188182
bucketStore, err := bucketclient.NewBucketAlertStore(mBucketClient, usersScannerConfig, nil, log.NewNopLogger(), reg)
@@ -225,7 +219,7 @@ func makeTestFullState(content string) alertspb.FullStateDesc {
225219

226220
func TestBucketAlertStore_GetSetDeleteFullState(t *testing.T) {
227221
bucket := objstore.NewInMemBucket()
228-
mBucketClient := &mockBucket{Bucket: bucket}
222+
mBucketClient := &MockBucket{Bucket: bucket}
229223
usersScannerConfig := cortextsdb.UsersScannerConfig{Strategy: cortextsdb.UserScanStrategyList}
230224
reg := prometheus.NewPedanticRegistry()
231225
store, err := bucketclient.NewBucketAlertStore(mBucketClient, usersScannerConfig, nil, log.NewNopLogger(), reg)
@@ -308,27 +302,3 @@ func TestBucketAlertStore_GetSetDeleteFullState(t *testing.T) {
308302
require.NoError(t, store.DeleteFullState(ctx, "user-1"))
309303
}
310304
}
311-
312-
type mockBucket struct {
313-
objstore.Bucket
314-
err error
315-
}
316-
317-
func (m *mockBucket) WithExpectedErrs(expectedFunc objstore.IsOpFailureExpectedFunc) objstore.Bucket {
318-
return m
319-
}
320-
321-
func (m *mockBucket) ReaderWithExpectedErrs(expectedFunc objstore.IsOpFailureExpectedFunc) objstore.BucketReader {
322-
return m
323-
}
324-
325-
func (m *mockBucket) Get(ctx context.Context, name string) (io.ReadCloser, error) {
326-
if m.err != nil {
327-
return nil, m.err
328-
}
329-
return m.Bucket.Get(ctx, name)
330-
}
331-
332-
func (m *mockBucket) IsAccessDeniedErr(err error) bool {
333-
return err == errAccessDenied
334-
}

pkg/alertmanager/api_test.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ import (
2222
"gopkg.in/yaml.v2"
2323

2424
"github.com/cortexproject/cortex/pkg/alertmanager/alertspb"
25+
"github.com/cortexproject/cortex/pkg/alertmanager/alertstore"
2526
"github.com/cortexproject/cortex/pkg/alertmanager/alertstore/bucketclient"
27+
cortextsdb "github.com/cortexproject/cortex/pkg/storage/tsdb"
2628
"github.com/cortexproject/cortex/pkg/util/flagext"
2729
util_log "github.com/cortexproject/cortex/pkg/util/log"
2830
"github.com/cortexproject/cortex/pkg/util/services"
@@ -706,8 +708,10 @@ alertmanager_config: |
706708
}
707709

708710
limits := &mockAlertManagerLimits{}
711+
store, err := prepareInMemoryAlertStore()
712+
require.NoError(t, err)
709713
am := &MultitenantAlertmanager{
710-
store: prepareInMemoryAlertStore(),
714+
store: store,
711715
logger: util_log.Logger,
712716
limits: limits,
713717
}
@@ -739,7 +743,12 @@ alertmanager_config: |
739743

740744
func TestMultitenantAlertmanager_DeleteUserConfig(t *testing.T) {
741745
storage := objstore.NewInMemBucket()
742-
alertStore := bucketclient.NewBucketAlertStore(storage, nil, log.NewNopLogger())
746+
bkt := &alertstore.MockBucket{Bucket: storage}
747+
748+
usersScannerConfig := cortextsdb.UsersScannerConfig{Strategy: cortextsdb.UserScanStrategyList}
749+
reg := prometheus.NewPedanticRegistry()
750+
alertStore, err := bucketclient.NewBucketAlertStore(bkt, usersScannerConfig, nil, log.NewNopLogger(), reg)
751+
require.NoError(t, err)
743752

744753
am := &MultitenantAlertmanager{
745754
store: alertStore,
@@ -823,7 +832,12 @@ receivers:
823832
}
824833

825834
storage := objstore.NewInMemBucket()
826-
alertStore := bucketclient.NewBucketAlertStore(storage, nil, log.NewNopLogger())
835+
bkt := &alertstore.MockBucket{Bucket: storage}
836+
837+
usersScannerConfig := cortextsdb.UsersScannerConfig{Strategy: cortextsdb.UserScanStrategyList}
838+
reg := prometheus.NewPedanticRegistry()
839+
alertStore, err := bucketclient.NewBucketAlertStore(bkt, usersScannerConfig, nil, log.NewNopLogger(), reg)
840+
require.NoError(t, err)
827841

828842
for u, cfg := range testCases {
829843
err := alertStore.SetAlertConfig(context.Background(), alertspb.AlertConfigDesc{
@@ -834,11 +848,10 @@ receivers:
834848
}
835849

836850
externalURL := flagext.URLValue{}
837-
err := externalURL.Set("http://localhost:8080/alertmanager")
851+
err = externalURL.Set("http://localhost:8080/alertmanager")
838852
require.NoError(t, err)
839853

840854
// Create the Multitenant Alertmanager.
841-
reg := prometheus.NewPedanticRegistry()
842855
cfg := mockAlertmanagerConfig(t)
843856
am, err := createMultitenantAlertmanager(cfg, nil, nil, alertStore, nil, nil, log.NewNopLogger(), reg)
844857
require.NoError(t, err)

0 commit comments

Comments
 (0)