Esempio n. 1
0
 def test_get_set_unset(self):
     kv = Storage(':memory:')
     kv.hook_scope('test')
     kv.set('hello', 'saucy')
     kv.set('hello', 'world')
     self.assertEqual(kv.get('hello'), 'world')
     kv.flush()
     kv.unset('hello')
     self.assertEqual(kv.get('hello'), None)
     kv.flush(False)
     self.assertEqual(kv.get('hello'), 'world')
Esempio n. 2
0
    def test_init_kv_multiple(self):
        with tempfile.NamedTemporaryFile() as fh:
            kv = Storage(fh.name)
            with kv.hook_scope('xyz'):
                kv.set('x', 1)
            kv.close()

            kv = Storage(fh.name)
            with kv.hook_scope('abc'):
                self.assertEqual(kv.get('x'), 1)
            kv.close()
Esempio n. 3
0
 def test_record(self):
     kv = Storage(':memory:')
     kv.set('config', {'x': 1, 'b': False})
     config = kv.get('config', record=True)
     self.assertEqual(config.b, False)
     self.assertEqual(config.x, 1)
     self.assertEqual(kv.set('config.x', 1), 1)
     try:
         config.z
     except AttributeError:
         pass
     else:
         self.fail('attribute error should fire on nonexistant')
Esempio n. 4
0
    def test_unset(self):
        kv = Storage(':memory:')
        with kv.hook_scope('install'):
            kv.set('a', True)
        with kv.hook_scope('start'):
            kv.set('a', False)
        with kv.hook_scope('config-changed'):
            kv.unset('a')
        history = [h[:-1] for h in kv.gethistory('a')]

        self.assertEqual(history, [(1, 'a', 'true', 'install'),
                                   (2, 'a', 'false', 'start'),
                                   (3, 'a', '"DELETED"', "config-changed")])
Esempio n. 5
0
    def test_hook_scope(self):
        kv = Storage(':memory:')
        try:
            with kv.hook_scope('install') as rev:
                self.assertEqual(rev, 1)
                kv.set('a', 1)
                raise RuntimeError('x')
        except RuntimeError:
            self.assertEqual(kv.get('a'), None)

        with kv.hook_scope('config-changed') as rev:
            self.assertEqual(rev, 1)
            kv.set('a', 1)
        self.assertEqual(kv.get('a'), 1)

        kv.revision = None

        with kv.hook_scope('start') as rev:
            self.assertEqual(rev, 2)
            kv.set('a', False)
            kv.set('a', True)
        self.assertEqual(kv.get('a'), True)

        # History doesn't decode values by default
        history = [h[:-1] for h in kv.gethistory('a')]
        self.assertEqual(
            history,
            [(1, 'a', '1', 'config-changed'),
             (2, 'a', 'true', 'start')])

        history = [h[:-1] for h in kv.gethistory('a', deserialize=True)]
        self.assertEqual(
            history,
            [(1, 'a', 1, 'config-changed'),
             (2, 'a', True, 'start')])
Esempio n. 6
0
 def test_keyrange(self):
     kv = Storage(':memory:')
     kv.set('docker.net_mtu', 1)
     kv.set('docker.net_nack', True)
     kv.set('docker.net_type', 'vxlan')
     self.assertEqual(
         kv.getrange('docker'),
         {'docker.net_mtu': 1, 'docker.net_type': 'vxlan',
          'docker.net_nack': True})
     self.assertEqual(
         kv.getrange('docker.', True),
         {'net_mtu': 1, 'net_type': 'vxlan', 'net_nack': True})
Esempio n. 7
0
 def test_multi_value_set_skips(self):
     # pure coverage test
     kv = Storage(':memory:')
     kv.set('x', 1)
     self.assertEqual(kv.set('x', 1), 1)