Ejemplo n.º 1
0
    def test_update_head_files_success(self, *mocks):
        heads = ['a', 'b']
        mock_open_con = self.useFixture(
            tools.OpenFixture(cli._get_contract_head_file_path(
                self.configs[0]))).mock_open
        mock_open_ex = self.useFixture(
            tools.OpenFixture(cli._get_expand_head_file_path(
                self.configs[0]))).mock_open
        with mock.patch('alembic.script.ScriptDirectory.from_config') as fc:
            fc.return_value.get_heads.return_value = heads
            revs = {
                heads[0]: FakeRevision(labels=cli.CONTRACT_BRANCH),
                heads[1]: FakeRevision(labels=cli.EXPAND_BRANCH)
            }
            fc.return_value.get_revision.side_effect = revs.__getitem__
            cli.update_head_files(self.configs[0])
            mock_open_con.return_value.write.assert_called_with(heads[0] +
                                                                '\n')
            mock_open_ex.return_value.write.assert_called_with(heads[1] + '\n')

            old_head_file = cli._get_head_file_path(self.configs[0])
            old_heads_file = cli._get_heads_file_path(self.configs[0])
            delete_if_exists = mocks[0]
            self.assertIn(mock.call(old_head_file),
                          delete_if_exists.call_args_list)
            self.assertIn(mock.call(old_heads_file),
                          delete_if_exists.call_args_list)
Ejemplo n.º 2
0
    def _test_validate_head_files_helper(self,
                                         heads,
                                         contract_head='',
                                         expand_head=''):
        fake_config = self.configs[0]
        head_files_not_exist = (contract_head == expand_head == '')
        with mock.patch('alembic.script.ScriptDirectory.from_config') as fc,\
                mock.patch('os.path.exists') as os_mock,\
                mock.patch.object(cli, '_use_separate_migration_branches',
                                  return_value=True):
            if head_files_not_exist:
                os_mock.return_value = False
            else:
                os_mock.return_value = True

            fc.return_value.get_heads.return_value = heads

            revs = {
                heads[0]: FakeRevision(labels=cli.CONTRACT_BRANCH),
                heads[1]: FakeRevision(labels=cli.EXPAND_BRANCH)
            }
            fc.return_value.get_revision.side_effect = revs.__getitem__
            mock_open_con = self.useFixture(
                tools.OpenFixture(
                    cli._get_contract_head_file_path(fake_config),
                    contract_head + '\n')).mock_open
            mock_open_ex = self.useFixture(
                tools.OpenFixture(cli._get_expand_head_file_path(fake_config),
                                  expand_head + '\n')).mock_open

            if contract_head in heads and expand_head in heads:
                cli.validate_head_files(fake_config)
            elif head_files_not_exist:
                cli.validate_head_files(fake_config)
                self.assertTrue(self.mock_alembic_warn.called)
            else:
                self.assertRaises(SystemExit, cli.validate_head_files,
                                  fake_config)
                self.assertTrue(self.mock_alembic_err.called)

            if contract_head in heads and expand_head in heads:
                mock_open_ex.assert_called_with(
                    cli._get_expand_head_file_path(fake_config))
                mock_open_con.assert_called_with(
                    cli._get_contract_head_file_path(fake_config))

            if not head_files_not_exist:
                fc.assert_called_once_with(fake_config)
Ejemplo n.º 3
0
    def _test_validate_head_file_helper(self,
                                        heads,
                                        file_heads=None,
                                        branchless=False):
        if file_heads is None:
            file_heads = []
        fake_config = self.configs[0]
        mock_open = self.useFixture(
            tools.OpenFixture(cli._get_head_file_path(fake_config),
                              '\n'.join(file_heads))).mock_open
        with mock.patch('alembic.script.ScriptDirectory.from_config') as fc,\
                mock.patch.object(cli, '_use_separate_migration_branches',
                                  return_value=not branchless):
            fc.return_value.get_heads.return_value = heads

            if not branchless or all(head in file_heads for head in heads):
                cli.validate_head_file(fake_config)
            else:
                self.assertRaises(SystemExit, cli.validate_head_file,
                                  fake_config)
                self.assertTrue(self.mock_alembic_err.called)

            if branchless:
                mock_open.assert_called_with(
                    cli._get_head_file_path(fake_config))
                fc.assert_called_once_with(fake_config)
            else:
                self.assertFalse(mock_open.called)
                self.assertFalse(fc.called)
Ejemplo n.º 4
0
 def test_no_process_running(self):
     self.process_is_running_mock.return_value = False
     mock_open = self.useFixture(
         tools.OpenFixture('/proc/%s/cmdline' % self.pid)).mock_open
     cmdline = utils.get_cmdline_from_pid(self.pid)
     mock_open.assert_not_called()
     self.assertEqual([], cmdline)
