def test_memory_decreasing(self, param_name): BIG_MEMORY = 1024 SMALL_MEMORY = 512 self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: BIG_MEMORY}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: SMALL_MEMORY, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) self.assertEqual(len(self.instance.get_calls('box_cfg')), 0)
def test_memtx_memory_increasing_fails(self, param_name): SMALL_MEMORY = 512 INSTANCE_BIG_MEMORY = 1024 APP_BIG_MEMORY = 2048 self.instance.set_fail_on('increase_memory_size') # increased only in instance config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: SMALL_MEMORY}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: INSTANCE_BIG_MEMORY, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: INSTANCE_BIG_MEMORY}, calls) # increased only in app config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: SMALL_MEMORY}) res = call_manage_instance( control_sock=self.console_sock, cartridge_defaults={ param_name: APP_BIG_MEMORY, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: APP_BIG_MEMORY}, calls) # increased in both app and instance config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: SMALL_MEMORY}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: INSTANCE_BIG_MEMORY, }, cartridge_defaults={ param_name: APP_BIG_MEMORY, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: INSTANCE_BIG_MEMORY}, calls)
def test_instance_not_started(self): # console sock doesn't exists self.instance.clear_calls('box_cfg') self.instance.remove_file(self.console_sock) res = call_manage_instance( control_sock=self.console_sock ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) self.assertEqual(len(self.instance.get_calls('box_cfg')), 0) # cennot connect to console sock self.instance.clear_calls('box_cfg') bad_socket_path = 'bad-socket-path' self.instance.write_file(bad_socket_path) res = call_manage_instance( control_sock=bad_socket_path ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) self.assertEqual(len(self.instance.get_calls('box_cfg')), 0) # memtx_memory is nil self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, memtx_memory=None) res = call_manage_instance( control_sock=self.console_sock ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) self.assertEqual(len(self.instance.get_calls('box_cfg')), 0)
def test_non_dynamic_params(self): param_name = 'advertise_uri' old_value = 'localhost:3301' new_instance_value = 'localhost:3311' new_app_value = 'localhost:3322' # changed only in instance config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: new_instance_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 0) # changed only in app config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, cartridge_defaults={ param_name: new_app_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 0) # changed in both app and instance config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: new_instance_value, }, cartridge_defaults={ param_name: new_app_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 0)
def test_memory_size_changed(self, memory_param_name): current_memory_size = 100 new_memory_size_instance = 200 new_memory_size_app = 300 self.instance.set_app_config({memory_param_name: current_memory_size}) self.instance.set_instance_config( {memory_param_name: current_memory_size}) set_box_cfg(self.instance, **{memory_param_name: current_memory_size}) # nothing changed res = call_needs_restart( control_sock=self.console_sock, config={memory_param_name: current_memory_size}, cartridge_defaults={memory_param_name: current_memory_size}) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # memory size changed only in cartridge_defaults res = call_needs_restart( control_sock=self.console_sock, config={memory_param_name: current_memory_size}, cartridge_defaults={memory_param_name: new_memory_size_instance}) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # memory size changed both in cartridge_defaults and config res = call_needs_restart( control_sock=self.console_sock, config={memory_param_name: new_memory_size_instance}, cartridge_defaults={memory_param_name: new_memory_size_app}) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) # memory size changed both in cartridge_defaults and config # memory size on instance is equal to value from cartridge_defaults set_box_cfg(self.instance, **{memory_param_name: new_memory_size_app}) res = call_needs_restart( control_sock=self.console_sock, config={memory_param_name: new_memory_size_instance}, cartridge_defaults={memory_param_name: new_memory_size_app}) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) # memory size changed both in cartridge_defaults and config # memory size on instance is equal to value from config set_box_cfg(self.instance, **{memory_param_name: new_memory_size_instance}) res = call_needs_restart( control_sock=self.console_sock, config={memory_param_name: new_memory_size_instance}, cartridge_defaults={memory_param_name: new_memory_size_app}) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed)
def template_test_instance_config_changed(self, stateboard): param_name = 'param' param_current_value = 'current-value' param_new_value = 'new-value' memtx_memory_param_name = 'memtx_memory' memtx_memory_current_value = 100 memtx_memory_new_value = 200 self.instance.set_instance_config({ param_name: param_current_value, memtx_memory_param_name: memtx_memory_current_value }) set_box_cfg(self.instance, memtx_memory=memtx_memory_current_value) # nothing changed res = call_needs_restart( control_sock=self.console_sock, config={ param_name: param_current_value, memtx_memory_param_name: memtx_memory_current_value }, stateboard=stateboard, ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # param changed, memtx_memory not res = call_needs_restart( control_sock=self.console_sock, config={ param_name: param_new_value, memtx_memory_param_name: memtx_memory_current_value }, stateboard=stateboard ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) # param isn't changed # memtx_memory is changed in config # but isn't changed on instance set_box_cfg(self.instance, memtx_memory=memtx_memory_current_value) res = call_needs_restart( control_sock=self.console_sock, config={ param_name: param_current_value, memtx_memory_param_name: memtx_memory_new_value }, stateboard=stateboard ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) # param isn't changed # memtx_memory is changed in config # and changed on instance set_box_cfg(self.instance, memtx_memory=memtx_memory_new_value) res = call_needs_restart( control_sock=self.console_sock, config={ param_name: param_current_value, memtx_memory_param_name: memtx_memory_new_value }, stateboard=stateboard ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # param is changed # memtx_memory is changed in config # and changed on instance set_box_cfg(self.instance, memtx_memory=memtx_memory_new_value) res = call_needs_restart( control_sock=self.console_sock, config={ param_name: param_new_value, memtx_memory_param_name: memtx_memory_new_value }, stateboard=stateboard ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed)
def test_both_app_and_instance_memtx_memory_changed(self): memtx_memory_param_name = 'memtx_memory' memtx_memory_current_value = 100 memtx_memory_new_instance_value = 200 memtx_memory_new_app_value = 300 self.instance.set_app_config({ memtx_memory_param_name: memtx_memory_current_value }) self.instance.set_instance_config({ memtx_memory_param_name: memtx_memory_current_value }) set_box_cfg(self.instance, memtx_memory=memtx_memory_current_value) # nothing changed res = call_needs_restart( control_sock=self.console_sock, config={ memtx_memory_param_name: memtx_memory_current_value }, cartridge_defaults={ memtx_memory_param_name: memtx_memory_current_value } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # memtx_memory changed only in cartridge_defaults res = call_needs_restart( control_sock=self.console_sock, config={ memtx_memory_param_name: memtx_memory_current_value }, cartridge_defaults={ memtx_memory_param_name: memtx_memory_new_instance_value } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # memtx_memory changed both in cartridge_defaults and config res = call_needs_restart( control_sock=self.console_sock, config={ memtx_memory_param_name: memtx_memory_new_instance_value }, cartridge_defaults={ memtx_memory_param_name: memtx_memory_new_app_value } ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) # memtx_memory changed both in cartridge_defaults and config # memtx_memory on instance is equal to value from cartridge_defaults set_box_cfg(self.instance, memtx_memory=memtx_memory_new_app_value) res = call_needs_restart( control_sock=self.console_sock, config={ memtx_memory_param_name: memtx_memory_new_instance_value }, cartridge_defaults={ memtx_memory_param_name: memtx_memory_new_app_value } ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) # memtx_memory changed both in cartridge_defaults and config # memtx_memory on instance is equal to value from config set_box_cfg(self.instance, memtx_memory=memtx_memory_new_instance_value) res = call_needs_restart( control_sock=self.console_sock, config={ memtx_memory_param_name: memtx_memory_new_instance_value }, cartridge_defaults={ memtx_memory_param_name: memtx_memory_new_app_value } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed)
def test_app_config_changed(self, instance_type, memory_param_name): param_name = 'param' param_current_value = 'current-value' param_new_value = 'new-value' current_memory_size = 100 memtx_memory_new_value = 200 stateboard = instance_type == 'stateboard' self.instance.set_app_config({ param_name: param_current_value, memory_param_name: current_memory_size }) set_box_cfg(self.instance, **{memory_param_name: current_memory_size}) # nothing changed res = call_needs_restart(control_sock=self.console_sock, cartridge_defaults={ param_name: param_current_value, memory_param_name: current_memory_size }, stateboard=stateboard) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # param changed, memory size not res = call_needs_restart(control_sock=self.console_sock, cartridge_defaults={ param_name: param_new_value, memory_param_name: current_memory_size }, stateboard=stateboard) self.assertTrue(res.success, msg=res.msg) if not stateboard: self.assertTrue(res.changed) else: self.assertFalse(res.changed) # param isn't changed # memory size is changed in config # but isn't changed on instance set_box_cfg(self.instance, **{memory_param_name: current_memory_size}) res = call_needs_restart(control_sock=self.console_sock, cartridge_defaults={ param_name: param_current_value, memory_param_name: memtx_memory_new_value }, stateboard=stateboard) self.assertTrue(res.success, msg=res.msg) if not stateboard: self.assertTrue(res.changed) else: self.assertFalse(res.changed) # param isn't changed # memory size is changed in config # and changed on instance set_box_cfg(self.instance, **{memory_param_name: memtx_memory_new_value}) res = call_needs_restart(control_sock=self.console_sock, cartridge_defaults={ param_name: param_current_value, memory_param_name: memtx_memory_new_value }, stateboard=stateboard) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) # param is changed # memory size is changed in config # and changed on instance set_box_cfg(self.instance, **{memory_param_name: memtx_memory_new_value}) res = call_needs_restart(control_sock=self.console_sock, cartridge_defaults={ param_name: param_new_value, memory_param_name: memtx_memory_new_value }, stateboard=stateboard) self.assertTrue(res.success, msg=res.msg) if not stateboard: self.assertTrue(res.changed) else: self.assertFalse(res.changed)
def test_dynamic_params(self, _, param_name, old_value, new_instance_value, new_app_value): # changed only in instance config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: new_instance_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: new_instance_value}, calls) # changed only in app config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, cartridge_defaults={ param_name: new_app_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: new_app_value}, calls) # changed in both app and instance config self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: new_instance_value, }, cartridge_defaults={ param_name: new_app_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertTrue(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: new_instance_value}, calls) # specified in instance config, isn't changed self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, config={ param_name: old_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: old_value}, calls) # specified in app config, isn't changed self.instance.clear_calls('box_cfg') set_box_cfg(self.instance, **{param_name: old_value}) res = call_manage_instance( control_sock=self.console_sock, cartridge_defaults={ param_name: old_value, } ) self.assertTrue(res.success, msg=res.msg) self.assertFalse(res.changed) calls = self.instance.get_calls('box_cfg') self.assertEqual(len(calls), 1) self.assertIn({param_name: old_value}, calls)