Skip to content

Commit

Permalink
fix UT
Browse files Browse the repository at this point in the history
  • Loading branch information
isabelmsft committed Dec 1, 2022
1 parent 62f3355 commit 2e81fa9
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 15 deletions.
2 changes: 0 additions & 2 deletions config/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2929,7 +2929,6 @@ def warm_restart_bgp_eoiu(ctx, enable):
def vrf_add_management_vrf(config_db):
"""Enable management vrf in config DB"""

config_db = ValidatedConfigDBConnector(config_db)
entry = config_db.get_entry('MGMT_VRF_CONFIG', "vrf_global")
if entry and entry['mgmtVrfEnabled'] == 'true' :
click.echo("ManagementVRF is already Enabled.")
Expand All @@ -2944,7 +2943,6 @@ def vrf_add_management_vrf(config_db):
def vrf_delete_management_vrf(config_db):
"""Disable management vrf in config DB"""

config_db = ValidatedConfigDBConnector(config_db)
entry = config_db.get_entry('MGMT_VRF_CONFIG', "vrf_global")
if not entry or entry['mgmtVrfEnabled'] == 'false' :
click.echo("ManagementVRF is already Disabled.")
Expand Down
47 changes: 37 additions & 10 deletions tests/config_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1651,6 +1651,12 @@ def test_warm_restart_neighsyncd_timer_yang_validation(self):
assert result.exit_code != 0
assert "Invalid ConfigDB. Error" in result.output

result = runner.invoke(config.config.commands["warm_restart"].commands["neighsyncd_timer"], ["0"], obj=obj)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0
assert "neighsyncd warm restart timer must be in range 1-9999" in result.output

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_warm_restart_bgp_timer_yang_validation(self):
Expand All @@ -1665,6 +1671,12 @@ def test_warm_restart_bgp_timer_yang_validation(self):
assert result.exit_code != 0
assert "Invalid ConfigDB. Error" in result.output

result = runner.invoke(config.config.commands["warm_restart"].commands["bgp_timer"], ["0"], obj=obj)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0
assert "bgp warm restart timer must be in range 1-3600" in result.output

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_warm_restart_teamsyncd_timer_yang_validation(self):
Expand All @@ -1679,6 +1691,12 @@ def test_warm_restart_teamsyncd_timer_yang_validation(self):
assert result.exit_code != 0
assert "Invalid ConfigDB. Error" in result.output

result = runner.invoke(config.config.commands["warm_restart"].commands["teamsyncd_timer"], ["0"], obj=obj)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0
assert "teamsyncd warm restart timer must be in range 1-3600" in result.output

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_warm_restart_bgp_eoiu_yang_validation(self):
Expand Down Expand Up @@ -1706,13 +1724,14 @@ def setup_class(cls):
importlib.reload(config.main)

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.main.is_dynamic_buffer_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value=None))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value=False))
def test_add_cablelength_with_invalid_name_valid_length_yang_validation(self):
config.ADHOC_VALIDATION = True
runner = CliRunner()
db = Db()
obj = {'db':db.cfgdb}
obj = {'config_db':db.cfgdb}

result = runner.invoke(config.config.commands["interface"].commands["cable-length"], ["Ethernet0","40m"], obj=obj)
print(result.exit_code)
Expand All @@ -1723,28 +1742,36 @@ def test_add_cablelength_with_invalid_name_valid_length_yang_validation(self):
@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value="Port Info"))
def test_add_cablelength_with_invalid_name_valid_length_yang_validation(self):
config.ADHOC_VALIDATION = True
@patch("config.main.is_dynamic_buffer_enabled", mock.Mock(return_value=True))
@patch("config.main.ConfigDBConnector.get_keys", mock.Mock(return_value=["sample_key"]))
def test_add_cablelength_invalid_yang_validation(self):
config.ADHOC_VALIDATION = False
runner = CliRunner()
db = Db()
obj = {'db':db.cfgdb}
obj = {'config_db':db.cfgdb}

result = runner.invoke(config.config.commands["interface"].commands["cable-length"], ["Ethernet0","40x"], obj=obj)
result = runner.invoke(config.config.commands["interface"].commands["cable-length"], ["Ethernet0","40"], obj=obj)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0

assert "Invalid ConfigDB. Error" in result.output

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value="Port Info"))
def test_add_cablelength_invalid_yang_validation(self):
@patch("config.main.is_dynamic_buffer_enabled", mock.Mock(return_value=True))
def test_add_cablelength_with_invalid_name_invalid_length_yang_validation(self):
config.ADHOC_VALIDATION = True
runner = CliRunner()
db = Db()
obj = {'db':db.cfgdb}
obj = {'config_db':db.cfgdb}

