Ejemplo n.º 1
0
 def setUpClass(cls):
     cls.test_db_dir = tempfile.mkdtemp()
     test_db = os.path.join(cls.test_db_dir, 'test-state.db')
     unitdata._KV = cls.kv = unitdata.Storage(test_db)
     cls._log = mock.patch('charmhelpers.core.hookenv.log')
     cls.log = cls._log.start()
     cls._charm_dir = mock.patch('charmhelpers.core.hookenv.charm_dir', lambda: 'charm_dir')
     cls._charm_dir.start()
     if not hasattr(cls, 'assertItemsEqual'):
         cls.assertItemsEqual = cls.assertCountEqual
Ejemplo n.º 2
0
 def setUpClass(cls):
     cls.test_db_dir = tempfile.mkdtemp()
     test_db = os.path.join(cls.test_db_dir, 'test-state.db')
     unitdata._KV = cls.kv = unitdata.Storage(test_db)
     if not hasattr(cls, 'assertItemsEqual'):
         cls.assertItemsEqual = cls.assertCountEqual
Ejemplo n.º 3
0
def mock_unit_db(monkeypatch):
    """Mock the key value store."""
    mock_kv = mock.Mock()
    mock_kv.return_value = unitdata.Storage(path=":memory:")
    monkeypatch.setattr("libwireguard.unitdata.kv", mock_kv)
Ejemplo n.º 4
0
    def setUp(self):
        tests_dir = Path(__file__).parent

        tf = tempfile.NamedTemporaryFile(delete=False)
        tf.close()
        self.test_db = Path(tf.name)
        unitdata._KV = self.kv = unitdata.Storage(str(self.test_db))

        self.log_p = mock.patch('charmhelpers.core.hookenv.log')
        self.log_p.start()

        self.charm_dir = str(tests_dir / 'data')
        self.charm_dir_p = mock.patch('charmhelpers.core.hookenv.charm_dir')
        mcharm_dir = self.charm_dir_p.start()
        mcharm_dir.side_effect = lambda: self.charm_dir

        self.hook_name = 'upgrade-charm'
        self.hook_name_p = mock.patch('charmhelpers.core.hookenv.hook_name')
        mhook_name = self.hook_name_p.start()
        mhook_name.side_effect = lambda: self.hook_name

        self.local_unit_p = mock.patch('charmhelpers.core.hookenv.local_unit',
                                       mock.MagicMock(return_value='local/0'))
        self.local_unit_p.start()

        self.app_name_p = mock.patch(
            'charmhelpers.core.hookenv.application_name',
            mock.MagicMock(return_value='local'))
        self.app_name_p.start()

        self.remote_unit = None
        self.remote_unit_p = mock.patch(
            'charmhelpers.core.hookenv.remote_unit')
        mremote_unit = self.remote_unit_p.start()
        mremote_unit.side_effect = lambda: self.remote_unit

        self.relation_id = None
        self.relation_id_p = mock.patch(
            'charmhelpers.core.hookenv.relation_id')
        mrelation_id = self.relation_id_p.start()
        mrelation_id.side_effect = lambda: self.relation_id

        self.relations = {
            'test-endpoint': [
                {
                    'local': {
                        'app-key': 'value'
                    },
                    'local/0': {
                        'key': 'value'
                    },
                    'unit': {
                        'simple': 'value',
                        'complex': '[1, 2]'
                    },
                    'unit/0': {
                        'foo': 'yes'
                    },
                    'unit/1': {},
                },
                {
                    'local': {},
                    'local/0': {},
                    'unit': {},
                    'unit/0': {
                        'bar': '[1, 2]'
                    },
                    'unit/1': {
                        'foo': 'no'
                    },
                },
            ],
        }

        def _rel(rid):
            rn, ri = rid.split(':')
            return self.relations[rn][int(ri)]

        def _rel_get(attribute=None, unit=None, rid=None, app=None):
            data = _rel(rid)[unit or app]
            if attribute is not None:
                return data[attribute]
            else:
                return data

        self.rel_ids_p = mock.patch('charmhelpers.core.hookenv.relation_ids')
        rel_ids_m = self.rel_ids_p.start()
        rel_ids_m.side_effect = lambda endpoint: [
            '{}:{}'.format(endpoint, i)
            for i in range(len(self.relations.get(endpoint, [])))
        ]
        self.rel_units_p = mock.patch(
            'charmhelpers.core.hookenv.related_units')
        rel_units_m = self.rel_units_p.start()
        rel_units_m.side_effect = lambda rid: [
            key for key in _rel(rid).keys()
            if (not key.startswith('local') and '/' in key and  # exclude apps
                not _rel(rid)[key].get('departed'))
        ]
        self.rel_get_p = mock.patch('charmhelpers.core.hookenv.relation_get')
        rel_get_m = self.rel_get_p.start()
        rel_get_m.side_effect = _rel_get

        self.rel_set_p = mock.patch('charmhelpers.core.hookenv.relation_set')
        self.relation_set = self.rel_set_p.start()

        self.data_changed_p = mock.patch(
            'charms.reactive.endpoints.data_changed')
        self.data_changed = self.data_changed_p.start()

        self.atexit_p = mock.patch('charmhelpers.core.hookenv.atexit')
        self.atexit = self.atexit_p.start()

        self.sysm_p = mock.patch.dict(sys.modules)
        self.sysm_p.start()

        self.kv.set('reactive.endpoints.departed.test-endpoint', [
            {
                'relation': 'test-endpoint:1',
                'unit_name': 'unit/3',
                'data': {
                    'departed': 'true'
                },
            },
            {
                'relation': 'test-endpoint:2',
                'unit_name': 'unit/4',
                'data': {
                    'departed': 'true'
                },
            },
        ])

        discover()
