@@ -2773,7 +2773,68 @@ Y_UNIT_TEST_SUITE(TCmsTest) {
27732773 // tablet 'FLAT_BS_CONTROLLER' has too many unavailable nodes.
27742774 env.CheckPermissionRequest (" user" , false , false , false , true , MODE_MAX_AVAILABILITY, TStatus::DISALLOW_TEMP,
27752775 MakeAction (TAction::RESTART_SERVICES, env.GetNodeId (4 ), 60000000 , " storage" ));
2776-
2776+ }
2777+
2778+ Y_UNIT_TEST (DisableCMS){
2779+ TCmsTestEnv env (16 );
2780+
2781+ auto r1 = env.CheckPermissionRequest (" user" , false , false , true , true , TStatus::ALLOW,
2782+ MakeAction (TAction::SHUTDOWN_HOST, env.GetNodeId (0 ), 60000000 ));
2783+ UNIT_ASSERT_VALUES_EQUAL (r1.PermissionsSize (), 1 );
2784+
2785+ // Scheduled request
2786+ auto r2 = env.CheckPermissionRequest (" user" , false , false , /* scheduled */ true , true , TStatus::DISALLOW_TEMP,
2787+ MakeAction (TAction::SHUTDOWN_HOST, env.GetNodeId (0 ), 60000000 ));
2788+
2789+ // Disable CMS
2790+ NKikimrCms::TCmsConfig config;
2791+ config.SetEnable (false );
2792+ env.SetCmsConfig (config);
2793+
2794+ env.CheckDonePermission (" user" , r1.GetPermissions (0 ).GetId ());
2795+
2796+ // Requests should fail
2797+ env.CheckPermissionRequest (" user" , false , false , true , true , TStatus::ERROR_TEMP,
2798+ MakeAction (TAction::SHUTDOWN_HOST, env.GetNodeId (9 ), 60000000 ));
2799+ env.CheckRequest (" user" , r2.GetRequestId (), true , TStatus::ERROR_TEMP);
2800+
2801+ // Enable CMS back
2802+ config.SetEnable (true );
2803+ env.SetCmsConfig (config);
2804+
2805+ // Requests should be ok
2806+ auto r3 = env.CheckPermissionRequest (" user" , false , false , true , true , TStatus::ALLOW,
2807+ MakeAction (TAction::SHUTDOWN_HOST, env.GetNodeId (9 ), 60000000 ));
2808+ UNIT_ASSERT_VALUES_EQUAL (r3.PermissionsSize (), 1 );
2809+ env.CheckRequest (" user" , r2.GetRequestId (), true , TStatus::ALLOW, 1 );
2810+ }
2811+
2812+ Y_UNIT_TEST (WalleDisableCMS){
2813+ TCmsTestEnv env (16 );
2814+
2815+ env.CheckWalleCreateTask (" task-1" , " reboot" , false , TStatus::ALLOW, env.GetNodeId (0 ));
2816+
2817+ // Scheduled request
2818+ env.CheckWalleCreateTask (" task-2" , " reboot" , false , TStatus::DISALLOW_TEMP, env.GetNodeId (0 ));
2819+
2820+ // Disable CMS
2821+ NKikimrCms::TCmsConfig config;
2822+ config.SetEnable (false );
2823+ env.SetCmsConfig (config);
2824+
2825+ env.CheckWalleRemoveTask (" task-1" );
2826+
2827+ // Requests should fail
2828+ env.CheckWalleCreateTask (" task-3" , " reboot" , false , TStatus::ERROR_TEMP, env.GetNodeId (9 ));
2829+ env.CheckWalleCheckTask (" task-2" , TStatus::ERROR_TEMP);
2830+
2831+ // Enable CMS back
2832+ config.SetEnable (true );
2833+ env.SetCmsConfig (config);
2834+
2835+ // Requests should be ok
2836+ env.CheckWalleCreateTask (" task-3" , " reboot" , false , TStatus::ALLOW, env.GetNodeId (9 ));
2837+ env.CheckWalleCheckTask (" task-2" , TStatus::ALLOW);
27772838 }
27782839}
27792840
0 commit comments