# coding: utf-8 from .autopath import do_autopath do_autopath() from py.test import raises from tiramisu.error import ConfigError from tiramisu.config import Config from tiramisu.option import BoolOption, OptionDescription, MasterSlaves from tiramisu.setting import groups, owners from tiramisu.storage import list_sessions, delete_session def test_non_persistent(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) Config(o, session_id='test_non_persistent') def test_list(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) c = Config(o, session_id='test_non_persistent') c.cfgimpl_get_settings().remove('cache') c.b = True assert 'test_non_persistent' in list_sessions('config') del(c) assert 'test_non_persistent' not in list_sessions('config') def test_create_persistent(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: Config(o, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass def test_create_delete_not_persistent(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: Config(o, session_id='test_persistent', persistent=True) except ValueError: raises(ValueError, "delete_session('option', 'test_persistent')") def test_list_sessions_persistent(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) c.b = True except ValueError: # storage is not persistent pass else: assert 'test_persistent' in list_sessions('config') def test_delete_session_persistent(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: Config(o, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass else: assert 'test_persistent' in list_sessions('config') delete_session('config', 'test_persistent') assert 'test_persistent' not in list_sessions('config') def test_create_persistent_retrieve(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass else: assert c.b is None c.b = True assert c.b is True del(c) c = Config(o, session_id='test_persistent', persistent=True) assert c.b is True assert 'test_persistent' in list_sessions('config') delete_session('config', c.impl_getsessionid()) del(c) c = Config(o, session_id='test_persistent', persistent=True) assert c.b is None delete_session('config', c.impl_getsessionid()) del(c) def test_two_persistent(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass else: c.cfgimpl_get_settings().remove('cache') c2 = Config(o, session_id='test_persistent', persistent=True) c2.cfgimpl_get_settings().remove('cache') assert c.b is None assert c2.b is None c.b = False assert c.b is False assert c2.b is False c2.b = True assert c.b is True assert c2.b is True delete_session('config', 'test_persistent') def test_create_persistent_retrieve_owner(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass else: assert c.getowner(b) == owners.default c.b = True assert c.b is True assert c.getowner(b) == owners.user owners.addowner('persistentowner') c.cfgimpl_get_values().setowner(b, owners.persistentowner) assert c.getowner(b) == owners.persistentowner del(c) # c = Config(o, session_id='test_persistent', persistent=True) c.cfgimpl_get_values().setowner(b, owners.persistentowner) delete_session('config', c.impl_getsessionid()) del(c) # c = Config(o, session_id='test_persistent', persistent=True) assert c.b is None assert c.getowner(b) == owners.default delete_session('config', c.impl_getsessionid()) del(c) def test_create_persistent_retrieve_owner_masterslaves(): a = BoolOption('a', '', multi=True) b = BoolOption('b', '', multi=True) o = MasterSlaves('a', '', [a, b]) #o.impl_set_group_type(groups.master) o1 = OptionDescription('a', '', [o]) try: c = Config(o1, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass else: assert c.getowner(a) == owners.default assert c.getowner(b) == owners.default c.a.a = [True] c.a.a.append(False) c.a.b[1] = True assert c.getowner(a) == owners.user assert c.getowner(b, 0) == owners.default assert c.getowner(b, 1) == owners.user owners.addowner('persistentowner2') c.cfgimpl_get_values().setowner(b, owners.persistentowner2, 1) c.a.b[0] = True assert c.getowner(b, 0) == owners.user assert c.getowner(b, 1) == owners.persistentowner2 del(c) # c = Config(o1, session_id='test_persistent', persistent=True) assert c.getowner(b, 0) == owners.user assert c.getowner(b, 1) == owners.persistentowner2 delete_session('config', c.impl_getsessionid()) del(c) # c = Config(o1, session_id='test_persistent', persistent=True) assert c.a.b == [] assert c.getowner(b) == owners.default delete_session('config', c.impl_getsessionid()) del(c) def test_two_persistent_owner(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) c.cfgimpl_get_settings().remove('cache') except ValueError: # storage is not persistent pass else: c2 = Config(o, session_id='test_persistent', persistent=True) c2.cfgimpl_get_settings().remove('cache') assert c.getowner(b) == owners.default assert c2.getowner(b) == owners.default c.b = False assert c.getowner(b) == owners.user assert c2.getowner(b) == owners.user owners.addowner('persistent') c.cfgimpl_get_values().setowner(b, owners.persistent) assert c.getowner(b) == owners.persistent assert c2.getowner(b) == owners.persistent delete_session('config', 'test_persistent') def test_create_persistent_retrieve_information(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) except ValueError: # storage is not persistent pass else: c.impl_set_information('info', 'string') assert c.impl_get_information('info') == 'string' del(c) # c = Config(o, session_id='test_persistent', persistent=True) assert c.impl_get_information('info') == 'string' delete_session('config', c.impl_getsessionid()) del(c) # c = Config(o, session_id='test_persistent', persistent=True) assert c.impl_get_information('info', None) == None delete_session('config', c.impl_getsessionid()) del(c) def test_two_persistent_information(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) c.cfgimpl_get_settings().remove('cache') except ValueError: # storage is not persistent pass else: c.impl_set_information('info', 'string') assert c.impl_get_information('info') == 'string' c2 = Config(o, session_id='test_persistent', persistent=True) c2.cfgimpl_get_settings().remove('cache') c2.cfgimpl_get_settings().remove('cache') assert c2.impl_get_information('info') == 'string' delete_session('config', 'test_persistent') def test_two_different_persistents(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) c.cfgimpl_get_settings().remove('cache') d = Config(o, session_id='test_persistent2', persistent=True) d.cfgimpl_get_settings().remove('cache') except ValueError: # storage is not persistent pass else: c.cfgimpl_get_settings()[b].append('test') assert str(c.cfgimpl_get_settings()[b]) in ["['test']", "[u'test']"] assert str(d.cfgimpl_get_settings()[b]) == "[]" assert c.b is None assert d.b is None c.b = True assert c.b == True assert d.b is None delete_session('config', 'test_persistent') delete_session('config', 'test_persistent2') def test_two_different_information(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) try: c = Config(o, session_id='test_persistent', persistent=True) c.impl_set_information('a', 'a') d = Config(o, session_id='test_persistent2', persistent=True) d.impl_set_information('a', 'b') except ValueError: # storage is not persistent pass else: assert c.impl_get_information('a') == 'a' assert d.impl_get_information('a') == 'b' delete_session('config', 'test_persistent') delete_session('config', 'test_persistent2')