Skip to content

Commit

Permalink
Fix UT failed cause by change pycommon to use swsscommon (sonic-net#246)
Browse files Browse the repository at this point in the history
Fix UT failed cause by change sonic_py_common to use swss_common

#### Description
    Fix UT failed cause by change sonic_py_common to use swss_common:

        In current UT, we implement swsscommon mock class under sonic-pcied/tests/mocked_libs/swsscommon and load these mock libs by add the mock path in front of real swsscommon lib path with following code:

              # Add mocked_libs path so that the file under test can load mocked modules from there
              mocked_libs_path = os.path.join(tests_path, "mocked_libs")
              sys.path.insert(0, mocked_libs_path)

        However, because we change sonic_py_common to use swsscommon, so real version of swsscommon been load before we load mock lib. then the UT break with following error message:
              
              ______________ TestDaemonPcied.test_update_pcie_devices_status_db ______________
              self = <tests.test_DaemonPcied.TestDaemonPcied object at 0x7f29542655d0>
                  @mock.patch('pcied.load_platform_pcieutil', mock.MagicMock())
                  def test_update_pcie_devices_status_db(self):
               >       daemon_pcied = pcied.DaemonPcied(SYSLOG_IDENTIFIER)
              tests/test_DaemonPcied.py:160: 
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
              scripts/pcied:93: in __init__
                  self.device_table = swsscommon.Table(self.state_db, PCIE_DEVICE_TABLE_NAME)
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
              self = <swsscommon.swsscommon.Table;  >
              args = (<MagicMock name='mock()' id='139815470171344'>, 'PCIE_DEVICE')
                  def __init__(self, *args):
               >       this = _swsscommon.new_Table(*args)
               E       NotImplementedError: Wrong number or type of arguments for overloaded function 'new_Table'.
               E         Possible C/C++ prototypes are:
               E           swss::Table::Table(swss::DBConnector const *,std::string const &)
               E           swss::Table::Table(swss::RedisPipeline *,std::string const &,bool)


#### Motivation and Context
    pyswss will be deprecate, so sonic_py_common will changed to use swss_common.
    Some UT in this project failed because this change.

#### How Has This Been Tested?
    Pass all UT and sonic-buildimage E2E test.

#### Additional Information (Optional)
  • Loading branch information
liuh-80 authored Mar 17, 2022
1 parent c092300 commit f09bd31
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
9 changes: 9 additions & 0 deletions sonic-pcied/tests/mocked_libs/swsscommon/swsscommon.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,12 @@ def __repr__(self):

def __str__(self):
return repr(self.fv_dict)

class ConfigDBConnector:
pass

class SonicDBConfig:
pass

class SonicV2Connector:
pass
6 changes: 3 additions & 3 deletions sonic-pcied/tests/test_DaemonPcied.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,21 @@
else:
import mock

from sonic_py_common import daemon_base

from .mock_platform import MockPcieUtil

SYSLOG_IDENTIFIER = 'pcied_test'
NOT_AVAILABLE = 'N/A'

daemon_base.db_connect = mock.MagicMock()

tests_path = os.path.dirname(os.path.abspath(__file__))

# Add mocked_libs path so that the file under test can load mocked modules from there
mocked_libs_path = os.path.join(tests_path, "mocked_libs")
sys.path.insert(0, mocked_libs_path)

from sonic_py_common import daemon_base
daemon_base.db_connect = mock.MagicMock()

# Add path to the file under test so that we can load it
modules_path = os.path.dirname(tests_path)
scripts_path = os.path.join(modules_path, "scripts")
Expand Down
2 changes: 1 addition & 1 deletion sonic-pcied/tests/test_pcied.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
else:
from mock import MagicMock, patch, mock_open

from sonic_py_common import daemon_base, device_info
from .mock_platform import MockPcieUtil

tests_path = os.path.dirname(os.path.abspath(__file__))

# Add mocked_libs path so that the file under test can load mocked modules from there
mocked_libs_path = os.path.join(tests_path, "mocked_libs")
sys.path.insert(0, mocked_libs_path)
from sonic_py_common import daemon_base, device_info

# Add path to the file under test so that we can load it
modules_path = os.path.dirname(tests_path)
Expand Down

0 comments on commit f09bd31

Please sign in to comment.