@@ -98,17 +98,36 @@ func TestConfigServiceControllerAllOrNothing(t *testing.T) {
9898 handler := newTestHTTPHandler (store )
9999
100100 resp := doJSONRequest (re , handler , http .MethodPost , "/resource-manager/api/v1/config/controller" , map [string ]any {
101- "enable-controller-trace-log " : true ,
102- "unknown" : 1 ,
101+ "write-base-cost " : 2.0 ,
102+ "unknown" : 1 ,
103103 })
104104 re .Equal (http .StatusBadRequest , resp .Code )
105105 re .Empty (store .updatedControllerConfigItems )
106+ re .Zero (store .updateControllerConfigItemsCalls )
107+ re .Zero (store .updateControllerConfigItemCalls )
106108
107109 resp = doJSONRequest (re , handler , http .MethodPost , "/resource-manager/api/v1/config/controller" , map [string ]any {
108- "enable-controller-trace-log " : true ,
110+ "write-base-cost " : 2.0 ,
109111 })
110112 re .Equal (http .StatusOK , resp .Code )
111113 re .Len (store .updatedControllerConfigItems , 1 )
114+ re .Equal ([]string {"request-unit.write-base-cost" }, store .updatedControllerConfigItems )
115+ re .Equal (1 , store .updateControllerConfigItemsCalls )
116+ re .Zero (store .updateControllerConfigItemCalls )
117+ }
118+
119+ func TestConfigServiceControllerStoreFailuresReturn500 (t * testing.T ) {
120+ t .Parallel ()
121+
122+ re := require .New (t )
123+ store := newTestStore ()
124+ store .updateControllerConfigItemsErr = errors .New ("save controller config failed" )
125+ handler := newTestHTTPHandler (store )
126+
127+ resp := doJSONRequest (re , handler , http .MethodPost , "/resource-manager/api/v1/config/controller" , map [string ]any {
128+ "write-base-cost" : 2.0 ,
129+ })
130+ re .Equal (http .StatusInternalServerError , resp .Code )
112131}
113132
114133func TestConfigServiceKeyspaceServiceLimitAndErrors (t * testing.T ) {
@@ -178,9 +197,12 @@ func TestConfigServiceMetadataWriteDisabledReturns403(t *testing.T) {
178197 re .Equal (http .StatusForbidden , resp .Code )
179198
180199 resp = doJSONRequest (re , handler , http .MethodPost , "/resource-manager/api/v1/config/controller" , map [string ]any {
181- "enable-controller-trace-log " : true ,
200+ "write-base-cost " : 1.0 ,
182201 })
183202 re .Equal (http .StatusForbidden , resp .Code )
203+
204+ resp = doJSONRequest (re , handler , http .MethodPost , "/resource-manager/api/v1/config/controller" , map [string ]any {})
205+ re .Equal (http .StatusOK , resp .Code )
184206}
185207
186208func newTestHTTPHandler (configStore ConfigStore ) http.Handler {
@@ -209,13 +231,16 @@ func (*tokenOnlyManagerProvider) AddStartCallback(...func()) {}
209231func (* tokenOnlyManagerProvider ) AddServiceReadyCallback (... func (context.Context ) error ) {}
210232
211233type testStore struct {
212- keyspaceIDs map [string ]uint32
213- validKeyspaceIDs map [uint32 ]struct {}
214- groups map [string ]* rmserver.ResourceGroup
215- serviceLimits map [uint32 ]float64
216- addErr error
217- setServiceLimitErr error
218- updatedControllerConfigItems []string
234+ keyspaceIDs map [string ]uint32
235+ validKeyspaceIDs map [uint32 ]struct {}
236+ groups map [string ]* rmserver.ResourceGroup
237+ serviceLimits map [uint32 ]float64
238+ addErr error
239+ setServiceLimitErr error
240+ updateControllerConfigItemsErr error
241+ updatedControllerConfigItems []string
242+ updateControllerConfigItemsCalls int
243+ updateControllerConfigItemCalls int
219244}
220245
221246func newTestStore () * testStore {
@@ -288,13 +313,18 @@ func (*testStore) GetControllerConfig() *rmserver.ControllerConfig {
288313}
289314
290315func (s * testStore ) UpdateControllerConfigItems (items map [string ]any ) error {
316+ s .updateControllerConfigItemsCalls ++
317+ if s .updateControllerConfigItemsErr != nil {
318+ return s .updateControllerConfigItemsErr
319+ }
291320 for key := range items {
292321 s .updatedControllerConfigItems = append (s .updatedControllerConfigItems , key )
293322 }
294323 return nil
295324}
296325
297326func (s * testStore ) UpdateControllerConfigItem (key string , _ any ) error {
327+ s .updateControllerConfigItemCalls ++
298328 s .updatedControllerConfigItems = append (s .updatedControllerConfigItems , key )
299329 return nil
300330}
0 commit comments