|
| 1 | +import imp |
1 | 2 | import os |
2 | 3 | import sys |
3 | 4 |
|
4 | 5 | import mock |
5 | 6 | from click.testing import CliRunner |
6 | 7 | from swsssdk import ConfigDBConnector |
| 8 | +from utilities_common import constants |
| 9 | +from utilities_common.multi_asic import get_multi_asic_cfgdb |
7 | 10 |
|
8 | 11 | test_path = os.path.dirname(os.path.abspath(__file__)) |
9 | 12 | modules_path = os.path.dirname(test_path) |
|
15 | 18 | config.asic_type = mock.MagicMock(return_value = "broadcom") |
16 | 19 | config._get_device_type = mock.MagicMock(return_value = "ToRRouter") |
17 | 20 |
|
18 | | -config_db = ConfigDBConnector() |
19 | | -config_db.connect() |
| 21 | +config.multi_asic_cfgdb = get_multi_asic_cfgdb() |
| 22 | +show.config_db = config.multi_asic_cfgdb[constants.DEFAULT_NAMESPACE] |
20 | 23 |
|
21 | | -show.config_db = config_db |
22 | | -config.config_db = config_db |
23 | 24 |
|
24 | 25 | show_feature_status_output="""\ |
25 | 26 | Feature State AutoRestart |
|
95 | 96 | --------- -------------- |
96 | 97 | database always_enabled |
97 | 98 | """ |
| 99 | +config_feature_bgp_inconsistent_state_output="""\ |
| 100 | +Feature 'bgp' state is not consistent across namespaces |
| 101 | +""" |
| 102 | +config_feature_bgp_inconsistent_autorestart_output="""\ |
| 103 | +Feature 'bgp' auto-restart is not consistent across namespaces |
| 104 | +""" |
98 | 105 |
|
99 | 106 | class TestFeature(object): |
100 | 107 | @classmethod |
@@ -212,3 +219,102 @@ def test_config_unknown_feature(self): |
212 | 219 | @classmethod |
213 | 220 | def teardown_class(cls): |
214 | 221 | print("TEARDOWN") |
| 222 | + |
| 223 | +class TestFeatureMultiAsic(object): |
| 224 | + @classmethod |
| 225 | + def setup_class(cls): |
| 226 | + print("SETUP") |
| 227 | + |
| 228 | + def test_config_bgp_feature_inconsistent_state(self): |
| 229 | + import mock_tables.dbconnector |
| 230 | + import mock_tables.mock_multi_asic_3_asics |
| 231 | + imp.reload(mock_tables.mock_multi_asic_3_asics) |
| 232 | + mock_tables.dbconnector.load_namespace_config() |
| 233 | + config.multi_asic_cfgdb = get_multi_asic_cfgdb() |
| 234 | + show.config_db = config.multi_asic_cfgdb[constants.DEFAULT_NAMESPACE] |
| 235 | + runner = CliRunner() |
| 236 | + result = runner.invoke(config.config.commands["feature"].commands["state"], ["bgp", "disabled"]) |
| 237 | + print(result.exit_code) |
| 238 | + print(result.output) |
| 239 | + assert result.exit_code == 1 |
| 240 | + assert result.output == config_feature_bgp_inconsistent_state_output |
| 241 | + result = runner.invoke(config.config.commands["feature"].commands["state"], ["bgp", "enabled"]) |
| 242 | + print(result.exit_code) |
| 243 | + print(result.output) |
| 244 | + assert result.exit_code == 1 |
| 245 | + assert result.output == config_feature_bgp_inconsistent_state_output |
| 246 | + |
| 247 | + def test_config_bgp_feature_inconsistent_autorestart(self): |
| 248 | + import mock_tables.dbconnector |
| 249 | + import mock_tables.mock_multi_asic_3_asics |
| 250 | + imp.reload(mock_tables.mock_multi_asic_3_asics) |
| 251 | + mock_tables.dbconnector.load_namespace_config() |
| 252 | + config.multi_asic_cfgdb = get_multi_asic_cfgdb() |
| 253 | + show.config_db = config.multi_asic_cfgdb[constants.DEFAULT_NAMESPACE] |
| 254 | + runner = CliRunner() |
| 255 | + result = runner.invoke(config.config.commands["feature"].commands["autorestart"], ["bgp", "disabled"]) |
| 256 | + print(result.exit_code) |
| 257 | + print(result.output) |
| 258 | + assert result.exit_code == 1 |
| 259 | + assert result.output == config_feature_bgp_inconsistent_autorestart_output |
| 260 | + result = runner.invoke(config.config.commands["feature"].commands["autorestart"], ["bgp", "enabled"]) |
| 261 | + print(result.exit_code) |
| 262 | + print(result.output) |
| 263 | + assert result.exit_code == 1 |
| 264 | + assert result.output == config_feature_bgp_inconsistent_autorestart_output |
| 265 | + |
| 266 | + def test_config_bgp_feature_consistent_state(self): |
| 267 | + import mock_tables.dbconnector |
| 268 | + import mock_tables.mock_multi_asic |
| 269 | + imp.reload(mock_tables.mock_multi_asic) |
| 270 | + mock_tables.dbconnector.load_namespace_config() |
| 271 | + config.multi_asic_cfgdb = get_multi_asic_cfgdb() |
| 272 | + show.config_db = config.multi_asic_cfgdb[constants.DEFAULT_NAMESPACE] |
| 273 | + runner = CliRunner() |
| 274 | + result = runner.invoke(config.config.commands["feature"].commands["state"], ["bgp", "disabled"]) |
| 275 | + print(result.exit_code) |
| 276 | + assert result.exit_code == 0 |
| 277 | + result = runner.invoke(show.cli.commands["feature"].commands["status"], ["bgp"]) |
| 278 | + print(result.output) |
| 279 | + assert result.exit_code == 0 |
| 280 | + assert result.output == show_feature_bgp_disabled_status_output |
| 281 | + result = runner.invoke(config.config.commands["feature"].commands["state"], ["bgp", "enabled"]) |
| 282 | + print(result.exit_code) |
| 283 | + print(result.output) |
| 284 | + assert result.exit_code == 0 |
| 285 | + result = runner.invoke(show.cli.commands["feature"].commands["status"], ["bgp"]) |
| 286 | + print(result.output) |
| 287 | + assert result.exit_code == 0 |
| 288 | + assert result.output == show_feature_bgp_status_output |
| 289 | + |
| 290 | + def test_config_bgp_feature_consistent_autorestart(self): |
| 291 | + import mock_tables.dbconnector |
| 292 | + import mock_tables.mock_multi_asic |
| 293 | + imp.reload(mock_tables.mock_multi_asic) |
| 294 | + mock_tables.dbconnector.load_namespace_config() |
| 295 | + config.multi_asic_cfgdb = get_multi_asic_cfgdb() |
| 296 | + show.config_db = config.multi_asic_cfgdb[constants.DEFAULT_NAMESPACE] |
| 297 | + runner = CliRunner() |
| 298 | + result = runner.invoke(config.config.commands["feature"].commands["autorestart"], ["bgp", "disabled"]) |
| 299 | + print(result.exit_code) |
| 300 | + assert result.exit_code == 0 |
| 301 | + result = runner.invoke(show.cli.commands["feature"].commands["autorestart"], ["bgp"]) |
| 302 | + print(result.output) |
| 303 | + print(result.exit_code) |
| 304 | + assert result.exit_code == 0 |
| 305 | + assert result.output == show_feature_bgp_disabled_autorestart_output |
| 306 | + result = runner.invoke(config.config.commands["feature"].commands["autorestart"], ["bgp", "enabled"]) |
| 307 | + print(result.exit_code) |
| 308 | + assert result.exit_code == 0 |
| 309 | + result = runner.invoke(show.cli.commands["feature"].commands["autorestart"], ["bgp"]) |
| 310 | + print(result.output) |
| 311 | + print(result.exit_code) |
| 312 | + assert result.exit_code == 0 |
| 313 | + assert result.output == show_feature_bgp_autorestart_output |
| 314 | + |
| 315 | + |
| 316 | + @classmethod |
| 317 | + def teardown_class(cls): |
| 318 | + print("TEARDOWN") |
| 319 | + import mock_tables.mock_single_asic |
| 320 | + imp.reload(mock_tables.mock_single_asic) |
0 commit comments