Skip to content

Commit a90e35c

Browse files
committed
Improving tests to test the number of calls for the rulers
Signed-off-by: Alan Protasio <[email protected]>
1 parent a3ea545 commit a90e35c

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

pkg/ruler/ruler_test.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import (
1616
"testing"
1717
"time"
1818

19+
"go.uber.org/atomic"
20+
1921
"google.golang.org/grpc"
2022

2123
"github.com/go-kit/kit/log"
@@ -134,28 +136,32 @@ func newManager(t *testing.T, cfg Config) (*DefaultMultiTenantManager, func()) {
134136
}
135137

136138
type mockRulerClientsPool struct {
137-
services.Service
138-
cfg Config
139-
rulerAddrMap map[string]*Ruler
139+
ClientsPool
140+
cfg Config
141+
rulerAddrMap map[string]*Ruler
142+
numberOfCalls atomic.Int32
140143
}
141144

142145
type mockRulerClient struct {
143-
ruler *Ruler
146+
ruler *Ruler
147+
numberOfCalls *atomic.Int32
144148
}
145149

146150
func (c *mockRulerClient) Rules(ctx context.Context, in *RulesRequest, _ ...grpc.CallOption) (*RulesResponse, error) {
151+
c.numberOfCalls.Inc()
147152
return c.ruler.Rules(ctx, in)
148153
}
149154

150155
func (p *mockRulerClientsPool) GetClientFor(addr string) (RulerClient, error) {
151156
return &mockRulerClient{
152-
ruler: p.rulerAddrMap[addr],
157+
ruler: p.rulerAddrMap[addr],
158+
numberOfCalls: &p.numberOfCalls,
153159
}, nil
154160
}
155161

156162
func newMockClientsPool(cfg Config, logger log.Logger, reg prometheus.Registerer, rulerAddrMap map[string]*Ruler) *mockRulerClientsPool {
157163
return &mockRulerClientsPool{
158-
Service: newRulerClientPool(cfg.ClientTLSConfig, logger, reg),
164+
ClientsPool: newRulerClientPool(cfg.ClientTLSConfig, logger, reg),
159165
cfg: cfg,
160166
rulerAddrMap: rulerAddrMap,
161167
}
@@ -797,6 +803,11 @@ func TestSharding(t *testing.T) {
797803
} else {
798804
require.NoError(t, err)
799805
require.Equal(t, count, len(rulesState))
806+
807+
mockPoolLClient := r1.clientsPool.(*mockRulerClientsPool)
808+
// Right now we are calling all rulers in the ring regardless of the subring
809+
require.Equal(t, int32(len(tc.expectedRules)), mockPoolLClient.numberOfCalls.Load())
810+
mockPoolLClient.numberOfCalls.Store(0)
800811
}
801812
}
802813
} else {

0 commit comments

Comments
 (0)