summaryrefslogtreecommitdiffstats
path: root/tests/test_apex_deploy_settings.py
blob: 48c55d79b238eee14d5f14a741ecc865ae43dff3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
##############################################################################
# Copyright (c) 2016 Dan Radez (Red Hat)
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

# https://docs.python.org/3/library/io.html
import io
import tempfile

from apex.deploy_settings import DeploySettings
from apex.deploy_settings import DeploySettingsException

from nose.tools import assert_equal
from nose.tools import assert_raises
from nose.tools import assert_is_instance

deploy_files = ('deploy_settings.yaml',
                'os-nosdn-nofeature-noha.yaml',
                'os-nosdn-ovs-noha.yaml',
                'os-ocl-nofeature-ha.yaml',
                'os-odl-bgpvpn-ha.yaml',
                'os-odl-bgpvpn-noha.yaml',
                'os-odl_l3-nofeature-ha.yaml',
                'os-nosdn-nofeature-ha.yaml',
                'os-nosdn-ovs-ha.yaml',
                'os-nosdn-performance-ha.yaml',
                'os-odl_l2-nofeature-ha.yaml',
                'os-odl_l2-sfc-noha.yaml',
                'os-onos-nofeature-ha.yaml',
                'os-onos-sfc-ha.yaml')

test_deploy_content = (
    'global_params:',
    'deploy_options: string',
    """deploy_options: string
global_params:""",
    """global_params:
deploy_options:
  error: error
""",
    """global_params:
deploy_options:
  performance: string
""",
    """global_params:
deploy_options:
  dataplane: invalid
""",
    """global_params:
deploy_options:
  performance:
    Controller:
      error: error
""",
    """global_params:
deploy_options:
  performance:
    InvalidRole:
      error: error
""",)


class TestIpUtils(object):
    @classmethod
    def setup_class(klass):
        """This method is run once for each class before any tests are run"""

    @classmethod
    def teardown_class(klass):
        """This method is run once for each class _after_ all tests are run"""

    def setUp(self):
        """This method is run once before _each_ test method is executed"""

    def teardown(self):
        """This method is run once after _each_ test method is executed"""

    def test_init(self):
        for f in deploy_files:
            ds = DeploySettings('../config/deploy/{}'.format(f))
            ds = DeploySettings(ds)

    def test__validate_settings(self):
        for c in test_deploy_content:
            try:
                f = tempfile.NamedTemporaryFile(mode='w')
                f.write(c)
                f.flush()
                assert_raises(DeploySettingsException,
                              DeploySettings, f.name)
            finally:
                f.close()

    def test_dump_bash(self):
        # the performance file has the most use of the function
        # so using that as the test case
        ds = DeploySettings('../config/deploy/os-nosdn-performance-ha.yaml')
        assert_equal(ds.dump_bash(), None)
        assert_equal(ds.dump_bash(path='/dev/null'), None)

    def test_exception(sefl):
        e = DeploySettingsException("test")
        print(e)
        assert_is_instance(e, DeploySettingsException)