d4b65d922d80c4b8c20d1a03e17e6cb53d2b9b54
[tiramisu.git] / test / test_duplicate_config.py
1 # coding: utf-8
2 from autopath import do_autopath
3 do_autopath()
4
5 from tiramisu.setting import groups
6 from tiramisu.config import Config
7 from tiramisu.option import ChoiceOption, BoolOption, IntOption, \
8     StrOption, OptionDescription
9 from test.test_state import _diff_opts, _diff_conf
10 from py.test import raises
11
12
13 def make_description():
14     numero_etab = StrOption('numero_etab', "identifiant de l'établissement")
15     nom_machine = StrOption('nom_machine', "nom de la machine", default="eoleng")
16     nombre_interfaces = IntOption('nombre_interfaces', "nombre d'interfaces à activer",
17                                   default=1)
18     activer_proxy_client = BoolOption('activer_proxy_client', "utiliser un proxy",
19                                       default=False)
20     mode_conteneur_actif = BoolOption('mode_conteneur_actif', "le serveur est en mode conteneur",
21                                       default=False)
22     mode_conteneur_actif2 = BoolOption('mode_conteneur_actif2', "le serveur est en mode conteneur2",
23                                        default=False, properties=('hidden',))
24
25     adresse_serveur_ntp = StrOption('serveur_ntp', "adresse serveur ntp", multi=True)
26     time_zone = ChoiceOption('time_zone', 'fuseau horaire du serveur',
27                              ('Paris', 'Londres'), 'Paris')
28
29     ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé")
30     netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau")
31
32     master = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
33     interface1 = OptionDescription('interface1', '', [master])
34     interface1.impl_set_group_type(groups.family)
35
36     general = OptionDescription('general', '', [numero_etab, nom_machine,
37                                 nombre_interfaces, activer_proxy_client,
38                                 mode_conteneur_actif, mode_conteneur_actif2,
39                                 adresse_serveur_ntp, time_zone])
40     general.impl_set_group_type(groups.family)
41     new = OptionDescription('new', '', [], properties=('hidden',))
42     new.impl_set_group_type(groups.family)
43     creole = OptionDescription('creole', 'first tiramisu configuration', [general, interface1, new])
44     descr = OptionDescription('baseconfig', 'baseconifgdescr', [creole])
45     return descr
46
47
48 def test_duplicate():
49     cfg = Config(make_description())
50     ncfg = cfg.duplicate()
51     _diff_opts(cfg.cfgimpl_get_description(), ncfg.cfgimpl_get_description())
52     _diff_conf(cfg, ncfg)
53     cfg.creole.general.numero_etab = 'oui'
54     raises(AssertionError, "_diff_conf(cfg, ncfg)")
55     ncfg.creole.general.numero_etab = 'oui'
56     _diff_conf(cfg, ncfg)