Example #1
0
class TestPersister:
    def _prepare_mocks(self):
        self.open_mock = Mock()
        self.file_mock = Mock()
        self.file_mock.read.return_value = '{"a":"b","x":{"k0":"v0"}}'

        self.file_mock1 = Mock()
        self.file_mock1.read.return_value = '{"c":"d","x":{"k1":"v1"}}'

        self.export_file_mock = Mock()

        self.open_mock.side_effect = self._side_effect


    def _side_effect(self, arg, mode=None):
        if arg == '/tmp/registry.cfg':
            return self.file_mock
        if arg == '/tmp/registry1.cfg':
            return self.file_mock1
        if arg == '/tmp/registry_export.cfg' or 'output.cfg':
            return self.export_file_mock
        if arg == '/tmp/notexist.cfg':
            raise Exception('not exist')

    def setUp(self):
        self._prepare_mocks()
        self.patcher_open = patch('__builtin__.open', self.open_mock)
        self.patcher_open.start()
        self.p = Persister(['load0.cfg','load1.cfg'], 'output.cfg')

    def tearDown(self):
        self.patcher_open.stop()

    def test_load_from_file(self):
        self.p.load_file('/tmp/registry.cfg')
        assert self.p._Persister__registry.get('a') == 'b'
        assert self.file_mock.close.called

    def test_load_from_not_existed_file(self):
        self.p.load_file('/tmp/notexist.cfg')
        assert not self.p._Persister__registry.get_values()[1]

    def test_load_from_multiple_files(self):
        self.p.load_file('/tmp/registry.cfg')
        self.p.load_file('/tmp/registry1.cfg')
        assert self.p._Persister__registry.get('a') == 'b'
        assert self.p._Persister__registry.get('c') == 'd'
        assert self.p._Persister__registry.get('x')['k0'] == 'v0'
        assert self.p._Persister__registry.get('x')['k1'] == 'v1'

    def test_export_to_file(self):
        self.p._Persister__registry.set('a','b')
        self.p.export('/tmp/registry_export.cfg')
        assert self.export_file_mock.write.call_args == call(json.dumps({'a':'b'},indent=4))
        assert self.export_file_mock.close.called

    def test_export_defaults_to_output_file(self):
        self.p.export()
        assert self.open_mock.call_args == call('output.cfg','w')

    def test_loads_cfg_on_init(self):
        assert self.open_mock.call_args_list == [call('load0.cfg'), call('load1.cfg')]

    def test_set_registry(self):
        self.p.set_registry_values({'x':'y'})
        assert self.p._Persister__registry.get('x') == 'y'

    def test_get_values(self):
        assert self.p.get_values()
Example #2
0
#
# Copyright (c) Innotim Yazilim Telekomunikasyon ve Danismanlik Ticaret LTD. STI.
# All rights reserved.
#
import time
from src.persister import Persister
from src.registry_server import RegistryServer

CONFIG_FILE = 'defaults.cfg'

if __name__ == "__main__":
    persister = Persister([CONFIG_FILE], output_file=CONFIG_FILE)
    def refresh(registry_server):
        persister.set_registry_values(registry_server.get_values()[1])
        persister.export()

    registry_server = RegistryServer(initial_value=persister.get_values()[1], refresh_callback=refresh)
    while True:
        time.sleep(1)
Example #3
0
 def setUp(self):
     self._prepare_mocks()
     self.patcher_open = patch('__builtin__.open', self.open_mock)
     self.patcher_open.start()
     self.p = Persister(['load0.cfg','load1.cfg'], 'output.cfg')