Skip to content

Commit f1726fe

Browse files
authored
Make advance_version_for_expected_database available for other db migrator 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 <stephens@nvidia.com>
1 parent 5d1ad05 commit f1726fe

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

tests/db_migrator_input/config_db/non-default-config-expected.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,6 @@
11151115
"speed": "50000"
11161116
},
11171117
"VERSIONS|DATABASE": {
1118-
"VERSION": "version_2_0_1"
1118+
"VERSION": "version_2_0_0"
11191119
}
11201120
}

tests/db_migrator_test.py

+16-13
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ def get_sonic_version_info_mlnx():
2424
return {'asic_type': 'mellanox'}
2525

2626

27+
def advance_version_for_expected_database(migrated_db, expected_db, last_interested_version):
28+
# In case there are new db versions greater than the latest one that mellanox buffer migrator is interested,
29+
# we just advance the database version in the expected database to make the test pass
30+
expected_dbversion = expected_db.get_entry('VERSIONS', 'DATABASE')
31+
dbmgtr_dbversion = migrated_db.get_entry('VERSIONS', 'DATABASE')
32+
if expected_dbversion and dbmgtr_dbversion:
33+
if expected_dbversion['VERSION'] == last_interested_version and dbmgtr_dbversion['VERSION'] > expected_dbversion['VERSION']:
34+
expected_dbversion['VERSION'] = dbmgtr_dbversion['VERSION']
35+
expected_db.set_entry('VERSIONS', 'DATABASE', expected_dbversion)
36+
37+
2738
class TestMellanoxBufferMigrator(object):
2839
@classmethod
2940
def setup_class(cls):
@@ -76,16 +87,6 @@ def check_appl_db(self, result, expected):
7687
for key in keys:
7788
assert expected.get_all(expected.APPL_DB, key) == result.get_all(result.APPL_DB, key)
7889

79-
def advance_version_for_expected_database(self, migrated_db, expected_db):
80-
# In case there are new db versions greater than the latest one that mellanox buffer migrator is interested,
81-
# we just advance the database version in the expected database to make the test pass
82-
expected_dbversion = expected_db.get_entry('VERSIONS', 'DATABASE')
83-
dbmgtr_dbversion = migrated_db.get_entry('VERSIONS', 'DATABASE')
84-
if expected_dbversion and dbmgtr_dbversion:
85-
if expected_dbversion['VERSION'] == self.version_list[-1] and dbmgtr_dbversion['VERSION'] > expected_dbversion['VERSION']:
86-
expected_dbversion['VERSION'] = dbmgtr_dbversion['VERSION']
87-
expected_db.set_entry('VERSIONS', 'DATABASE', expected_dbversion)
88-
8990
@pytest.mark.parametrize('scenario',
9091
['empty-config',
9192
'non-default-config',
@@ -103,7 +104,7 @@ def test_mellanox_buffer_migrator_negative_cold_reboot(self, scenario):
103104
dbmgtr = db_migrator.DBMigrator(None)
104105
dbmgtr.migrate()
105106
expected_db = self.mock_dedicated_config_db(db_after_migrate)
106-
self.advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb)
107+
advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, self.version_list[-1])
107108
self.check_config_db(dbmgtr.configDB, expected_db.cfgdb)
108109
assert not dbmgtr.mellanox_buffer_migrator.is_buffer_config_default
109110

@@ -142,7 +143,7 @@ def test_mellanox_buffer_migrator_for_cold_reboot(self, sku_version, topo):
142143

143144
# Eventually, the config db should be migrated to the latest version
144145
expected_db = self.mock_dedicated_config_db(self.make_db_name_by_sku_topo_version(sku, topo, self.version_list[-1]))
145-
self.advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb)
146+
advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, self.version_list[-1])
146147
self.check_config_db(dbmgtr.configDB, expected_db.cfgdb)
147148
assert dbmgtr.mellanox_buffer_migrator.is_buffer_config_default
148149

@@ -158,7 +159,7 @@ def mellanox_buffer_migrator_warm_reboot_runner(self, input_config_db, input_app
158159
import db_migrator
159160
dbmgtr = db_migrator.DBMigrator(None)
160161
dbmgtr.migrate()
161-
self.advance_version_for_expected_database(dbmgtr.configDB, expected_config_db.cfgdb)
162+
advance_version_for_expected_database(dbmgtr.configDB, expected_config_db.cfgdb, self.version_list[-1])
162163
assert dbmgtr.mellanox_buffer_migrator.is_buffer_config_default == is_buffer_config_default_expected
163164
self.check_config_db(dbmgtr.configDB, expected_config_db.cfgdb)
164165
self.check_appl_db(dbmgtr.appDB, expected_appl_db)
@@ -210,8 +211,10 @@ def test_port_autoneg_migrator(self):
210211
import db_migrator
211212
dbmgtr = db_migrator.DBMigrator(None)
212213
dbmgtr.migrate()
214+
213215
dbconnector.dedicated_dbs['CONFIG_DB'] = os.path.join(mock_db_path, 'config_db', 'port-an-expected')
214216
expected_db = Db()
217+
advance_version_for_expected_database(dbmgtr.configDB, expected_db.cfgdb, 'version_2_0_1')
215218

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

0 commit comments

Comments
 (0)