def test_global_dscp_to_tc_map_migrator(self): dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'qos_map_table_global_input') import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.asic_type = "broadcom" dbmgtr.hwsku = "vs" dbmgtr.migrate() dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'qos_map_table_global_expected') expected_db = Db() resulting_table = dbmgtr.configDB.get_table('PORT_QOS_MAP') expected_table = expected_db.cfgdb.get_table('PORT_QOS_MAP') diff = DeepDiff(resulting_table, expected_table, ignore_order=True) assert not diff # Check port_qos_map|global is not generated on mellanox asic dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'qos_map_table_global_input') dbmgtr_mlnx = db_migrator.DBMigrator(None) dbmgtr_mlnx.asic_type = "mellanox" dbmgtr_mlnx.hwsku = "vs" dbmgtr_mlnx.migrate() resulting_table = dbmgtr_mlnx.configDB.get_table('PORT_QOS_MAP') assert resulting_table == {}
def test_mellanox_buffer_migrator_for_cold_reboot(self, sku_version, topo): device_info.get_sonic_version_info = get_sonic_version_info_mlnx sku, start_version = sku_version version = start_version start_index = self.version_list.index(start_version) # start_version represents the database version from which the SKU is supported # For each SKU, # migration from any version between start_version and the current version (inclusive) to the current version will be verified for version in self.version_list[start_index:]: _ = self.mock_dedicated_config_db( self.make_db_name_by_sku_topo_version(sku, topo, version)) import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() # Eventually, the config db should be migrated to the latest version expected_db = self.mock_dedicated_config_db( self.make_db_name_by_sku_topo_version(sku, topo, self.version_list[-1])) advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, self.version_list[-1]) self.check_config_db(dbmgtr.configDB, expected_db.cfgdb) assert dbmgtr.mellanox_buffer_migrator.is_buffer_config_default self.clear_dedicated_mock_dbs()
def test_mellanox_buffer_migrator_negative_cold_reboot(self, scenario): db_before_migrate = scenario + '-input' db_after_migrate = scenario + '-expected' device_info.get_sonic_version_info = get_sonic_version_info_mlnx db = self.mock_dedicated_config_db(db_before_migrate) import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() expected_db = self.mock_dedicated_config_db(db_after_migrate) self.check_config_db(dbmgtr.configDB, expected_db.cfgdb) assert not dbmgtr.mellanox_buffer_migrator.is_buffer_config_default
def test_lacp_key_migrator(self): dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join(mock_db_path, 'config_db', 'portchannel-input') import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join(mock_db_path, 'config_db', 'portchannel-expected') expected_db = Db() advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, 'version_2_0_2') assert dbmgtr.configDB.get_table('PORTCHANNEL') == expected_db.cfgdb.get_table('PORTCHANNEL') assert dbmgtr.configDB.get_table('VERSIONS') == expected_db.cfgdb.get_table('VERSIONS')
def test_qos_buffer_migrator_for_cold_reboot(self): db_before_migrate = 'qos_tables_db_field_value_reference_format_2_0_1' db_after_migrate = 'qos_tables_db_field_value_reference_format_2_0_3' db = self.mock_dedicated_config_db(db_before_migrate) _ = self.mock_dedicated_appl_db(db_before_migrate) import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() expected_db = self.mock_dedicated_config_db(db_after_migrate) expected_appl_db = self.mock_dedicated_appl_db(db_after_migrate) advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, 'version_2_0_3') self.check_config_db(dbmgtr.configDB, expected_db.cfgdb) self.check_appl_db(dbmgtr.appDB, expected_appl_db) self.clear_dedicated_mock_dbs()
def test_mellanox_buffer_reclaiming(self, buffer_model, ingress_pools): device_info.get_sonic_version_info = get_sonic_version_info_mlnx db_before_migrate = 'reclaiming-buffer-' + buffer_model + '-' + ingress_pools + '-input' db_after_migrate = 'reclaiming-buffer-' + buffer_model + '-' + ingress_pools + '-expected' db = self.mock_dedicated_config_db(db_before_migrate) import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() expected_db = self.mock_dedicated_config_db(db_after_migrate) advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, 'version_2_0_3') tables_to_verify = self.config_db_tables_to_verify tables_to_verify.extend(['BUFFER_QUEUE', 'BUFFER_PORT_INGRESS_PROFILE_LIST', 'BUFFER_PORT_EGRESS_PROFILE_LIST']) self.check_config_db(dbmgtr.configDB, expected_db.cfgdb, tables_to_verify)
def test_port_autoneg_migrator(self): dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'port-an-input') import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'port-an-expected') expected_db = Db() assert dbmgtr.configDB.get_table( 'PORT') == expected_db.cfgdb.get_table('PORT') assert dbmgtr.configDB.get_table( 'VERSIONS') == expected_db.cfgdb.get_table('VERSIONS')
def test_pfc_enable_migrator(self): dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'qos_map_table_input') import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join( mock_db_path, 'config_db', 'qos_map_table_expected') expected_db = Db() resulting_table = dbmgtr.configDB.get_table('PORT_QOS_MAP') expected_table = expected_db.cfgdb.get_table('PORT_QOS_MAP') diff = DeepDiff(resulting_table, expected_table, ignore_order=True) assert not diff
def mellanox_buffer_migrator_warm_reboot_runner(self, input_config_db, input_appl_db, expected_config_db, expected_appl_db, is_buffer_config_default_expected): expected_config_db = self.mock_dedicated_config_db(expected_config_db) expected_appl_db = self.mock_dedicated_appl_db(expected_appl_db) self.mock_dedicated_state_db() _ = self.mock_dedicated_config_db(input_config_db) _ = self.mock_dedicated_appl_db(input_appl_db) import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() assert dbmgtr.mellanox_buffer_migrator.is_buffer_config_default == is_buffer_config_default_expected self.check_config_db(dbmgtr.configDB, expected_config_db.cfgdb) self.check_appl_db(dbmgtr.appDB, expected_appl_db) self.clear_dedicated_mock_dbs()
def test_init_config_feature_migration(self): dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join(mock_db_path, 'config_db', 'feature-input') import db_migrator dbmgtr = db_migrator.DBMigrator(None) dbmgtr.migrate() dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join(mock_db_path, 'config_db', 'feature-expected') expected_db = Db() resulting_table = dbmgtr.configDB.get_table('FEATURE') expected_table = expected_db.cfgdb.get_table('FEATURE') diff = DeepDiff(resulting_table, expected_table, ignore_order=True) assert not diff assert not expected_db.cfgdb.get_table('CONTAINER_FEATURE')