Ejemplo n.º 5
0
    def test_spawn_metadata_proxy(self):
        router_id = _uuid()
        router_ns = 'qrouter-%s' % router_id
        ip_class_path = 'neutron.agent.linux.ip_lib.IPWrapper'

        cfg.CONF.set_override('metadata_proxy_user', self.EUNAME)
        cfg.CONF.set_override('metadata_proxy_group', self.EGNAME)
        cfg.CONF.set_override('metadata_proxy_socket', self.METADATA_SOCKET)
        cfg.CONF.set_override('debug', True)

        agent = l3_agent.L3NATAgent('localhost')
        with mock.patch(ip_class_path) as ip_mock,\
                mock.patch(
                    'neutron.agent.linux.external_process.'
                    'ProcessManager.get_pid_file_name',
                    return_value=self.PIDFILE),\
                mock.patch('pwd.getpwnam',
                           return_value=test_utils.FakeUser(self.EUNAME)),\
                mock.patch('grp.getgrnam',
                           return_value=test_utils.FakeGroup(self.EGNAME)),\
                mock.patch('os.makedirs'):
            cfg_file = os.path.join(
                metadata_driver.HaproxyConfigurator.get_config_path(
                    agent.conf.state_path), "%s.conf" % router_id)
            mock_open = self.useFixture(tools.OpenFixture(cfg_file)).mock_open
            agent.metadata_driver.spawn_monitored_metadata_proxy(
                agent.process_monitor,
                router_ns,
                self.METADATA_PORT,
                agent.conf,
                router_id=router_id)

            netns_execute_args = ['haproxy', '-f', cfg_file]

            log_tag = ("haproxy-" + metadata_driver.METADATA_SERVICE_NAME +
                       "-" + router_id)
            cfg_contents = metadata_driver._HAPROXY_CONFIG_TEMPLATE % {
                'user': self.EUNAME,
                'group': self.EGNAME,
                'port': self.METADATA_PORT,
                'unix_socket_path': self.METADATA_SOCKET,
                'res_type': 'Router',
                'res_id': router_id,
                'pidfile': self.PIDFILE,
                'log_level': 'debug',
                'log_tag': log_tag
            }

            mock_open.assert_has_calls(
                [mock.call(cfg_file, 'w'),
                 mock.call().write(cfg_contents)],
                any_order=True)

            ip_mock.assert_has_calls([
                mock.call(namespace=router_ns),
                mock.call().netns.execute(netns_execute_args,
                                          addl_env=None,
                                          run_as_root=True)
            ])
Ejemplo n.º 6
0
 def _test_ha_state(self, read_return, expected):
     ri = self._create_router(mock.MagicMock())
     ri.keepalived_manager = mock.Mock()
     ri.keepalived_manager.get_full_config_file_path.return_value = (
         'ha_state')
     self.mock_open = self.useFixture(
         tools.OpenFixture('ha_state', read_return)).mock_open
     self.assertEqual(expected, ri.ha_state)
Ejemplo n.º 7
0
 def _test_cmdline(self, process, expected_cmd):
     self.process_is_running_mock.return_value = True
     mock_open = self.useFixture(
         tools.OpenFixture('/proc/%s/cmdline' % self.pid, process)
     ).mock_open
     cmdline = utils.get_cmdline_from_pid(self.pid)
     mock_open.assert_called_once_with('/proc/%s/cmdline' % self.pid, 'r')
     self.assertEqual(expected_cmd, cmdline)
Ejemplo n.º 8
0
    def test_spawn_metadata_proxy(self):
        datapath_id = _uuid()
        metadata_ns = metadata_agent.NS_PREFIX + datapath_id
        ip_class_path = 'neutron.agent.linux.ip_lib.IPWrapper'

        cfg.CONF.set_override('metadata_proxy_user', self.EUNAME)
        cfg.CONF.set_override('metadata_proxy_group', self.EGNAME)
        cfg.CONF.set_override('metadata_proxy_socket', self.METADATA_SOCKET)
        cfg.CONF.set_override('debug', True)

        agent = metadata_agent.MetadataAgent(cfg.CONF)
        with mock.patch(ip_class_path) as ip_mock,\
                mock.patch(
                    'neutron.agent.linux.external_process.'
                    'ProcessManager.get_pid_file_name',
                    return_value=self.PIDFILE),\
                mock.patch('pwd.getpwnam',
                           return_value=test_utils.FakeUser(self.EUNAME)),\
                mock.patch('grp.getgrnam',
                           return_value=test_utils.FakeGroup(self.EGNAME)),\
                mock.patch('os.makedirs'):
            cfg_file = os.path.join(
                metadata_driver.HaproxyConfigurator.get_config_path(
                    cfg.CONF.state_path), "%s.conf" % datapath_id)
            mock_open = self.useFixture(tools.OpenFixture(cfg_file)).mock_open
            metadata_driver.MetadataDriver.spawn_monitored_metadata_proxy(
                agent._process_monitor,
                metadata_ns,
                self.METADATA_PORT,
                cfg.CONF,
                bind_address=self.METADATA_DEFAULT_IP,
                network_id=datapath_id)

            netns_execute_args = ['haproxy', '-f', cfg_file]

            cfg_contents = metadata_driver._HAPROXY_CONFIG_TEMPLATE % {
                'user': self.EUNAME,
                'group': self.EGNAME,
                'host': self.METADATA_DEFAULT_IP,
                'port': self.METADATA_PORT,
                'unix_socket_path': self.METADATA_SOCKET,
                'res_type': 'Network',
                'res_id': datapath_id,
                'pidfile': self.PIDFILE,
                'log_level': 'debug'
            }

            mock_open.assert_has_calls(
                [mock.call(cfg_file, 'w'),
                 mock.call().write(cfg_contents)],
                any_order=True)

            ip_mock.assert_has_calls([
                mock.call(namespace=metadata_ns),
                mock.call().netns.execute(netns_execute_args,
                                          addl_env=None,
                                          run_as_root=True)
            ])
