Ejemplo n.º 1
0
    def test_update_head_files_success(self, *mocks):
        heads = ['a', 'b']
        mock_open_con = self.useFixture(
            lib_fixtures.OpenFixture(
                cli._get_contract_head_file_path(self.configs[0]))).mock_open
        mock_open_ex = self.useFixture(
            lib_fixtures.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_no_process_running(self):
     self.process_is_running_mock.return_value = False
     mock_open = self.useFixture(
         lib_fixtures.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.º 3
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(
                lib_fixtures.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.º 4
0
 def test_memoize(self):
     mo = self.useFixture(lib_fixtures.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.º 5
0
 def test_disabled_non_exists(self):
     mo = self.useFixture(lib_fixtures.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.º 6
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:
            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(
                lib_fixtures.OpenFixture(
                    cli._get_contract_head_file_path(fake_config),
                    contract_head + '\n')).mock_open
            mock_open_ex = self.useFixture(
                lib_fixtures.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.º 7
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(
         lib_fixtures.OpenFixture('ha_state', read_return)).mock_open
     self.assertEqual(expected, ri.ha_state)
Ejemplo n.º 8
0
 def _test_cmdline(self, process, expected_cmd):
     self.process_is_running_mock.return_value = True
     mock_open = self.useFixture(
         lib_fixtures.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.º 9
0
 def test_cmdline_process_disappearing(self):
     self.process_is_running_mock.return_value = True
     mock_open = self.useFixture(
         lib_fixtures.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.º 10
0
    def test_is_running(self):
        mock_open = self.useFixture(
            lib_fixtures.OpenFixture('/proc/34/cmdline', 'python')).mock_open
        p = daemon.Pidfile('thefile', 'python')

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

        mock_open.assert_called_once_with('/proc/34/cmdline', 'r')
Ejemplo n.º 11
0
    def test_is_running_uuid_false(self):
        mock_open = self.useFixture(
            lib_fixtures.OpenFixture('/proc/34/cmdline', '{} 1234'.format(
                sys.executable))).mock_open
        p = daemon.Pidfile('thefile', sys.executable, 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.º 12
0
 def test_pid_no_an_int(self):
     self.useFixture(lib_fixtures.OpenFixture('/var/path/uuid.pid', 'foo'))
     manager = ep.ProcessManager(self.conf, 'uuid')
     self.assertIsNone(manager.pid)
Ejemplo n.º 13
0
 def test_pid(self):
     self.useFixture(lib_fixtures.OpenFixture('/var/path/uuid.pid', '5'))
     manager = ep.ProcessManager(self.conf, 'uuid')
     self.assertEqual(manager.pid, 5)
Ejemplo n.º 14
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'),\
                mock.patch(
                    'neutron.agent.linux.ip_lib.'
                    'IpAddrCommand.wait_until_address_ready') as mock_wait:
            cfg_file = os.path.join(
                metadata_driver.HaproxyConfigurator.get_config_path(
                    agent.conf.state_path), "%s.conf" % router_id)
            mock_open = self.useFixture(
                lib_fixtures.OpenFixture(cfg_file)).mock_open
            mock_wait.return_value = True
            agent.metadata_driver.spawn_monitored_metadata_proxy(
                agent.process_monitor,
                router_ns,
                self.METADATA_PORT,
                agent.conf,
                bind_address=self.METADATA_DEFAULT_IP,
                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,
                'host': self.METADATA_DEFAULT_IP,
                'port': self.METADATA_PORT,
                'unix_socket_path': self.METADATA_SOCKET,
                'res_type': 'Router',
                'res_id': router_id,
                'res_type_del': 'Network',
                'pidfile': self.PIDFILE,
                'log_level': 'debug',
                'log_tag': log_tag,
                'bind_v6_line': ''
            }

            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.º 15
0
 def test_disabled(self):
     self.useFixture(lib_fixtures.OpenFixture(self.proc_path, '1'))
     enabled = ipv6_utils.is_enabled_and_bind_by_default()
     self.assertFalse(enabled)