Skip to content

Commit

Permalink
Make advance_version_for_expected_database available for other db mig…
Browse files Browse the repository at this point in the history
…rator test cases as well (sonic-net#1614)

- What I did
Originally, the method advance_version_for_expected_database was introduced (in sonic-net#1566) to handle the case the latest version in CONFIG_DB is greater than the latest version in mellanox_buffer_migrator.
Now there are other database migrators whose test cases can also encounter this situation, like port auto-negotiation (sonic-net#1568) and port-channel for LACP key (sonic-net#1473).
So I would like to make the method public, available for all database migrators.
Related database migrator test cases have been updated accordingly.

- How to verify it
Run the unit test.

Signed-off-by: Stephen Sun <[email protected]>
  • Loading branch information
stephenxs authored May 23, 2021
1 parent 5d1ad05 commit f1726fe
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1115,6 +1115,6 @@
"speed": "50000"
},
"VERSIONS|DATABASE": {
"VERSION": "version_2_0_1"
"VERSION": "version_2_0_0"
}
}
29 changes: 16 additions & 13 deletions tests/db_migrator_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@ def get_sonic_version_info_mlnx():
return {'asic_type': 'mellanox'}


def advance_version_for_expected_database(migrated_db, expected_db, last_interested_version):
# In case there are new db versions greater than the latest one that mellanox buffer migrator is interested,
# we just advance the database version in the expected database to make the test pass
expected_dbversion = expected_db.get_entry('VERSIONS', 'DATABASE')
dbmgtr_dbversion = migrated_db.get_entry('VERSIONS', 'DATABASE')
if expected_dbversion and dbmgtr_dbversion:
if expected_dbversion['VERSION'] == last_interested_version and dbmgtr_dbversion['VERSION'] > expected_dbversion['VERSION']:
expected_dbversion['VERSION'] = dbmgtr_dbversion['VERSION']
expected_db.set_entry('VERSIONS', 'DATABASE', expected_dbversion)


class TestMellanoxBufferMigrator(object):
@classmethod
def setup_class(cls):
Expand Down Expand Up @@ -76,16 +87,6 @@ def check_appl_db(self, result, expected):
for key in keys:
assert expected.get_all(expected.APPL_DB, key) == result.get_all(result.APPL_DB, key)

def advance_version_for_expected_database(self, migrated_db, expected_db):
# In case there are new db versions greater than the latest one that mellanox buffer migrator is interested,
# we just advance the database version in the expected database to make the test pass
expected_dbversion = expected_db.get_entry('VERSIONS', 'DATABASE')
dbmgtr_dbversion = migrated_db.get_entry('VERSIONS', 'DATABASE')
if expected_dbversion and dbmgtr_dbversion:
if expected_dbversion['VERSION'] == self.version_list[-1] and dbmgtr_dbversion['VERSION'] > expected_dbversion['VERSION']:
expected_dbversion['VERSION'] = dbmgtr_dbversion['VERSION']
expected_db.set_entry('VERSIONS', 'DATABASE', expected_dbversion)

@pytest.mark.parametrize('scenario',
['empty-config',
'non-default-config',
Expand All @@ -103,7 +104,7 @@ def test_mellanox_buffer_migrator_negative_cold_reboot(self, scenario):
dbmgtr = db_migrator.DBMigrator(None)
dbmgtr.migrate()
expected_db = self.mock_dedicated_config_db(db_after_migrate)
self.advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb)
advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, self.version_list[-1])
self.check_config_db(dbmgtr.configDB, expected_db.cfgdb)
assert not dbmgtr.mellanox_buffer_migrator.is_buffer_config_default

Expand Down Expand Up @@ -142,7 +143,7 @@ def test_mellanox_buffer_migrator_for_cold_reboot(self, sku_version, topo):

# 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]))
self.advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb)
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

Expand All @@ -158,7 +159,7 @@ def mellanox_buffer_migrator_warm_reboot_runner(self, input_config_db, input_app
import db_migrator
dbmgtr = db_migrator.DBMigrator(None)
dbmgtr.migrate()
self.advance_version_for_expected_database(dbmgtr.configDB, expected_config_db.cfgdb)
advance_version_for_expected_database(dbmgtr.configDB, expected_config_db.cfgdb, self.version_list[-1])
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)
Expand Down Expand Up @@ -210,8 +211,10 @@ def test_port_autoneg_migrator(self):
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()
advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, 'version_2_0_1')

assert dbmgtr.configDB.get_table('PORT') == expected_db.cfgdb.get_table('PORT')
assert dbmgtr.configDB.get_table('VERSIONS') == expected_db.cfgdb.get_table('VERSIONS')

0 comments on commit f1726fe

Please sign in to comment.