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)
Пример #5
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)
Пример #8
0
    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)