Ejemplo n.º 5
0
    def setUp(self):
        tests_dir = Path(__file__).parent

        tf = tempfile.NamedTemporaryFile(delete=False)
        tf.close()
        self.test_db = Path(tf.name)
        unitdata._KV = self.kv = unitdata.Storage(str(self.test_db))

        self.log_p = mock.patch('charmhelpers.core.hookenv.log')
        self.log_p.start()

        self.charm_dir = str(tests_dir / 'data')
        self.charm_dir_p = mock.patch('charmhelpers.core.hookenv.charm_dir')
        mcharm_dir = self.charm_dir_p.start()
        mcharm_dir.side_effect = lambda: self.charm_dir

        self.hook_name = 'upgrade-charm'
        self.hook_name_p = mock.patch('charmhelpers.core.hookenv.hook_name')
        mhook_name = self.hook_name_p.start()
        mhook_name.side_effect = lambda: self.hook_name

        self.local_unit_p = mock.patch('charmhelpers.core.hookenv.local_unit',
                                       mock.MagicMock(return_value='local/0'))
        self.local_unit_p.start()

        self.relations = {
            'test-endpoint': [
                {
                    'local/0': {
                        'key': 'value'
                    },
                    'unit/0': {
                        'foo': 'yes'
                    },
                    'unit/1': {},
                },
                {
                    'local/0': {},
                    'unit/0': {
                        'bar': '[1, 2]'
                    },
                    'unit/1': {
                        'foo': 'no'
                    },
                },
            ],
        }

        def _rel(rid):
            rn, ri = rid.split(':')
            return self.relations[rn][int(ri)]

        self.rel_ids_p = mock.patch('charmhelpers.core.hookenv.relation_ids')
        rel_ids_m = self.rel_ids_p.start()
        rel_ids_m.side_effect = lambda endpoint: [
            '{}:{}'.format(endpoint, i)
            for i in range(len(self.relations.get(endpoint, [])))
        ]
        self.rel_units_p = mock.patch(
            'charmhelpers.core.hookenv.related_units')
        rel_units_m = self.rel_units_p.start()
        rel_units_m.side_effect = lambda rid: [
            key for key in _rel(rid).keys() if not key.startswith('local')
        ]
        self.rel_get_p = mock.patch('charmhelpers.core.hookenv.relation_get')
        rel_get_m = self.rel_get_p.start()
        rel_get_m.side_effect = lambda unit, rid: _rel(rid)[unit]

        self.rel_set_p = mock.patch('charmhelpers.core.hookenv.relation_set')
        self.relation_set = self.rel_set_p.start()

        self.data_changed_p = mock.patch(
            'charms.reactive.endpoints.data_changed')
        self.data_changed = self.data_changed_p.start()

        self.atexit_p = mock.patch('charmhelpers.core.hookenv.atexit')
        self.atexit = self.atexit_p.start()

        self.sysm_p = mock.patch.dict(sys.modules)
        self.sysm_p.start()

        discover()