1 ##############################################################################
2 # Copyright (c) 2016 Dan Radez (dradez@redhat.com) (Red Hat)
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
13 from mock import patch
15 from mock import MagicMock
16 from mock import mock_open
18 from apex.common.exceptions import ApexDeployException
19 from apex.deploy import deploy_quickstart
20 from apex.deploy import validate_cross_settings
21 from apex.deploy import build_vms
22 from apex.deploy import create_deploy_parser
23 from apex.deploy import validate_deploy_args
24 from apex.deploy import main
26 from nose.tools import (
28 assert_regexp_matches,
32 a_mock_open = mock_open(read_data=None)
35 class TestDeploy(unittest.TestCase):
38 """This method is run once for each class before any tests are run"""
41 def teardown_class(cls):
42 """This method is run once for each class _after_ all tests are run"""
45 """This method is run once before _each_ test method is executed"""
48 """This method is run once after _each_ test method is executed"""
50 def test_deloy_quickstart(self):
51 deploy_quickstart(None, None, None)
53 def test_validate_cross_settings(self):
54 deploy_settings = {'deploy_options': {'dataplane': 'ovs'}}
56 net_settings.enabled_network_list = ['tenant']
57 validate_cross_settings(deploy_settings, net_settings, '')
59 def test_validate_cross_settings_raises(self):
60 deploy_settings = {'deploy_options': {'dataplane': 'notovs'}}
62 net_settings.enabled_network_list = []
63 assert_raises(ApexDeployException,
64 validate_cross_settings,
65 deploy_settings, net_settings, None)
67 @patch('apex.deploy.virt_utils')
68 @patch('apex.deploy.vm_lib')
69 def test_build_vms(self, mock_vm_lib, mock_virt_utils):
70 inventory = {'nodes': [{'memory': '1234',
75 net_sets.enabled_network_list = []
76 build_vms(inventory, net_sets)
78 def test_create_deploy_parser(self):
79 assert_is_instance(create_deploy_parser(), argparse.ArgumentParser)
81 @patch('apex.deploy.os.path')
82 def test_validate_deploy_args(self, mock_os_path):
83 mock_os_path.isfile.return_value = True
85 args.inventory_file = None
87 validate_deploy_args(args)
89 def test_validate_deploy_args_no_virt_no_inv(self):
91 args.inventory_file = 'file_name'
93 assert_raises(ApexDeployException, validate_deploy_args, args)
95 @patch('apex.deploy.os.path')
96 def test_validate_deploy_args_w_virt_raises(self, mock_os_path):
97 mock_os_path.isfile.return_value = False
99 args.inventory_file = None
101 assert_raises(ApexDeployException, validate_deploy_args, args)
103 def test_validate_deploy_args_virt_and_inv_file(self):
105 args.inventory_file = 'file_name'
107 assert_raises(ApexDeployException, validate_deploy_args, args)
109 @patch('apex.deploy.shutil')
110 @patch('apex.deploy.oc_deploy')
111 @patch('apex.deploy.uc_lib')
112 @patch('apex.deploy.build_vms')
113 @patch('apex.deploy.Inventory')
114 @patch('apex.deploy.virt_utils')
115 @patch('apex.deploy.oc_cfg')
116 @patch('apex.deploy.parsers')
117 @patch('apex.deploy.utils')
118 @patch('apex.deploy.NetworkEnvironment')
119 @patch('apex.deploy.NetworkSettings')
120 @patch('apex.deploy.DeploySettings')
121 @patch('apex.deploy.os')
122 @patch('apex.deploy.json')
123 @patch('apex.deploy.jumphost')
124 @patch('apex.deploy.validate_cross_settings')
125 @patch('apex.deploy.validate_deploy_args')
126 @patch('apex.deploy.create_deploy_parser')
127 @patch('builtins.open', a_mock_open, create=True)
128 def test_main(self, mock_parser, mock_val_args, mock_cross_sets,
129 mock_jumphost, mock_json, mock_os,
130 mock_deploy_sets, mock_net_sets, mock_net_env,
131 mock_utils, mock_parsers, mock_oc_cfg,
132 mock_virt_utils, mock_inv, mock_build_vms, mock_uc_lib,
133 mock_oc_deploy, mock_shutil):
134 net_sets_dict = {'networks': MagicMock(),
135 'dns_servers': 'test'}
136 ds_opts_dict = {'global_params': MagicMock(),
137 'deploy_options': {'gluon': False,
139 'sdn_controller': 'opendaylight',
143 'yardstick': 'test'}}
144 args = mock_parser.return_value.parse_args.return_value
146 args.quickstart = False
148 net_sets = mock_net_sets.return_value
149 net_sets.enabled_network_list = ['external']
150 net_sets.__getitem__.side_effect = net_sets_dict.__getitem__
151 net_sets.__contains__.side_effect = net_sets_dict.__contains__
152 deploy_sets = mock_deploy_sets.return_value
153 deploy_sets.__getitem__.side_effect = ds_opts_dict.__getitem__
154 deploy_sets.__contains__.side_effect = ds_opts_dict.__contains__
155 mock_parsers.parse_nova_output.return_value = {'testnode1': 'test'}
158 @patch('apex.deploy.validate_cross_settings')
159 @patch('apex.deploy.virt_utils')
160 @patch('apex.deploy.utils')
161 @patch('apex.deploy.Inventory')
162 @patch('apex.deploy.NetworkEnvironment')
163 @patch('apex.deploy.NetworkSettings')
164 @patch('apex.deploy.DeploySettings')
165 @patch('apex.deploy.os')
166 @patch('apex.deploy.create_deploy_parser')
167 @patch('builtins.open', a_mock_open, create=True)
168 def test_main_qs(self, mock_parser, mock_os, mock_deploy,
169 mock_net_sets, mock_net_env, mock_inv, mock_utils,
170 mock_virt_utils, mock_cross):
171 args = mock_parser.return_value.parse_args.return_value
173 args.quickstart = True
177 @patch('apex.deploy.shutil')
178 @patch('apex.deploy.oc_deploy')
179 @patch('apex.deploy.uc_lib')
180 @patch('apex.deploy.build_vms')
181 @patch('apex.deploy.Inventory')
182 @patch('apex.deploy.virt_utils')
183 @patch('apex.deploy.oc_cfg')
184 @patch('apex.deploy.parsers')
185 @patch('apex.deploy.utils')
186 @patch('apex.deploy.NetworkEnvironment')
187 @patch('apex.deploy.NetworkSettings')
188 @patch('apex.deploy.DeploySettings')
189 @patch('apex.deploy.os')
190 @patch('apex.deploy.json')
191 @patch('apex.deploy.jumphost')
192 @patch('apex.deploy.validate_cross_settings')
193 @patch('apex.deploy.validate_deploy_args')
194 @patch('apex.deploy.create_deploy_parser')
195 @patch('builtins.open', a_mock_open, create=True)
196 def test_main_virt(self, mock_parser, mock_val_args, mock_cross_sets,
197 mock_jumphost, mock_json, mock_os,
198 mock_deploy_sets, mock_net_sets, mock_net_env,
199 mock_utils, mock_parsers, mock_oc_cfg,
200 mock_virt_utils, mock_inv, mock_build_vms, mock_uc_lib,
201 mock_oc_deploy, mock_shutil):
202 # didn't work yet line 412
203 # net_sets_dict = {'networks': {'admin': {'cidr': MagicMock()}},
204 # 'dns_servers': 'test'}
205 # net_sets_dict['networks']['admin']['cidr'].return_value.version = 6
206 ds_opts_dict = {'global_params': MagicMock(),
207 'deploy_options': {'gluon': False,
209 'sdn_controller': 'opendaylight',
213 'yardstick': 'test'}}
214 args = mock_parser.return_value.parse_args.return_value
216 args.quickstart = False
218 args.virt_default_ram = 10
219 args.ha_enabled = True
220 args.virt_compute_nodes = 1
221 args.virt_compute_ram = None
222 args.virt_default_ram = 12
223 net_sets = mock_net_sets.return_value
224 net_sets.enabled_network_list = ['admin']
225 deploy_sets = mock_deploy_sets.return_value
226 deploy_sets.__getitem__.side_effect = ds_opts_dict.__getitem__
227 deploy_sets.__contains__.side_effect = ds_opts_dict.__contains__
229 args.virt_compute_ram = 16
230 args.virt_default_ram = 10