@@ -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
136138type 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
142145type mockRulerClient struct {
143- ruler * Ruler
146+ ruler * Ruler
147+ numberOfCalls * atomic.Int32
144148}
145149
146150func (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
150155func (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
156162func 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