Skip to content

Commit 9400691

Browse files
authored
Fix database initialization for db_migrator (#3100)
What I did db_migrator failed to initialize SonicDBConfig, and I fix this issue. How I did it If SonicDBConfig is already initialized, do not invoke initialize() again. How to verify it Run unit test, and verified on DUT.
1 parent 56dafb0 commit 9400691

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

scripts/db_migrator.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
import re
99

1010
from sonic_py_common import device_info, logger
11-
from swsscommon.swsscommon import SonicV2Connector, ConfigDBConnector, SonicDBConfig
11+
from swsscommon.swsscommon import SonicV2Connector, ConfigDBConnector
1212
from minigraph import parse_xml
1313
from utilities_common.helper import update_config
14+
from utilities_common.general import load_db_config
1415

1516
INIT_CFG_FILE = '/etc/sonic/init_cfg.json'
1617
MINIGRAPH_FILE = '/etc/sonic/minigraph.xml'
@@ -1241,10 +1242,7 @@ def main():
12411242
socket_path = args.socket
12421243
namespace = args.namespace
12431244

1244-
if args.namespace is not None:
1245-
SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace)
1246-
else:
1247-
SonicDBConfig.initialize()
1245+
load_db_config()
12481246

12491247
if socket_path:
12501248
dbmgtr = DBMigrator(namespace, socket=socket_path)

tests/db_migrator_test.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import os
22
import pytest
33
import sys
4-
4+
import argparse
5+
from unittest import mock
56
from deepdiff import DeepDiff
67

78
from swsscommon.swsscommon import SonicV2Connector
@@ -869,3 +870,18 @@ def test_golden_config_hostname(self):
869870
hostname = host.get('hostname', '')
870871
# hostname is from minigraph.xml
871872
assert hostname == 'SONiC-Dummy'
873+
874+
class TestMain(object):
875+
@classmethod
876+
def setup_class(cls):
877+
os.environ['UTILITIES_UNIT_TESTING'] = "2"
878+
879+
@classmethod
880+
def teardown_class(cls):
881+
os.environ['UTILITIES_UNIT_TESTING'] = "0"
882+
883+
@mock.patch('argparse.ArgumentParser.parse_args')
884+
def test_init(self, mock_args):
885+
mock_args.return_value=argparse.Namespace(namespace=None, operation='get_version', socket=None)
886+
import db_migrator
887+
db_migrator.main()

0 commit comments

Comments
 (0)