Ejemplo n.º 9
0
 def test_update_head_file_success(self):
     head = ['b']
     mock_open = self.useFixture(
         tools.OpenFixture(cli._get_head_file_path(
             self.configs[0]))).mock_open
     with mock.patch('alembic.script.ScriptDirectory.from_config') as fc:
         fc.return_value.get_heads.return_value = head
         cli.update_head_file(self.configs[0])
         mock_open.return_value.write.assert_called_with('\n'.join(head))
Ejemplo n.º 10
0
 def test_cmdline(self):
     mock_open = self.useFixture(
         tools.OpenFixture('/proc/4/cmdline',
                           TEST_CMDLINE % 'uuid')).mock_open
     with mock.patch.object(ep.ProcessManager, 'pid') as pid:
         pid.__get__ = mock.Mock(return_value=4)
         manager = ep.ProcessManager(self.conf, 'uuid')
         self.assertEqual(TEST_CMDLINE % 'uuid', manager.cmdline)
     mock_open.assert_called_once_with('/proc/4/cmdline', 'r')
Ejemplo n.º 11
0
 def test_cmdline_process_disappearing(self):
     self.process_is_running_mock.return_value = True
     mock_open = self.useFixture(
         tools.OpenFixture('/proc/%s/cmdline' % self.pid, 'process')
     ).mock_open
     mock_open.side_effect = IOError()
     cmdline = utils.get_cmdline_from_pid(self.pid)
     mock_open.assert_called_once_with('/proc/%s/cmdline' % self.pid, 'r')
     self.assertEqual([], cmdline)
Ejemplo n.º 12
0
    def test_is_running_uuid_false(self):
        mock_open = self.useFixture(
            tools.OpenFixture('/proc/34/cmdline', 'python 1234')).mock_open
        p = daemon.Pidfile('thefile', 'python', uuid='6789')

        with mock.patch.object(p, 'read') as read:
            read.return_value = 34
            self.assertFalse(p.is_running())

        mock_open.assert_called_once_with('/proc/34/cmdline', 'r')
Ejemplo n.º 13
0
    def test_active_cmd_mismatch(self):
        mock_open = self.useFixture(
            tools.OpenFixture('/proc/4/cmdline',
                              'python foo --router_id=anotherid')).mock_open
        with mock.patch.object(ep.ProcessManager, 'pid') as pid:
            pid.__get__ = mock.Mock(return_value=4)
            manager = ep.ProcessManager(self.conf, 'uuid')
            self.assertFalse(manager.active)

        mock_open.assert_called_once_with('/proc/4/cmdline', 'r')
Ejemplo n.º 14
0
 def test_memoize(self):
     mo = self.useFixture(tools.OpenFixture(self.proc_path, '0')).mock_open
     ipv6_utils.is_enabled_and_bind_by_default()
     enabled = ipv6_utils.is_enabled_and_bind_by_default()
     self.assertTrue(enabled)
     mo.assert_called_once_with(self.proc_path, 'r')
Ejemplo n.º 15
0
 def test_disabled_non_exists(self):
     mo = self.useFixture(tools.OpenFixture(self.proc_path, '1')).mock_open
     self.mock_exists.return_value = False
     enabled = ipv6_utils.is_enabled_and_bind_by_default()
     self.assertFalse(enabled)
     self.assertFalse(mo.called)
Ejemplo n.º 16
0
 def test_disabled(self):
     self.useFixture(tools.OpenFixture(self.proc_path, '1'))
     enabled = ipv6_utils.is_enabled_and_bind_by_default()
     self.assertFalse(enabled)
Ejemplo n.º 17
0
 def test_pid_no_an_int(self):
     self.useFixture(tools.OpenFixture('/var/path/uuid.pid', 'foo'))
     manager = ep.ProcessManager(self.conf, 'uuid')
     self.assertIsNone(manager.pid)
Ejemplo n.º 18
0
 def test_pid(self):
     self.useFixture(tools.OpenFixture('/var/path/uuid.pid', '5'))
     manager = ep.ProcessManager(self.conf, 'uuid')
     self.assertEqual(manager.pid, 5)
Ejemplo n.º 19
0
 def test_enabled(self):
     self.useFixture(tools.OpenFixture(self.proc_path, '0'))
     enabled = ipv6_utils.is_enabled()
     self.assertTrue(enabled)