result = runner.invoke(config.config.commands["interface"].commands["cable-length"], ["Ethernet0","40"], obj=obj)
result = runner.invoke(config.config.commands["interface"].commands["cable-length"], ["Ethernet0","40x"], obj=obj)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0
assert "Invalid cable length" in result.output


@classmethod
def teardown_class(cls):
Expand Down
34 changes: 31 additions & 3 deletions tests/ip_config_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from mock import patch

from click.testing import CliRunner
from jsonpatch import JsonPatchConflict

import config.main as config
import show.main as show
Expand Down Expand Up @@ -271,21 +272,48 @@ def test_intf_unknown_vrf_bind(self):
print(result.exit_code, result.output)
assert result.exit_code == 0

@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(return_value=True))
@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(side_effect=ValueError))
def test_intf_unknown_vrf_bind_yang_validation(self):
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=ValueError))
@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value={"mgmtVrfEnabled": "false"}))
def test_add_vrf_invalid_configdb_yang_validation(self):
runner = CliRunner()
db = Db()
obj = {'config_db':db.cfgdb, 'namespace':db.db.namespace}

result = runner.invoke(config.config.commands["vrf"].commands["add"], ["mgmt"], obj=obj)
print(result.exit_code)
print(result.output)
assert "Invalid ConfigDB. Error" in result.output
assert result.exit_code != 0

result = runner.invoke(config.config.commands["vrf"].commands["add"], ["Vrf01"], obj=obj)
print(result.exit_code)
print(result.output)
assert "Invalid ConfigDB. Error" in result.output
assert result.exit_code != 0

@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=JsonPatchConflict))
@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value={"mgmtVrfEnabled": "true"}))
def test_del_vrf_invalid_configdb_yang_validation(self):
runner = CliRunner()
db = Db()
obj = {'config_db':db.cfgdb, 'namespace':db.db.namespace}

result = runner.invoke(config.config.commands["vrf"].commands["del"], ["mgmt"], obj=obj)
print(result.exit_code)
print(result.output)
assert "Invalid ConfigDB. Error" in result.output
assert result.exit_code != 0

result = runner.invoke(config.config.commands["vrf"].commands["del"], ["Vrf01"], obj=obj)
print(result.exit_code)
print(result.output)
assert "Invalid ConfigDB. Error" in result.output
assert result.exit_code != 0

@classmethod
def teardown_class(cls):
os.environ['UTILITIES_UNIT_TESTING'] = "0"
Expand Down
31 changes: 31 additions & 0 deletions tests/vxlan_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
from unittest import mock

from click.testing import CliRunner
from mock import patch
from jsonpatch import JsonPatchConflict

import config.main as config
import config.validated_config_db_connector as validated_config_db_connector
import show.main as show
from utilities_common.db import Db
from .mock_tables import dbconnector
Expand Down Expand Up @@ -214,6 +217,34 @@ def test_show_vxlan_remotevni_specific_cnt(self):
print(result.output)
assert result.exit_code == 0
assert result.output == show_vxlan_remotevni_specific_cnt_output

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=ValueError))
@patch("config.main.ConfigDBConnector.get_entry", mock.Mock(return_value="Vlan Data"))
@patch("config.main.ConfigDBConnector.get_table", mock.Mock(return_value={'sample_key': 'sample_value'}))
def test_config_vxlan_add_yang_validation(self):
runner = CliRunner()
db = Db()

result = runner.invoke(config.config.commands["vxlan"].commands["map_range"].commands["del"], ["vtep1", "100", "102", "100"], obj=db)
print(result.exit_code)
assert result.exit_code != 0

result = runner.invoke(config.config.commands["vxlan"].commands["map_range"].commands["add"], ["vtep1", "100", "102", "100"], obj=db)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=JsonPatchConflict))
def test_config_vxlan_add_yang_validation_json_error(self):
runner = CliRunner()
db = Db()

result = runner.invoke(config.config.commands["vxlan"].commands["map"].commands["del"], ["vtep1", "200", "200"], obj=db)
print(result.exit_code)
print(result.output)
assert result.exit_code != 0

def test_config_vxlan_add(self):
runner = CliRunner()
Expand Down

0 comments on commit 2e81fa9

Please sign in to comment.