diff --git a/dep/__init__.py b/dep/__init__.py
new file mode 100644
index 00000000..ae0043b7
--- /dev/null
+++ b/dep/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in
+#     the documentation and/or other materials provided with the
+#     distribution.
+#   * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dep/scapy_modules/__init__.py b/dep/scapy_modules/__init__.py
new file mode 100644
index 00000000..ae0043b7
--- /dev/null
+++ b/dep/scapy_modules/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in
+#     the documentation and/or other materials provided with the
+#     distribution.
+#   * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dts b/dts
deleted file mode 100755
index f408e5b9..00000000
--- a/dts
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-# <COPYRIGHT_TAG>
-
-PWD=`dirname $0`
-
-(cd $PWD/framework; ./main.py $@)
diff --git a/framework/__init__.py b/framework/__init__.py
new file mode 100644
index 00000000..ae0043b7
--- /dev/null
+++ b/framework/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in
+#     the documentation and/or other materials provided with the
+#     distribution.
+#   * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/framework/checkCase.py b/framework/checkCase.py
index 3c1db994..10410f49 100644
--- a/framework/checkCase.py
+++ b/framework/checkCase.py
@@ -2,8 +2,8 @@ import xlrd
 import collections
 import json
 
-from settings import get_nic_name, load_global_setting, HOST_DRIVER_SETTING
-from utils import RED
+from .settings import get_nic_name, load_global_setting, HOST_DRIVER_SETTING
+from .utils import RED
 
 filter_json_file = './conf/test_case_checklist.json'
 support_json_file = './conf/test_case_supportlist.json'
diff --git a/framework/config.py b/framework/config.py
index 88ae8ea5..00b96cb6 100644
--- a/framework/config.py
+++ b/framework/config.py
@@ -36,10 +36,10 @@ import os
 import re
 import configparser  # config parse module
 import argparse      # parse arguments module
-from settings import (IXIA, PKTGEN, PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK,
+from .settings import (IXIA, PKTGEN, PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK,
                       CONFIG_ROOT_PATH, SUITE_SECTION_NAME)
-from settings import load_global_setting, DTS_CFG_FOLDER
-from exception import ConfigParseException, VirtConfigParseException, PortConfigParseException
+from .settings import load_global_setting, DTS_CFG_FOLDER
+from .exception import ConfigParseException, VirtConfigParseException, PortConfigParseException
 
 PORTCONF = "%s/ports.cfg" % CONFIG_ROOT_PATH
 CRBCONF = "%s/crbs.cfg" % CONFIG_ROOT_PATH
diff --git a/framework/crb.py b/framework/crb.py
index 3964e213..5d37bc08 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -32,10 +32,10 @@
 import time
 import re
 import os
-from settings import TIMEOUT, IXIA
-from ssh_connection import SSHConnection
-from logger import getLogger
-from config import PortConf, PORTCONF, PktgenConf
+from .settings import TIMEOUT, IXIA
+from .ssh_connection import SSHConnection
+from .logger import getLogger
+from .config import PortConf, PORTCONF, PktgenConf
 
 """
 CRB (customer reference board) basic functions and handlers
@@ -578,7 +578,7 @@ class Crb(object):
         """
         Get OS type from execution configuration file.
         """
-        from dut import Dut
+        from .dut import Dut
         if isinstance(self, Dut) and 'OS' in self.crb:
             return str(self.crb['OS']).lower()
 
@@ -588,7 +588,7 @@ class Crb(object):
         """
         Check real OS type whether match configured type.
         """
-        from dut import Dut
+        from .dut import Dut
         expected = 'Linux.*#'
         if isinstance(self, Dut) and self.get_os_type() == 'freebsd':
             expected = 'FreeBSD.*#'
diff --git a/framework/crbs.py b/framework/crbs.py
index 2ff937ac..40587fcb 100644
--- a/framework/crbs.py
+++ b/framework/crbs.py
@@ -1,7 +1,7 @@
 """
 Static configuration data for any CRBs that can be used.
 """
-from settings import IXIA
+from .settings import IXIA
 
 crbs_desc = {
     'CrownPassCRB1':
diff --git a/framework/debugger.py b/framework/debugger.py
index 0eaf7377..3c9989eb 100644
--- a/framework/debugger.py
+++ b/framework/debugger.py
@@ -28,10 +28,10 @@ import signal
 import code
 import time
 import imp
-from settings import load_global_setting, DEBUG_SETTING, DTS_PARALLEL_SETTING
-from utils import get_subclasses, copy_instance_attr, GREEN
+from .settings import load_global_setting, DEBUG_SETTING, DTS_PARALLEL_SETTING
+from .utils import get_subclasses, copy_instance_attr, GREEN
 
-from test_case import TestCase
+from .test_case import TestCase
 
 console = None      # global console object
 debug_cmd = ''      # global debug state
@@ -59,7 +59,7 @@ def list_command():
     List all connection sessions and can be reference of connect command.
     """
     index = 0
-    from ssh_connection import CONNECTIONS
+    from .ssh_connection import CONNECTIONS
     for connection in CONNECTIONS:
         for name, session in list(connection.items()):
             console.push('print \'connect %d: %10s\'' % (index, name))
@@ -70,7 +70,7 @@ def connect_command(connect):
     """
     Connect to ssh session and give control to user.
     """
-    from ssh_connection import CONNECTIONS
+    from .ssh_connection import CONNECTIONS
     if type(connect) == int:
         name, session = list(CONNECTIONS[connect].items())[0]
         print(GREEN("Connecting to session[%s]" % name))
diff --git a/framework/dts.py b/framework/dts.py
index 6f621a51..cedcff72 100644
--- a/framework/dts.py
+++ b/framework/dts.py
@@ -32,7 +32,7 @@
 import re           # regular expressions module
 import configparser  # config parse module
 import os           # operation system module
-import texttable    # text format
+import framework.texttable as texttable    # text format
 import traceback    # exception traceback
 import inspect      # load attribute
 import atexit       # register callback when exit
@@ -41,24 +41,24 @@ import signal       # signal module for debug mode
 import time         # time module for unique output folder
 import copy         # copy module for duplicate variable
 
-import rst          # rst file support
+import framework.rst as rst          # rst file support
 import sys          # system module
-import settings     # dts settings
-from tester import Tester
-from dut import Dut
-from serializer import Serializer
-from test_case import TestCase
-from test_result import Result
-from stats_reporter import StatsReporter
-from excel_reporter import ExcelReporter
-from json_reporter import JSONReporter
-from exception import TimeoutException, ConfigParseException, VerifyFailure
-from logger import getLogger
-import logger
-import debugger
-from config import CrbsConf
-from checkCase import CheckCase
-from utils import (get_subclasses, copy_instance_attr, create_parallel_locks,
+import framework.settings as settings     # dts settings
+from .tester import Tester
+from .dut import Dut
+from .serializer import Serializer
+from .test_case import TestCase
+from .test_result import Result
+from .stats_reporter import StatsReporter
+from .excel_reporter import ExcelReporter
+from .json_reporter import JSONReporter
+from .exception import TimeoutException, ConfigParseException, VerifyFailure
+from .logger import getLogger
+import framework.logger as logger
+import framework.debugger as debugger
+from .config import CrbsConf
+from .checkCase import CheckCase
+from .utils import (get_subclasses, copy_instance_attr, create_parallel_locks,
                    check_dts_python_version)
 import sys
 import imp
diff --git a/framework/dut.py b/framework/dut.py
index f5481d06..80d76a85 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -32,14 +32,14 @@
 import os
 import re
 import time
-import settings
-from config import PortConf,AppNameConf
-from settings import NICS, LOG_NAME_SEP
-from ssh_connection import SSHConnection
-from crb import Crb
-from net_device import GetNicObj
-from virt_resource import VirtResource
-from utils import RED, remove_old_rsa_key
+import framework.settings as settings
+from .config import PortConf,AppNameConf
+from .settings import NICS, LOG_NAME_SEP
+from .ssh_connection import SSHConnection
+from .crb import Crb
+from nics.net_device import GetNicObj
+from .virt_resource import VirtResource
+from .utils import RED, remove_old_rsa_key
 from uuid import uuid4
 
 
diff --git a/framework/etgen.py b/framework/etgen.py
index acfa2960..b4025055 100644
--- a/framework/etgen.py
+++ b/framework/etgen.py
@@ -32,12 +32,12 @@
 import re
 import string
 import time
-from config import IxiaConf
-from ssh_connection import SSHConnection
-from settings import SCAPY2IXIA
-from logger import getLogger
-from exception import VerifyFailure
-from utils import create_mask
+from .config import IxiaConf
+from .ssh_connection import SSHConnection
+from .settings import SCAPY2IXIA
+from .logger import getLogger
+from .exception import VerifyFailure
+from .utils import create_mask
 
 
 class SoftwarePacketGenerator():
diff --git a/framework/flow/flow.py b/framework/flow/flow.py
index 2cce0796..233a7e8c 100644
--- a/framework/flow/flow.py
+++ b/framework/flow/flow.py
@@ -40,11 +40,11 @@ from typing import List, FrozenSet, Union, Iterable, Tuple
 
 from scapy.layers.l2 import Ether
 
-from flow.enums import FlowItemType, FlowActionType
-from flow.exceptions import InvalidFlowItemException
-from flow.flow_action_items import ActionFlowItem
-from flow.flow_items import FlowItem
-from flow.flow_pattern_items import PatternFlowItem, TUNNELING_PROTOCOLS
+from .enums import FlowItemType, FlowActionType
+from .exceptions import InvalidFlowItemException
+from .flow_action_items import ActionFlowItem
+from .flow_items import FlowItem
+from .flow_pattern_items import PatternFlowItem, TUNNELING_PROTOCOLS
 
 # Get reserved mac addresses
 NEVER_MATCH_PACKET = Ether(src="", dst="") / ('\x00' * 64)
diff --git a/framework/flow/flow_action_items.py b/framework/flow/flow_action_items.py
index b08272f9..5416f9ab 100644
--- a/framework/flow/flow_action_items.py
+++ b/framework/flow/flow_action_items.py
@@ -32,8 +32,8 @@
 
 from typing import FrozenSet, Dict, Tuple
 
-from flow.enums import FlowActionType
-from flow.flow_pattern_items import FlowItem
+from .enums import FlowActionType
+from .flow_items import FlowItem
 
 ALWAYS_ALLOWED_ACTIONS = {FlowActionType.VOID}
 
diff --git a/framework/flow/flow_items.py b/framework/flow/flow_items.py
index d7be3456..33e6a906 100644
--- a/framework/flow/flow_items.py
+++ b/framework/flow/flow_items.py
@@ -37,10 +37,10 @@ import itertools
 from functools import reduce
 from typing import FrozenSet, Union, Any, Set, Dict, Tuple, Iterable, Hashable
 
-from flow.enums import FlowItemType, FlowActionType
-from flow.exceptions import InvalidFlowItemException
-from flow import flow_action_items
-from flow import flow_pattern_items
+from .enums import FlowItemType, FlowActionType
+from .exceptions import InvalidFlowItemException
+import framework.flow.flow_action_items as flow_action_items
+import framework.flow.flow_pattern_items as flow_pattern_items
 
 PATTERN_ACTION_ITEMS = {FlowItemType.INVERT, FlowItemType.VOID, FlowItemType.MARK, FlowItemType.META}
 
@@ -90,7 +90,7 @@ class FlowItem(object):
             raise InvalidFlowItemException(self, other)
         elif other.type in self.valid_next_items:
             # This import is in here so there is no circular import
-            from flow.flow import Flow
+            from .flow import Flow
             if isinstance(self, flow_pattern_items.PatternFlowItem):
                 return Flow(pattern_items=[self, other])
             elif isinstance(self, flow_action_items.ActionFlowItem):
diff --git a/framework/flow/flow_pattern_items.py b/framework/flow/flow_pattern_items.py
index bb143067..934efa7e 100644
--- a/framework/flow/flow_pattern_items.py
+++ b/framework/flow/flow_pattern_items.py
@@ -40,9 +40,9 @@ from scapy.layers.sctp import SCTP
 from scapy.layers.vxlan import VXLAN
 from scapy.packet import Packet
 
-from flow.enums import FlowItemType
-from flow.exceptions import InvalidFlowItemException
-from flow.flow_items import FlowItem
+from .enums import FlowItemType
+from .exceptions import InvalidFlowItemException
+from .flow_items import FlowItem
 
 ALWAYS_ALLOWED_ITEMS = {
     FlowItemType.RAW,
@@ -89,7 +89,7 @@ class PatternFlowItem(FlowItem):
         if other.type in self.valid_next_items or \
                 other.type == FlowItemType.END:
             # This import is in here so there is no circular import
-            from flow.flow import Flow
+            from flow import Flow
             return Flow(pattern_items=[self, other])
         else:
             raise InvalidFlowItemException(self, other)
diff --git a/framework/flow/flow_rule.py b/framework/flow/flow_rule.py
index 361afae3..e1a21a2f 100644
--- a/framework/flow/flow_rule.py
+++ b/framework/flow/flow_rule.py
@@ -32,9 +32,9 @@
 
 from typing import Union
 
-from flow.enums import *
-from flow.flow import Flow
-import flow.flow_action_items as flow_action_items
+from .enums import *
+from .flow import Flow
+import framework.flow.flow_action_items as flow_action_items
 
 
 class FlowPattern(Flow):
diff --git a/framework/flow/generator.py b/framework/flow/generator.py
index 0fe52b2b..4133b75c 100644
--- a/framework/flow/generator.py
+++ b/framework/flow/generator.py
@@ -40,11 +40,11 @@ from typing import List, Set, Generator, Iterable, FrozenSet, Tuple
 
 import numpy as np
 
-from flow.flow import Flow
-from flow.flow_pattern_items import PATTERN_ITEMS_TYPE_CLASS_MAPPING, PatternFlowItem, \
+from .flow import Flow
+from .flow_pattern_items import PATTERN_ITEMS_TYPE_CLASS_MAPPING, PatternFlowItem, \
     PATTERN_OPERATION_TYPES, TUNNELING_PROTOCOL_TYPES, ALWAYS_ALLOWED_ITEMS, FlowItemEnd, FlowItemVxlan, FlowItemIpv4, \
     FlowItemEth, FlowItemGre, L3_FLOW_TYPES, FlowItemVlan, FlowItemUdp
-from flow.flow_rule import FlowItemType
+from .flow_rule import FlowItemType
 
 
 def get_valid_next_protocols(current_protocol, protocol_stack, type_denylist):
diff --git a/framework/ixia_network/ixnet_stream.py b/framework/ixia_network/ixnet_stream.py
index 56cd53b6..52a447ed 100644
--- a/framework/ixia_network/ixnet_stream.py
+++ b/framework/ixia_network/ixnet_stream.py
@@ -31,7 +31,7 @@
 import os
 import json
 
-from utils import convert_int2ip, convert_ip2int
+from framework.utils import convert_int2ip, convert_ip2int
 
 
 class IxnetConfigStream(object):
diff --git a/framework/logger.py b/framework/logger.py
index 63e1d831..445f40a9 100644
--- a/framework/logger.py
+++ b/framework/logger.py
@@ -35,8 +35,8 @@ import sys
 import inspect
 import re
 
-from settings import LOG_NAME_SEP, FOLDERS, load_global_setting, DTS_PARALLEL_SETTING
-from utils import RED
+from .settings import LOG_NAME_SEP, FOLDERS, load_global_setting, DTS_PARALLEL_SETTING
+from .utils import RED
 
 """
 DTS logger module with several log level. DTS framework and TestSuite log
diff --git a/framework/multiple_vm.py b/framework/multiple_vm.py
index 68d2f5ec..75cf1ce6 100644
--- a/framework/multiple_vm.py
+++ b/framework/multiple_vm.py
@@ -3,9 +3,9 @@ import re
 import threadpool
 import traceback
 import threading
-from settings import DTS_ERR_TBL, save_global_setting, DTS_PARALLEL_SETTING
-from utils import RED
-from logger import getLogger
+from .settings import DTS_ERR_TBL, save_global_setting, DTS_PARALLEL_SETTING
+from .utils import RED
+from .logger import getLogger
 
 
 class MultipleVM(object):
@@ -74,7 +74,7 @@ class MultipleVM(object):
         self.logger.info("Parallel task start for DUT%d %s" % (dut_id, vm_name))
         threading.current_thread().name = vm_name
 
-        from qemu_kvm import QEMUKvm
+        from .qemu_kvm import QEMUKvm
         # VM configured by configuration file 
         if 'virt_config' in args:
             suite_name = args['virt_config']['suite_name']
diff --git a/framework/packet.py b/framework/packet.py
index 6d9bf246..700fd731 100644
--- a/framework/packet.py
+++ b/framework/packet.py
@@ -36,6 +36,7 @@ Base on scapy(python program for packet manipulation)
 from socket import AF_INET6
 from importlib import import_module
 from scapy.all import *
+from dep.scapy_modules.Dot1BR import Dot1BR
 # load extension layers
 exec_file = os.path.realpath(__file__)
 DTS_PATH = exec_file.replace('/framework/packet.py', '')
@@ -44,43 +45,30 @@ TMP_PATH = DTS_PATH[:-1] + '/output/tmp/pcap/' if exec_file.endswith('.pyc') els
 if not os.path.exists(TMP_PATH):
     os.system('mkdir -p %s' % TMP_PATH)
 
-DEP_FOLDER = DTS_PATH + '/dep'
-sys.path.append(DEP_FOLDER)
-sys.path.append(DEP_FOLDER + '/scapy_modules')
 
-from utils import convert_ip2int
-from utils import convert_int2ip
+from .utils import convert_ip2int
+from .utils import convert_int2ip
 
 scapy_modules_required = {'gtp': ['GTP_U_Header', 'GTPPDUSessionContainer'],
                           'lldp': ['LLDPDU', 'LLDPDUManagementAddress'],
-                          'Dot1BR': ['Dot1BR'],
                           'pfcp': ['PFCP'],
                           'nsh': ['NSH'],
                           'igmp': ['IGMP'],
                           'mpls': ['MPLS'],
                           }
-local_modules = [m[:-3] for m in os.listdir(DEP_FOLDER + '/scapy_modules') if (m.endswith('.py') and not m.startswith('__'))]
 
 for m in scapy_modules_required:
     try:
-        if m in local_modules:
-            module = import_module(m)
-            for clazz in scapy_modules_required[m]:
-                locals().update({clazz: getattr(module, clazz)})
-        else:
-            module = import_module(f'scapy.contrib.{m}')
-            for clazz in scapy_modules_required[m]:
-                locals().update({clazz: getattr(module, clazz)})
+        module = import_module(f'scapy.contrib.{m}')
+        for clazz in scapy_modules_required[m]:
+            locals().update({clazz: getattr(module, clazz)})
     except Exception as e:
         print(e)
 
 def get_scapy_module_impcmd():
     cmd_li = list()
     for m in scapy_modules_required:
-        if m in local_modules:
-            cmd_li.append(f'from {m} import {",".join(scapy_modules_required[m])}')
-        else:
-            cmd_li.append(f'from scapy.contrib.{m} import {",".join(scapy_modules_required[m])}')
+        cmd_li.append(f'from scapy.contrib.{m} import {",".join(scapy_modules_required[m])}')
     return ';'.join(cmd_li)
 
 SCAPY_IMP_CMD = get_scapy_module_impcmd()
diff --git a/framework/pktgen.py b/framework/pktgen.py
index a00bc090..f6bece56 100644
--- a/framework/pktgen.py
+++ b/framework/pktgen.py
@@ -39,15 +39,15 @@ from scapy.fields import ConditionalField
 from scapy.utils import rdpcap
 
 # dts libs
-from utils import (convert_int2ip, convert_ip2int,
+from .utils import (convert_int2ip, convert_ip2int,
                    convert_mac2long, convert_mac2str)
 
-from pktgen_base import (PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK, STAT_TYPE,
+from .pktgen_base import (PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK, STAT_TYPE,
                          TRANSMIT_CONT, TRANSMIT_M_BURST, TRANSMIT_S_BURST)
-from pktgen_base import DpdkPacketGenerator
-from pktgen_ixia import IxiaPacketGenerator
-from pktgen_ixia_network import IxNetworkPacketGenerator
-from pktgen_trex import TrexPacketGenerator
+from .pktgen_base import DpdkPacketGenerator
+from .pktgen_ixia import IxiaPacketGenerator
+from .pktgen_ixia_network import IxNetworkPacketGenerator
+from .pktgen_trex import TrexPacketGenerator
 
 
 class PacketGeneratorHelper(object):
diff --git a/framework/pktgen_base.py b/framework/pktgen_base.py
index f30785d0..88d053c1 100644
--- a/framework/pktgen_base.py
+++ b/framework/pktgen_base.py
@@ -33,13 +33,13 @@ import time
 import logging
 from abc import abstractmethod
 from copy import deepcopy
-from logger import getLogger
+from .logger import getLogger
 from pprint import pformat
 from enum import Enum, unique
 
-from config import PktgenConf
+from .config import PktgenConf
 # packet generator name
-from settings import PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK, PKTGEN
+from .settings import PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK, PKTGEN
 
 # macro definition
 TRANSMIT_CONT = 'continuous'
diff --git a/framework/pktgen_ixia.py b/framework/pktgen_ixia.py
index 0273f3ad..fbb55943 100644
--- a/framework/pktgen_ixia.py
+++ b/framework/pktgen_ixia.py
@@ -34,12 +34,12 @@ import string
 import time
 from pprint import pformat
 
-from ssh_connection import SSHConnection
-from settings import SCAPY2IXIA
-from utils import (convert_int2ip, convert_ip2int,
+from .ssh_connection import SSHConnection
+from .settings import SCAPY2IXIA
+from .utils import (convert_int2ip, convert_ip2int,
                    convert_mac2long, convert_mac2str)
 
-from pktgen_base import (PacketGenerator, PKTGEN_IXIA,
+from .pktgen_base import (PacketGenerator, PKTGEN_IXIA,
                          TRANSMIT_CONT, TRANSMIT_M_BURST, TRANSMIT_S_BURST)
 
 from scapy.packet import Packet
diff --git a/framework/pktgen_ixia_network.py b/framework/pktgen_ixia_network.py
index 3cca2578..c9800e9f 100644
--- a/framework/pktgen_ixia_network.py
+++ b/framework/pktgen_ixia_network.py
@@ -33,7 +33,7 @@ import time
 import traceback
 from pprint import pformat
 
-from pktgen_base import PacketGenerator, PKTGEN_IXIA_NETWORK
+from .pktgen_base import PacketGenerator, PKTGEN_IXIA_NETWORK
 
 
 class IxNetworkPacketGenerator(PacketGenerator):
diff --git a/framework/pktgen_trex.py b/framework/pktgen_trex.py
index c0b13428..59f11754 100644
--- a/framework/pktgen_trex.py
+++ b/framework/pktgen_trex.py
@@ -35,7 +35,7 @@ import time
 import logging
 from pprint import pformat
 
-from pktgen_base import (PacketGenerator, PKTGEN_TREX, PKTGEN,
+from .pktgen_base import (PacketGenerator, PKTGEN_TREX, PKTGEN,
                          TRANSMIT_CONT, TRANSMIT_M_BURST, TRANSMIT_S_BURST)
 
 
diff --git a/framework/plotting.py b/framework/plotting.py
index 7d036fe4..ecae9607 100644
--- a/framework/plotting.py
+++ b/framework/plotting.py
@@ -31,12 +31,12 @@
 
 import os
 import shutil
-from plotgraph import Plot2DGraph
+from .plotgraph import Plot2DGraph
 from docutils.parsers.rst.directives import path
-from rst import path2Result
-import plotgraph
-import utils
-from exception import VerifyFailure
+from .rst import path2Result
+import framework.plotgraph as plotgraph
+import framework.utils as utils
+from .exception import VerifyFailure
 
 
 """
diff --git a/framework/pmd_output.py b/framework/pmd_output.py
index 838fa0bd..4161f4ad 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -32,8 +32,8 @@
 import os
 import re
 from time import sleep
-from settings import TIMEOUT, PROTOCOL_PACKET_SIZE, get_nic_driver
-from utils import create_mask
+from .settings import TIMEOUT, PROTOCOL_PACKET_SIZE, get_nic_driver
+from .utils import create_mask
 
 
 class PmdOutput():
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index d96f8d63..0d52dadd 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -32,16 +32,16 @@
 import os
 import re
 
-from settings import NICS, load_global_setting, save_global_setting, accepted_nic
-from settings import DPDK_RXMODE_SETTING, HOST_DRIVER_SETTING, HOST_DRIVER_MODE_SETTING, HOST_BUILD_TYPE_SETTING
-from settings import HOST_SHARED_LIB_SETTING, HOST_SHARED_LIB_PATH
-from ssh_connection import SSHConnection
-from crb import Crb
-from dut import Dut
-from tester import Tester
-from logger import getLogger
-from settings import IXIA, DRIVERS
-from utils import RED
+from .settings import NICS, load_global_setting, save_global_setting, accepted_nic
+from .settings import DPDK_RXMODE_SETTING, HOST_DRIVER_SETTING, HOST_DRIVER_MODE_SETTING, HOST_BUILD_TYPE_SETTING
+from .settings import HOST_SHARED_LIB_SETTING, HOST_SHARED_LIB_PATH
+from .ssh_connection import SSHConnection
+from .crb import Crb
+from .dut import Dut
+from .tester import Tester
+from .logger import getLogger
+from .settings import IXIA, DRIVERS
+from .utils import RED
 
 
 class DPDKdut(Dut):
diff --git a/framework/qemu_kvm.py b/framework/qemu_kvm.py
index 757737ec..e35d7499 100644
--- a/framework/qemu_kvm.py
+++ b/framework/qemu_kvm.py
@@ -34,11 +34,11 @@ import time
 import re
 import os
 
-from virt_base import VirtBase
-from virt_base import ST_NOTSTART, ST_PAUSE, ST_RUNNING, ST_UNKNOWN
-from exception import StartVMFailedException
-from settings import get_host_ip, load_global_setting, DTS_PARALLEL_SETTING
-from utils import parallel_lock, RED
+from .virt_base import VirtBase
+from .virt_base import ST_NOTSTART, ST_PAUSE, ST_RUNNING, ST_UNKNOWN
+from .exception import StartVMFailedException
+from .settings import get_host_ip, load_global_setting, DTS_PARALLEL_SETTING
+from .utils import parallel_lock, RED
 
 # This name is directly defined in the qemu guest service
 # So you can not change it except it is changed by the service
diff --git a/framework/qemu_libvirt.py b/framework/qemu_libvirt.py
index e0aeb6c6..3f014ce3 100644
--- a/framework/qemu_libvirt.py
+++ b/framework/qemu_libvirt.py
@@ -33,15 +33,15 @@ import time
 import re
 import os
 
-import utils
-from dut import Dut
-from ssh_connection import SSHConnection
-from virt_base import VirtBase
-from virt_resource import VirtResource
-from logger import getLogger
-from config import VirtConf
-from config import VIRTCONF
-from exception import StartVMFailedException
+import framework.utils as utils
+from .dut import Dut
+from .ssh_connection import SSHConnection
+from .virt_base import VirtBase
+from .virt_resource import VirtResource
+from .logger import getLogger
+from .config import VirtConf
+from .config import VIRTCONF
+from .exception import StartVMFailedException
 import xml.etree.ElementTree as ET
 from xml.etree.ElementTree import ElementTree
 from xml.dom import minidom
diff --git a/framework/rst.py b/framework/rst.py
index 2b8e6132..bd36a015 100644
--- a/framework/rst.py
+++ b/framework/rst.py
@@ -32,13 +32,13 @@
 import os
 import shutil
 import re
-from exception import VerifyFailure
+from .exception import VerifyFailure
 
 """
 Generate Rst Test Result Report
 
 Example:
-    import rst
+    import framework.rst as rst
     rst.write_title("Test Case: " + test_case.__name__)
     out = table.draw()
     rst.write_text('\n' + out + '\n\n')
diff --git a/framework/ssh_connection.py b/framework/ssh_connection.py
index c9886b2b..a3be06c2 100644
--- a/framework/ssh_connection.py
+++ b/framework/ssh_connection.py
@@ -30,7 +30,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 from ssh_pexpect import SSHPexpect
-from settings import USERNAME
+from .settings import USERNAME
 
 """
 Global structure for saving connections
diff --git a/framework/ssh_pexpect.py b/framework/ssh_pexpect.py
index fbc7dd4a..d81ae98b 100644
--- a/framework/ssh_pexpect.py
+++ b/framework/ssh_pexpect.py
@@ -1,9 +1,9 @@
 import time
 import pexpect
 from pexpect import pxssh
-from debugger import ignore_keyintr, aware_keyintr
-from exception import TimeoutException, SSHConnectionException, SSHSessionDeadException
-from utils import RED, GREEN, parallel_lock
+from .debugger import ignore_keyintr, aware_keyintr
+from .exception import TimeoutException, SSHConnectionException, SSHSessionDeadException
+from .utils import RED, GREEN, parallel_lock
 
 """
 Module handle ssh sessions between tester and DUT.
diff --git a/framework/test_case.py b/framework/test_case.py
index 98b716b9..650f9f05 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -33,21 +33,21 @@
 A base class for creating DTF test cases.
 """
 import re
-import debugger
+import framework.debugger as debugger
 import traceback
 import signal
 import time
 
-from exception import VerifyFailure, VerifySkip, TimeoutException
-from settings import DRIVERS, NICS, get_nic_name, load_global_setting
-from settings import PERF_SETTING, FUNC_SETTING, DEBUG_SETTING
-from settings import DEBUG_CASE_SETTING, HOST_DRIVER_SETTING
-from settings import UPDATE_EXPECTED, SUITE_SECTION_NAME
-from rst import RstReport
-from test_result import ResultTable, Result
-from logger import getLogger
-from config import SuiteConf
-from utils import BLUE, RED
+from .exception import VerifyFailure, VerifySkip, TimeoutException
+from .settings import DRIVERS, NICS, get_nic_name, load_global_setting
+from .settings import PERF_SETTING, FUNC_SETTING, DEBUG_SETTING
+from .settings import DEBUG_CASE_SETTING, HOST_DRIVER_SETTING
+from .settings import UPDATE_EXPECTED, SUITE_SECTION_NAME
+from .rst import RstReport
+from .test_result import ResultTable, Result
+from .logger import getLogger
+from .config import SuiteConf
+from .utils import BLUE, RED
 from functools import wraps
 
 class TestCase(object):
diff --git a/framework/test_result.py b/framework/test_result.py
index a718034d..a5b8e88a 100644
--- a/framework/test_result.py
+++ b/framework/test_result.py
@@ -32,7 +32,7 @@
 """
 Generic result container and reporters
 """
-import texttable    # text format
+import framework.texttable as texttable    # text format
 
 
 class Result(object):
diff --git a/framework/tester.py b/framework/tester.py
index ec233b8a..17c0f5cc 100644
--- a/framework/tester.py
+++ b/framework/tester.py
@@ -37,19 +37,19 @@ import re
 import subprocess
 import os
 from time import sleep
-from settings import NICS, load_global_setting, PERF_SETTING
-from settings import IXIA, USERNAME, PKTGEN, PKTGEN_GRP
-from crb import Crb
-from net_device import GetNicObj
-from etgen import IxiaPacketGenerator, SoftwarePacketGenerator
+from .settings import NICS, load_global_setting, PERF_SETTING
+from .settings import IXIA, USERNAME, PKTGEN, PKTGEN_GRP
+from .crb import Crb
+from nics.net_device import GetNicObj
+from .etgen import IxiaPacketGenerator, SoftwarePacketGenerator
 import random
-from utils import (GREEN, convert_int2ip, convert_ip2int,
+from .utils import (GREEN, convert_int2ip, convert_ip2int,
                    check_crb_python_version)
-from exception import ParameterInvalidException
+from .exception import ParameterInvalidException
 from multiprocessing import Process
-from pktgen import getPacketGenerator
-from config import PktgenConf
-from packet import SCAPY_IMP_CMD
+from .pktgen import getPacketGenerator
+from .config import PktgenConf
+from .packet import SCAPY_IMP_CMD
 
 class Tester(Crb):
 
diff --git a/framework/virt_base.py b/framework/virt_base.py
index f19cbc4b..b991fb3c 100644
--- a/framework/virt_base.py
+++ b/framework/virt_base.py
@@ -35,14 +35,14 @@ import threading
 from random import randint
 
 
-import utils
-import exception
-from dut import Dut
-from config import VirtConf
-from config import VIRTCONF
-from logger import getLogger
-from settings import CONFIG_ROOT_PATH
-from virt_dut import VirtDut
+import framework.utils as utils
+import framework.exception as exception
+from .dut import Dut
+from .config import VirtConf
+from .config import VIRTCONF
+from .logger import getLogger
+from .settings import CONFIG_ROOT_PATH
+from .virt_dut import VirtDut
 
 ST_NOTSTART = "NOTSTART"
 ST_PAUSE = "PAUSE"
diff --git a/framework/virt_common.py b/framework/virt_common.py
index 628cadf7..6708315a 100644
--- a/framework/virt_common.py
+++ b/framework/virt_common.py
@@ -30,11 +30,11 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 import os
 
-from config import VirtConf
-from settings import CONFIG_ROOT_PATH
+from .config import VirtConf
+from .settings import CONFIG_ROOT_PATH
 
-from qemu_kvm import QEMUKvm
-from qemu_libvirt import LibvirtKvm
+from .qemu_kvm import QEMUKvm
+from .qemu_libvirt import LibvirtKvm
 
 def VM(dut, vm_name, suite_name):
     conf = VirtConf(CONFIG_ROOT_PATH + os.sep + suite_name + '.cfg')
diff --git a/framework/virt_dut.py b/framework/virt_dut.py
index 9b0126b3..2aceab24 100644
--- a/framework/virt_dut.py
+++ b/framework/virt_dut.py
@@ -32,14 +32,14 @@
 import os
 import re
 import time
-import settings
-from utils import RED, parallel_lock
-from config import PortConf, AppNameConf
-from settings import NICS, LOG_NAME_SEP, get_netdev, load_global_setting, HOST_BUILD_TYPE_SETTING
-from project_dpdk import DPDKdut
-from dut import Dut
-from net_device import GetNicObj
-from net_device import RemoveNicObj
+import framework.settings as settings
+from .utils import RED, parallel_lock
+from .config import PortConf, AppNameConf
+from .settings import NICS, LOG_NAME_SEP, get_netdev, load_global_setting, HOST_BUILD_TYPE_SETTING
+from .project_dpdk import DPDKdut
+from .dut import Dut
+from nics.net_device import GetNicObj
+from nics.net_device import RemoveNicObj
 
 
 class VirtDut(DPDKdut):
diff --git a/framework/virt_resource.py b/framework/virt_resource.py
index 6ae2a28b..2bed1157 100644
--- a/framework/virt_resource.py
+++ b/framework/virt_resource.py
@@ -30,7 +30,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 from random import randint
 
-from utils import get_obj_funcs, parallel_lock, RED
+from .utils import get_obj_funcs, parallel_lock, RED
 
 INIT_FREE_PORT = 6000
 INIT_SERIAL_PORT = 7000
diff --git a/framework/virt_scene.py b/framework/virt_scene.py
index e67b3b6b..95350b1c 100644
--- a/framework/virt_scene.py
+++ b/framework/virt_scene.py
@@ -29,15 +29,15 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 import time
-import utils
-
-from settings import CONFIG_ROOT_PATH, get_netdev
-from config import VirtConf
-from config import VIRTCONF
-from exception import *
-from qemu_kvm import QEMUKvm
-from pmd_output import PmdOutput
-from utils import create_mask
+import framework.utils as utils
+
+from .settings import CONFIG_ROOT_PATH, get_netdev
+from .config import VirtConf
+from .config import VIRTCONF
+from .exception import *
+from .qemu_kvm import QEMUKvm
+from .pmd_output import PmdOutput
+from .utils import create_mask
 
 # scenario module for handling scenario
 # 1. load configurations
diff --git a/framework/main.py b/main.py
similarity index 96%
rename from framework/main.py
rename to main.py
index a081b85d..46f3d0ec 100755
--- a/framework/main.py
+++ b/main.py
@@ -38,16 +38,11 @@ import os
 import sys
 import argparse
 import subprocess
+from framework import dts
 
 # change operation directory
-os.chdir("../")
 cwd = os.getcwd()
-sys.path.append(cwd + '/nics')
-sys.path.append(cwd + '/framework')
-#sys.path.append(cwd + '/tests') # suites module path should be loaded in dts/run_all, not here
-sys.path.append(cwd + '/dep')
 
-import dts
 
 def git_build_package(gitLabel, pkgName):
     """
diff --git a/nics/__init__.py b/nics/__init__.py
new file mode 100644
index 00000000..ae0043b7
--- /dev/null
+++ b/nics/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in
+#     the documentation and/or other materials provided with the
+#     distribution.
+#   * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/nics/net_device.py b/nics/net_device.py
index 3ddfc4eb..38888e44 100644
--- a/nics/net_device.py
+++ b/nics/net_device.py
@@ -36,10 +36,10 @@ from functools import wraps
 import time
 
 
-import settings
-from crb import Crb
-from settings import TIMEOUT, HEADER_SIZE
-from utils import RED
+import framework.settings as settings
+from framework.crb import Crb
+from framework.settings import TIMEOUT, HEADER_SIZE
+from framework.utils import RED
 
 NICS_LIST = []      # global list for save nic objects
 
diff --git a/nics/perf_report.py b/nics/perf_report.py
index b80067ba..41161f46 100644
--- a/nics/perf_report.py
+++ b/nics/perf_report.py
@@ -41,8 +41,8 @@ from email.mime.multipart import MIMEMultipart
 from collections import OrderedDict
 #install GitPython
 from git import Repo
-from system_info import SystemInfo
-import utils
+from .system_info import SystemInfo
+import framework.utils as utils
 
 def get_dpdk_git_info(repo_dir="/root/dpdk"):
 
@@ -63,14 +63,14 @@ def get_dpdk_git_info(repo_dir="/root/dpdk"):
     return commit
 
 def generate_html_report(file_tpl, perf_data, git_info, nic_info, system_info):
-   
+
     if not os.path.exists(file_tpl):
         return None
 
     templateLoader = jinja2.FileSystemLoader(searchpath = "/")
     templateEnv = jinja2.Environment(loader=templateLoader)
     template = templateEnv.get_template(file_tpl)
- 
+
     templateVars = { "title" : "Daily Performance Test Report", \
                      "test_results" : perf_data, \
                      "system_infos" : system_info, \
@@ -106,6 +106,6 @@ def send_email(sender, mailto, message, smtp_server):
         print(utils.RED("Failed to send email " + str(e)))
 
 def send_html_report(sender, mailto, subject, html_msg, smtp_server):
-    
+
     message = html_message(sender, mailto, subject, html_msg)
     send_email(sender, mailto, message, smtp_server)
diff --git a/tests/TestSuite_ABI_stable.py b/tests/TestSuite_ABI_stable.py
index 522296ad..c24bb1c6 100644
--- a/tests/TestSuite_ABI_stable.py
+++ b/tests/TestSuite_ABI_stable.py
@@ -51,12 +51,12 @@ DPDK Test suite.
 Test support of ABI .
 
 """
-import utils
+import framework.utils as utils
 import time
 
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import load_global_setting, HOST_SHARED_LIB_SETTING, HOST_SHARED_LIB_PATH
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import load_global_setting, HOST_SHARED_LIB_SETTING, HOST_SHARED_LIB_PATH
 
 
 class TestABIStable(TestCase):
diff --git a/tests/TestSuite_acl.py b/tests/TestSuite_acl.py
index 963f3fb5..e713ed0d 100644
--- a/tests/TestSuite_acl.py
+++ b/tests/TestSuite_acl.py
@@ -30,7 +30,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 class TestACL(TestCase):
diff --git a/tests/TestSuite_af_xdp_2.py b/tests/TestSuite_af_xdp_2.py
index 40a3d416..fffd991b 100644
--- a/tests/TestSuite_af_xdp_2.py
+++ b/tests/TestSuite_af_xdp_2.py
@@ -32,10 +32,10 @@
 import os
 import re
 import time
-from settings import HEADER_SIZE
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+from framework.settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestAfXdp(TestCase):
diff --git a/tests/TestSuite_blocklist.py b/tests/TestSuite_blocklist.py
index 3692dfbb..c64c9c98 100644
--- a/tests/TestSuite_blocklist.py
+++ b/tests/TestSuite_blocklist.py
@@ -33,10 +33,10 @@
 DPDK Test suite.
 Test device blocklisting.
 """
-import utils
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import DRIVERS
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
 
 class TestBlockList(TestCase):
     def set_up_all(self):
diff --git a/tests/TestSuite_cbdma.py b/tests/TestSuite_cbdma.py
index 0cf598dc..ba553f05 100644
--- a/tests/TestSuite_cbdma.py
+++ b/tests/TestSuite_cbdma.py
@@ -33,13 +33,13 @@
 DPDK Test suite.
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
-from test_case import TestCase
-from packet import Packet
-from pktgen import TRANSMIT_CONT
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import TRANSMIT_CONT
+from framework.pmd_output import PmdOutput
 
 
 class TestCBDMA(TestCase):
diff --git a/tests/TestSuite_checksum_offload.py b/tests/TestSuite_checksum_offload.py
index eee09105..37eea232 100644
--- a/tests/TestSuite_checksum_offload.py
+++ b/tests/TestSuite_checksum_offload.py
@@ -45,10 +45,10 @@ from typing import List, Union, Tuple, Pattern
 
 import time
 
-from rst import RstReport
-import utils
-from exception import VerifyFailure
-from pktgen import PacketGeneratorHelper
+from framework.rst import RstReport
+import framework.utils as utils
+from framework.exception import VerifyFailure
+from framework.pktgen import PacketGeneratorHelper
 from scapy.layers.inet import UDP, TCP, IP
 from scapy.layers.inet6 import IPv6
 from scapy.layers.l2 import Ether, GRE
@@ -56,16 +56,16 @@ from scapy.layers.sctp import SCTP
 from scapy.layers.vxlan import VXLAN
 from scapy.packet import Raw
 from scapy.utils import wrpcap, rdpcap
-from test_capabilities import DRIVER_TEST_LACK_CAPA
-from test_case import TestCase
+from framework.test_capabilities import DRIVER_TEST_LACK_CAPA
+from framework.test_case import TestCase
 
-from pmd_output import PmdOutput
-from test_capabilities import DRIVER_TEST_LACK_CAPA
-from pktgen import PacketGeneratorHelper
-from exception import VerifyFailure
-import packet
+from framework.pmd_output import PmdOutput
+from framework.test_capabilities import DRIVER_TEST_LACK_CAPA
+from framework.pktgen import PacketGeneratorHelper
+from framework.exception import VerifyFailure
+import framework.packet as packet
 
-from settings import FOLDERS
+from framework.settings import FOLDERS
 
 l3_proto_classes = [
     IP,
diff --git a/tests/TestSuite_cloud_filter_with_l4_port.py b/tests/TestSuite_cloud_filter_with_l4_port.py
index 272b86cb..bff2fb7a 100644
--- a/tests/TestSuite_cloud_filter_with_l4_port.py
+++ b/tests/TestSuite_cloud_filter_with_l4_port.py
@@ -36,17 +36,17 @@ Test the support of generic flow API by Poll Mode Drivers.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import DRIVERS
-from crb import Crb
-from dut import Dut
-import packet
-from exception import VerifyFailure
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
+from framework.crb import Crb
+from framework.dut import Dut
+import framework.packet as packet
+from framework.exception import VerifyFailure
 import scapy.layers.inet
 from scapy.utils import rdpcap
 
diff --git a/tests/TestSuite_cmdline.py b/tests/TestSuite_cmdline.py
index c189934f..e88be9df 100644
--- a/tests/TestSuite_cmdline.py
+++ b/tests/TestSuite_cmdline.py
@@ -34,9 +34,9 @@ DPDK Test suite.
 Test cmdline.
 """
 
-import utils
+import framework.utils as utils
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 class TestCmdline(TestCase):
diff --git a/tests/TestSuite_compressdev_isal_pmd.py b/tests/TestSuite_compressdev_isal_pmd.py
index 1c2b7775..4155a1cf 100644
--- a/tests/TestSuite_compressdev_isal_pmd.py
+++ b/tests/TestSuite_compressdev_isal_pmd.py
@@ -31,10 +31,10 @@
 
 
 import os
-from test_case import TestCase
+from framework.test_case import TestCase
 import json
 import copy
-import compress_common as cc
+import tests.compress_common as cc
 
 class TestCompressdevIsalPmd(TestCase):
 
diff --git a/tests/TestSuite_compressdev_qat_pmd.py b/tests/TestSuite_compressdev_qat_pmd.py
index 4ac45938..b8ad0724 100644
--- a/tests/TestSuite_compressdev_qat_pmd.py
+++ b/tests/TestSuite_compressdev_qat_pmd.py
@@ -31,10 +31,10 @@
 
 
 import os
-from test_case import TestCase
+from framework.test_case import TestCase
 import json
 import copy
-import compress_common as cc
+import tests.compress_common as cc
 
 
 class TestCompressdevQatPmd(TestCase):
diff --git a/tests/TestSuite_compressdev_zlib_pmd.py b/tests/TestSuite_compressdev_zlib_pmd.py
index 35a7502b..7e1d13c0 100644
--- a/tests/TestSuite_compressdev_zlib_pmd.py
+++ b/tests/TestSuite_compressdev_zlib_pmd.py
@@ -31,10 +31,10 @@
 
 
 import os
-from test_case import TestCase
+from framework.test_case import TestCase
 import json
 import copy
-import compress_common as cc
+import tests.compress_common as cc
 
 class TestCompressdevZlibPmd(TestCase):
 
diff --git a/tests/TestSuite_coremask.py b/tests/TestSuite_coremask.py
index 43c68e9d..286dd0ae 100644
--- a/tests/TestSuite_coremask.py
+++ b/tests/TestSuite_coremask.py
@@ -36,10 +36,10 @@ Test coremask parsing in DPDK.
 
 """
 
-import utils
+import framework.utils as utils
 
-from exception import VerifyFailure
-from test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.test_case import TestCase
 
 #
 #
diff --git a/tests/TestSuite_crypto_perf_cryptodev_perf.py b/tests/TestSuite_crypto_perf_cryptodev_perf.py
index d1f104e2..d8bfff97 100644
--- a/tests/TestSuite_crypto_perf_cryptodev_perf.py
+++ b/tests/TestSuite_crypto_perf_cryptodev_perf.py
@@ -31,8 +31,8 @@
 
 import re
 import json
-from test_case import TestCase
-import cryptodev_common as cc
+from framework.test_case import TestCase
+import tests.cryptodev_common as cc
 
 
 class PerfTestsCryptodev(TestCase):
diff --git a/tests/TestSuite_cvl_advanced_iavf_rss.py b/tests/TestSuite_cvl_advanced_iavf_rss.py
index a7003b38..bd0e8708 100644
--- a/tests/TestSuite_cvl_advanced_iavf_rss.py
+++ b/tests/TestSuite_cvl_advanced_iavf_rss.py
@@ -32,10 +32,10 @@
 
 import re
 import random
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from .rte_flow_common import RssProcessing
 
 vf0_mac = "00:11:22:33:44:55"
 
diff --git a/tests/TestSuite_cvl_advanced_iavf_rss_gtpogre.py b/tests/TestSuite_cvl_advanced_iavf_rss_gtpogre.py
index 5d5d7eea..0a61e119 100755
--- a/tests/TestSuite_cvl_advanced_iavf_rss_gtpogre.py
+++ b/tests/TestSuite_cvl_advanced_iavf_rss_gtpogre.py
@@ -33,10 +33,10 @@
 import re
 import random
 import time
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from .rte_flow_common import RssProcessing
 
 mac_ipv4_gtpu_ipv4_basic = {
     'gtpogre-ipv4-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
diff --git a/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py b/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py
index d19ddbf0..c329e62f 100644
--- a/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py
+++ b/tests/TestSuite_cvl_advanced_iavf_rss_gtpu.py
@@ -33,10 +33,10 @@
 import re
 import random
 import time
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from .rte_flow_common import RssProcessing
 
 mac_ipv4_gtpu_ipv4_basic = {
     'ipv4-nonfrag': 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)',
diff --git a/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py
index f7236eec..068731d9 100644
--- a/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py
+++ b/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py
@@ -32,11 +32,11 @@ import re
 import random
 import string
 import time
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from pmd_output import PmdOutput
-from packet import Packet
-from rte_flow_common import RssProcessing
-from config import UserConf
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from .rte_flow_common import RssProcessing
+from framework.config import UserConf
 
 vf0_mac = '00:11:22:33:44:55'
 
diff --git a/tests/TestSuite_cvl_advanced_rss.py b/tests/TestSuite_cvl_advanced_rss.py
index da756ac1..09e5c7be 100644
--- a/tests/TestSuite_cvl_advanced_rss.py
+++ b/tests/TestSuite_cvl_advanced_rss.py
@@ -32,10 +32,10 @@
 
 import re
 import random
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from .rte_flow_common import RssProcessing
 
 # toeplitz related data start
 mac_ipv4_toeplitz_basic_pkt = {
diff --git a/tests/TestSuite_cvl_advanced_rss_gtpogre.py b/tests/TestSuite_cvl_advanced_rss_gtpogre.py
index 4a889ead..4f5eb359 100755
--- a/tests/TestSuite_cvl_advanced_rss_gtpogre.py
+++ b/tests/TestSuite_cvl_advanced_rss_gtpogre.py
@@ -32,10 +32,10 @@
 
 import re
 import time
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from .rte_flow_common import RssProcessing
 
 
 mac_ipv4_gtpu_ipv4_basic = {
diff --git a/tests/TestSuite_cvl_advanced_rss_gtpu.py b/tests/TestSuite_cvl_advanced_rss_gtpu.py
index f1f4fe43..dc0f6130 100755
--- a/tests/TestSuite_cvl_advanced_rss_gtpu.py
+++ b/tests/TestSuite_cvl_advanced_rss_gtpu.py
@@ -32,10 +32,10 @@
 
 import re
 import time
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from .rte_flow_common import RssProcessing
 
 
 mac_ipv4_gtpu_ipv4_basic = {
diff --git a/tests/TestSuite_cvl_advanced_rss_pppoe.py b/tests/TestSuite_cvl_advanced_rss_pppoe.py
index 2d3e226e..bcff298e 100644
--- a/tests/TestSuite_cvl_advanced_rss_pppoe.py
+++ b/tests/TestSuite_cvl_advanced_rss_pppoe.py
@@ -32,10 +32,10 @@
 import re
 import random
 import string
-from test_case import TestCase, skip_unsupported_pkg
-from pmd_output import PmdOutput
-from packet import Packet
-from rte_flow_common import RssProcessing
+from framework.test_case import TestCase, skip_unsupported_pkg
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from .rte_flow_common import RssProcessing
 
 mac_pppoe_pay_packets = {
     'mismatch': [
diff --git a/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
index df071e91..115a97e0 100644
--- a/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
+++ b/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
@@ -31,11 +31,11 @@
 import re
 import random
 import string
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from pmd_output import PmdOutput
-from packet import Packet
-from rte_flow_common import RssProcessing
-from config import UserConf
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from .rte_flow_common import RssProcessing
+from framework.config import UserConf
 
 mac_ipv4_pfcp_session_packets = {
     'match': [
diff --git a/tests/TestSuite_cvl_dcf_acl_filter.py b/tests/TestSuite_cvl_dcf_acl_filter.py
index 1d516fcf..1a2d4c42 100644
--- a/tests/TestSuite_cvl_dcf_acl_filter.py
+++ b/tests/TestSuite_cvl_dcf_acl_filter.py
@@ -34,11 +34,11 @@ import time
 import re
 import copy
 
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
-import rte_flow_common as rfc
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_dcf_date_path.py b/tests/TestSuite_cvl_dcf_date_path.py
index 04ac5de6..71b42a8f 100644
--- a/tests/TestSuite_cvl_dcf_date_path.py
+++ b/tests/TestSuite_cvl_dcf_date_path.py
@@ -32,9 +32,9 @@
 
 import re
 import time
-from pmd_output import PmdOutput
-from test_case import TestCase
-from packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.packet import Packet
 
 
 class DcfDatePathTest(TestCase):
diff --git a/tests/TestSuite_cvl_dcf_flow_priority.py b/tests/TestSuite_cvl_dcf_flow_priority.py
index 07d99d2c..cc95dcb1 100644
--- a/tests/TestSuite_cvl_dcf_flow_priority.py
+++ b/tests/TestSuite_cvl_dcf_flow_priority.py
@@ -34,11 +34,11 @@ import time
 import re
 import copy
 
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
-import rte_flow_common as rfc
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_dcf_switch_filter.py b/tests/TestSuite_cvl_dcf_switch_filter.py
index dd7e0109..a13b47b1 100644
--- a/tests/TestSuite_cvl_dcf_switch_filter.py
+++ b/tests/TestSuite_cvl_dcf_switch_filter.py
@@ -34,11 +34,11 @@ import time
 import re
 import copy
 
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
-import rte_flow_common as rfc
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_dcf_switch_filter_gtpu.py b/tests/TestSuite_cvl_dcf_switch_filter_gtpu.py
index 052e97b7..d357c239 100644
--- a/tests/TestSuite_cvl_dcf_switch_filter_gtpu.py
+++ b/tests/TestSuite_cvl_dcf_switch_filter_gtpu.py
@@ -34,11 +34,11 @@ import time
 import re
 import copy
 
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
-import rte_flow_common as rfc
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py b/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
index c51d14b1..32235be4 100644
--- a/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
+++ b/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
@@ -34,11 +34,11 @@ import time
 import re
 import copy
 
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
-import rte_flow_common as rfc
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_ecpri.py b/tests/TestSuite_cvl_ecpri.py
index 357e7fa9..3fec3c00 100644
--- a/tests/TestSuite_cvl_ecpri.py
+++ b/tests/TestSuite_cvl_ecpri.py
@@ -1,10 +1,10 @@
 import re
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-import rte_flow_common as rfc
-import utils
-from utils import GREEN, RED
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+import tests.rte_flow_common as rfc
+import framework.utils as utils
+from framework.utils import GREEN, RED
 import time
 
 Mac_list = ['00:11:22:33:44:55', '00:11:22:33:44:11', '00:11:22:33:44:22', '00:11:22:33:44:33']
diff --git a/tests/TestSuite_cvl_fdir.py b/tests/TestSuite_cvl_fdir.py
index 0c3a1917..e1c033c8 100644
--- a/tests/TestSuite_cvl_fdir.py
+++ b/tests/TestSuite_cvl_fdir.py
@@ -35,13 +35,13 @@ import time
 import copy
 import os
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase, skip_unsupported_pkg
-import rte_flow_common as rfc
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, skip_unsupported_pkg
+import tests.rte_flow_common as rfc
 
-from utils import GREEN, RED
-import utils
+from framework.utils import GREEN, RED
+import framework.utils as utils
 
 MAC_IPV4_PAY = {
     "match": [
diff --git a/tests/TestSuite_cvl_iavf_ip_fragment_rte_flow.py b/tests/TestSuite_cvl_iavf_ip_fragment_rte_flow.py
index b0e41a1b..575f0b0d 100644
--- a/tests/TestSuite_cvl_iavf_ip_fragment_rte_flow.py
+++ b/tests/TestSuite_cvl_iavf_ip_fragment_rte_flow.py
@@ -30,14 +30,14 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 import re
-from utils import GREEN, RED
+from framework.utils import GREEN, RED
 import time
 from scapy.all import *
-import rte_flow_common as rfc
+import tests.rte_flow_common as rfc
 
 LAUNCH_QUEUE = 16
 
diff --git a/tests/TestSuite_cvl_iavf_rss_configure.py b/tests/TestSuite_cvl_iavf_rss_configure.py
index 86b2819e..e94809a3 100755
--- a/tests/TestSuite_cvl_iavf_rss_configure.py
+++ b/tests/TestSuite_cvl_iavf_rss_configure.py
@@ -32,12 +32,12 @@
 import json
 import time
 import re
-import packet
+import framework.packet as packet
 import os
 from scapy.contrib.gtp import *
-from test_case import TestCase
-from pmd_output import PmdOutput
-from rte_flow_common import RssProcessing
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from .rte_flow_common import RssProcessing
 
 tv_packets_basic = {
     'tv_mac_ipv4': 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.2",dst="192.168.0.3")/("X"*40)',
diff --git a/tests/TestSuite_cvl_ip_fragment_rte_flow.py b/tests/TestSuite_cvl_ip_fragment_rte_flow.py
index acf8e78e..b396ee72 100644
--- a/tests/TestSuite_cvl_ip_fragment_rte_flow.py
+++ b/tests/TestSuite_cvl_ip_fragment_rte_flow.py
@@ -30,13 +30,13 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from utils import GREEN, RED
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.utils import GREEN, RED
 import time
 from scapy.all import *
-import rte_flow_common as rfc
+import tests.rte_flow_common as rfc
 
 LAUNCH_QUEUE = 16
 
diff --git a/tests/TestSuite_cvl_limit_value_test.py b/tests/TestSuite_cvl_limit_value_test.py
index f8224258..4e97bd36 100644
--- a/tests/TestSuite_cvl_limit_value_test.py
+++ b/tests/TestSuite_cvl_limit_value_test.py
@@ -34,12 +34,12 @@ import re
 import time
 import os
 import copy
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-import rte_flow_common as rfc
-from rte_flow_common import CVL_TXQ_RXQ_NUMBER
-import utils
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+import tests.rte_flow_common as rfc
+from .rte_flow_common import CVL_TXQ_RXQ_NUMBER
+import framework.utils as utils
 
 # max rule number case: rte_flow_pattern and matched packets will be generated by code, and rte_flow_pattern will be writed to file.
 tv_max_rule_number = {
diff --git a/tests/TestSuite_cvl_qinq.py b/tests/TestSuite_cvl_qinq.py
index 0c950b03..d066d42b 100644
--- a/tests/TestSuite_cvl_qinq.py
+++ b/tests/TestSuite_cvl_qinq.py
@@ -33,11 +33,11 @@
 import re
 import time
 import random
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase, check_supported_nic, skip_unsupported_pkg
-from utils import GREEN, RED
-from rte_flow_common import RssProcessing
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, check_supported_nic, skip_unsupported_pkg
+from framework.utils import GREEN, RED
+from .rte_flow_common import RssProcessing
 
 mac_qinq_ipv4_pay_src_ip = {
     'name': 'mac_qinq_ipv4_pay_src_ip',
diff --git a/tests/TestSuite_cvl_rss_configure.py b/tests/TestSuite_cvl_rss_configure.py
index 904c3ca3..40d3e533 100644
--- a/tests/TestSuite_cvl_rss_configure.py
+++ b/tests/TestSuite_cvl_rss_configure.py
@@ -32,15 +32,15 @@
 import json
 import time
 import re
-import packet
+import framework.packet as packet
 import os
 from scapy.contrib.gtp import *
-from test_case import TestCase
-from pmd_output import PmdOutput
-from utils import BLUE, RED
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.utils import BLUE, RED
 from collections import OrderedDict
-from packet import IncreaseIP, IncreaseIPv6
-import rte_flow_common as rfc
+from framework.packet import IncreaseIP, IncreaseIPv6
+import tests.rte_flow_common as rfc
 
 out = os.popen("pip list|grep scapy ")
 version_result =out.read()
diff --git a/tests/TestSuite_cvl_switch_filter.py b/tests/TestSuite_cvl_switch_filter.py
index 5ec8b184..e25d0127 100644
--- a/tests/TestSuite_cvl_switch_filter.py
+++ b/tests/TestSuite_cvl_switch_filter.py
@@ -37,12 +37,12 @@ import copy
 import random
 from itertools import groupby
 
-from test_case import TestCase, skip_unsupported_pkg
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
+from framework.test_case import TestCase, skip_unsupported_pkg
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
 from collections import OrderedDict
-import rte_flow_common as rfc
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_switch_filter_pppoe.py b/tests/TestSuite_cvl_switch_filter_pppoe.py
index c2949546..e1e98e4e 100644
--- a/tests/TestSuite_cvl_switch_filter_pppoe.py
+++ b/tests/TestSuite_cvl_switch_filter_pppoe.py
@@ -37,12 +37,12 @@ import copy
 import random
 from itertools import groupby
 
-from test_case import TestCase, skip_unsupported_pkg
-from pmd_output import PmdOutput
-from packet import Packet
-from utils import BLUE, RED, GREEN
+from framework.test_case import TestCase, skip_unsupported_pkg
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.utils import BLUE, RED, GREEN
 from collections import OrderedDict
-import rte_flow_common as rfc
+import tests.rte_flow_common as rfc
 
 import os
 
diff --git a/tests/TestSuite_cvl_vf_support_multicast_address.py b/tests/TestSuite_cvl_vf_support_multicast_address.py
index dd241a82..11c5897f 100644
--- a/tests/TestSuite_cvl_vf_support_multicast_address.py
+++ b/tests/TestSuite_cvl_vf_support_multicast_address.py
@@ -30,9 +30,9 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import re
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 vf0_mac = "00:11:22:33:44:55"
 vf1_mac = "00:11:22:33:44:66"
diff --git a/tests/TestSuite_dcf_lifecycle.py b/tests/TestSuite_dcf_lifecycle.py
index b8645a61..1d24e6a8 100644
--- a/tests/TestSuite_dcf_lifecycle.py
+++ b/tests/TestSuite_dcf_lifecycle.py
@@ -52,12 +52,12 @@ from pprint import pformat
 from functools import partial
 
 
-from settings import HEADER_SIZE
-from test_case import TestCase
-from exception import VerifyFailure
-from packet import Packet
-from pmd_output import PmdOutput
-import utils
+from framework.settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+import framework.utils as utils
 
 
 class TestDcfLifeCycle(TestCase):
diff --git a/tests/TestSuite_ddp_gtp.py b/tests/TestSuite_ddp_gtp.py
index c992e049..28848207 100644
--- a/tests/TestSuite_ddp_gtp.py
+++ b/tests/TestSuite_ddp_gtp.py
@@ -32,11 +32,11 @@
 import time
 import re
 import sys
-import utils
-from qemu_kvm import QEMUKvm
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import get_nic_name
+import framework.utils as utils
+from framework.qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import get_nic_name
 import random
 
 VM_CORES_MASK = 'all'
diff --git a/tests/TestSuite_ddp_gtp_qregion.py b/tests/TestSuite_ddp_gtp_qregion.py
index e7e40cfc..c46fade9 100644
--- a/tests/TestSuite_ddp_gtp_qregion.py
+++ b/tests/TestSuite_ddp_gtp_qregion.py
@@ -32,12 +32,12 @@
 import time
 import re
 import sys
-import utils
+import framework.utils as utils
 from scapy.all import *
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import get_nic_name
-import packet
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import get_nic_name
+import framework.packet as packet
 
 
 class TestDdpGtpQregion(TestCase):
diff --git a/tests/TestSuite_ddp_l2tpv3.py b/tests/TestSuite_ddp_l2tpv3.py
index 22ae0be7..477f9adc 100644
--- a/tests/TestSuite_ddp_l2tpv3.py
+++ b/tests/TestSuite_ddp_l2tpv3.py
@@ -35,8 +35,8 @@ l2tpv3 test script.
 """
 import time
 import re
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 from scapy.all import *
 import random
 
diff --git a/tests/TestSuite_ddp_mpls.py b/tests/TestSuite_ddp_mpls.py
index 7c677c3c..9a93a745 100644
--- a/tests/TestSuite_ddp_mpls.py
+++ b/tests/TestSuite_ddp_mpls.py
@@ -31,13 +31,13 @@
 
 import time
 import sys
-import utils 
+import framework.utils as utils 
 from scapy.utils import rdpcap
 
-from qemu_kvm import QEMUKvm
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import get_nic_name
+from framework.qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import get_nic_name
 import random
 
 VM_CORES_MASK = 'all'
diff --git a/tests/TestSuite_ddp_ppp_l2tp.py b/tests/TestSuite_ddp_ppp_l2tp.py
index 57b8c352..53de7e10 100644
--- a/tests/TestSuite_ddp_ppp_l2tp.py
+++ b/tests/TestSuite_ddp_ppp_l2tp.py
@@ -32,10 +32,10 @@
 import time
 import re
 import sys
-import utils
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import get_nic_name
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import get_nic_name
 from scapy.all import *
 import random
 
diff --git a/tests/TestSuite_distributor.py b/tests/TestSuite_distributor.py
index cd88977d..f8a1ef6f 100644
--- a/tests/TestSuite_distributor.py
+++ b/tests/TestSuite_distributor.py
@@ -33,10 +33,10 @@
 DPDK Test suite.
 """
 import re
-import utils
+import framework.utils as utils
 import os
-from test_case import TestCase
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestDistributor(TestCase):
diff --git a/tests/TestSuite_dpdk_gro_lib.py b/tests/TestSuite_dpdk_gro_lib.py
index f5668ad4..72dc20b3 100644
--- a/tests/TestSuite_dpdk_gro_lib.py
+++ b/tests/TestSuite_dpdk_gro_lib.py
@@ -38,10 +38,10 @@ hostcpu to start qemu and only have one vcpu
 """
 import re
 import time
-import utils
-from test_case import TestCase
-from virt_common import VM
-import vhost_peer_conf as peer
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.virt_common import VM
+import tests.vhost_peer_conf as peer
 
 
 class TestDPDKGROLib(TestCase):
diff --git a/tests/TestSuite_dpdk_gso_lib.py b/tests/TestSuite_dpdk_gso_lib.py
index 8cb13a8f..a806f4d3 100644
--- a/tests/TestSuite_dpdk_gso_lib.py
+++ b/tests/TestSuite_dpdk_gso_lib.py
@@ -37,12 +37,12 @@ In this suite, in order to check the performance of gso lib, will use one
 hostcpu to start qemu and only have one vcpu
 """
 import time
-import utils
+import framework.utils as utils
 import re
-from test_case import TestCase
-from virt_common import VM
-from config import UserConf
-import vhost_peer_conf as peer
+from framework.test_case import TestCase
+from framework.virt_common import VM
+from framework.config import UserConf
+import tests.vhost_peer_conf as peer
 
 
 class TestDPDKGsoLib(TestCase):
diff --git a/tests/TestSuite_dpdk_hugetlbfs_mount_size.py b/tests/TestSuite_dpdk_hugetlbfs_mount_size.py
index 48fdc8ef..c06b7f02 100644
--- a/tests/TestSuite_dpdk_hugetlbfs_mount_size.py
+++ b/tests/TestSuite_dpdk_hugetlbfs_mount_size.py
@@ -34,9 +34,9 @@ This feature is to limit DPDK to use the exact size which is the mounted hugepag
 """
 
 import re
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
+from framework.test_case import TestCase
 
 DEFAULT_MNT = '/mnt/huge'
 MNT_PATH = ["/mnt/huge1", "/mnt/huge2", "/mnt/huge3"]
diff --git a/tests/TestSuite_dual_vlan.py b/tests/TestSuite_dual_vlan.py
index 933ffb90..e2d2c06d 100644
--- a/tests/TestSuite_dual_vlan.py
+++ b/tests/TestSuite_dual_vlan.py
@@ -37,7 +37,7 @@ Test the support of Dual VLAN Offload Features by Poll Mode Drivers.
 
 """
 
-import utils
+import framework.utils as utils
 import random
 import re
 import time
@@ -71,8 +71,8 @@ vlanCase = ["OUTER+INNER", "INNER", ("OUTER+INNER", "NONE"), ("INNER", "NONE"),
             "TX+OUTER+INNER", "TX+OUTER", ("NONE", "TX+OUTER+INNER"), ("NONE", "TX+OUTER")]
 
 
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestDualVlan(TestCase):
diff --git a/tests/TestSuite_dynamic_config.py b/tests/TestSuite_dynamic_config.py
index 92f15d36..20d57470 100644
--- a/tests/TestSuite_dynamic_config.py
+++ b/tests/TestSuite_dynamic_config.py
@@ -36,11 +36,11 @@ Test the dynamic driver configuration feature.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 #
diff --git a/tests/TestSuite_dynamic_flowtype.py b/tests/TestSuite_dynamic_flowtype.py
index d60a5822..816dc3f2 100644
--- a/tests/TestSuite_dynamic_flowtype.py
+++ b/tests/TestSuite_dynamic_flowtype.py
@@ -31,10 +31,10 @@
 
 import time
 import re
-import utils
-from test_case import TestCase
-from pmd_output import PmdOutput
-import packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+import framework.packet as packet
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_dynamic_queue.py b/tests/TestSuite_dynamic_queue.py
index 9314ff73..4abb0411 100644
--- a/tests/TestSuite_dynamic_queue.py
+++ b/tests/TestSuite_dynamic_queue.py
@@ -31,11 +31,11 @@
 
 import time
 import re
-import utils
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import get_nic_name
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import get_nic_name
+from framework.packet import Packet
 import random
 
 test_loop = 3
diff --git a/tests/TestSuite_eeprom_dump.py b/tests/TestSuite_eeprom_dump.py
index 8c2bf4c4..b6afdf15 100644
--- a/tests/TestSuite_eeprom_dump.py
+++ b/tests/TestSuite_eeprom_dump.py
@@ -33,10 +33,10 @@
 """
 DPDK Test suite.
 """
-import utils
+import framework.utils as utils
 import re
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
 
 class TestEEPROMDump(TestCase):
diff --git a/tests/TestSuite_efd.py b/tests/TestSuite_efd.py
index 787733ca..7779cfe8 100644
--- a/tests/TestSuite_efd.py
+++ b/tests/TestSuite_efd.py
@@ -33,10 +33,10 @@
 DPDK Test suite.
 """
 import re
-import utils
+import framework.utils as utils
 import os
-from test_case import TestCase
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestEFD(TestCase):
diff --git a/tests/TestSuite_enable_package_download_in_ice_driver.py b/tests/TestSuite_enable_package_download_in_ice_driver.py
index 8bf21d18..f3ef897c 100644
--- a/tests/TestSuite_enable_package_download_in_ice_driver.py
+++ b/tests/TestSuite_enable_package_download_in_ice_driver.py
@@ -32,8 +32,8 @@
 import time
 import re
 import os
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 class TestEnable_Package_Download_In_Ice_Driver(TestCase):
 
diff --git a/tests/TestSuite_etag.py b/tests/TestSuite_etag.py
index f165c91d..0b5a5674 100644
--- a/tests/TestSuite_etag.py
+++ b/tests/TestSuite_etag.py
@@ -38,15 +38,15 @@ import re
 import time
 import sys
 
-import utils
-from qemu_kvm import QEMUKvm
-from test_case import TestCase
-from pmd_output import PmdOutput
-from exception import VerifyFailure
+import framework.utils as utils
+from framework.qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.exception import VerifyFailure
 
 from scapy.utils import rdpcap
 
-from packet import Packet
+from framework.packet import Packet
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_ethtool_stats.py b/tests/TestSuite_ethtool_stats.py
index c0032c86..942c0c50 100644
--- a/tests/TestSuite_ethtool_stats.py
+++ b/tests/TestSuite_ethtool_stats.py
@@ -39,14 +39,14 @@ import time
 import os
 import traceback
 
-from utils import create_mask as dts_create_mask
-from test_case import TestCase
-from pmd_output import PmdOutput
-from exception import VerifyFailure
+from framework.utils import create_mask as dts_create_mask
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.exception import VerifyFailure
 
-from packet import Packet
+from framework.packet import Packet
 from scapy.sendrecv import sendp
-from settings import HEADER_SIZE
+from framework.settings import HEADER_SIZE
 from functools import reduce
 
 
diff --git a/tests/TestSuite_eventdev_perf.py b/tests/TestSuite_eventdev_perf.py
index fd142e89..dabf75d6 100644
--- a/tests/TestSuite_eventdev_perf.py
+++ b/tests/TestSuite_eventdev_perf.py
@@ -34,20 +34,20 @@ DPDK Test suite.
 Test userland 10Gb/25Gb/40Gb/100Gb
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
 import os
 
-from test_case import TestCase
+from framework.test_case import TestCase
 from time import sleep
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
-from etgen import IxiaPacketGenerator
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
+from framework.etgen import IxiaPacketGenerator
 
-from settings import FOLDERS
-from system_info import SystemInfo
-import perf_report
+from framework.settings import FOLDERS
+from nics.system_info import SystemInfo
+import nics.perf_report as perf_report
 from datetime import datetime
 
 class TestEventdevPerf(TestCase,IxiaPacketGenerator):
diff --git a/tests/TestSuite_eventdev_pipeline.py b/tests/TestSuite_eventdev_pipeline.py
index 33091b6a..04e16c63 100644
--- a/tests/TestSuite_eventdev_pipeline.py
+++ b/tests/TestSuite_eventdev_pipeline.py
@@ -34,13 +34,13 @@ DPDK Test suite.
 Test eventdev pipeline
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from test_case import TestCase
+from framework.test_case import TestCase
 import scapy.layers.inet
 from scapy.utils import rdpcap
-from packet import Packet
+from framework.packet import Packet
 
 
 class TestEventdevPipeline(TestCase):
diff --git a/tests/TestSuite_eventdev_pipeline_perf.py b/tests/TestSuite_eventdev_pipeline_perf.py
index 361b47ee..1e89a250 100644
--- a/tests/TestSuite_eventdev_pipeline_perf.py
+++ b/tests/TestSuite_eventdev_pipeline_perf.py
@@ -34,20 +34,20 @@ DPDK Test suite.
 Test userland 10Gb/25Gb/40Gb/100Gb
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
 import os
 
-from test_case import TestCase
+from framework.test_case import TestCase
 from time import sleep
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
-from etgen import IxiaPacketGenerator
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
+from framework.etgen import IxiaPacketGenerator
 
-from settings import FOLDERS
-from system_info import SystemInfo
-import perf_report
+from framework.settings import FOLDERS
+from nics.system_info import SystemInfo
+import nics.perf_report as perf_report
 from datetime import datetime
 
 class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
diff --git a/tests/TestSuite_example_build.py b/tests/TestSuite_example_build.py
index 00db2f78..936fb258 100644
--- a/tests/TestSuite_example_build.py
+++ b/tests/TestSuite_example_build.py
@@ -37,7 +37,7 @@ Test example_build.
 
 import time
 import re
-from test_case import TestCase
+from framework.test_case import TestCase
 
 class TestExamplebuild(TestCase):
 
diff --git a/tests/TestSuite_external_memory.py b/tests/TestSuite_external_memory.py
index e31b2787..2f7344fe 100644
--- a/tests/TestSuite_external_memory.py
+++ b/tests/TestSuite_external_memory.py
@@ -37,8 +37,8 @@ Test external memory.
 
 import time
 import re
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 
 class TestExternalMemory(TestCase):
diff --git a/tests/TestSuite_external_mempool_handler.py b/tests/TestSuite_external_mempool_handler.py
index a16d4324..6f200666 100644
--- a/tests/TestSuite_external_mempool_handler.py
+++ b/tests/TestSuite_external_mempool_handler.py
@@ -34,9 +34,9 @@ DPDK Test suite.
 Test external mempool handler
 """
 
-import utils
-from test_case import TestCase
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestExternalMempool(TestCase):
diff --git a/tests/TestSuite_fdir.py b/tests/TestSuite_fdir.py
index 007db26d..6763d401 100644
--- a/tests/TestSuite_fdir.py
+++ b/tests/TestSuite_fdir.py
@@ -41,11 +41,11 @@ import string
 from time import sleep
 from scapy.utils import struct, socket, PcapWriter
 
-import utils
-from etgen import IxiaPacketGenerator
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.etgen import IxiaPacketGenerator
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
 
 import sys
 import imp
diff --git a/tests/TestSuite_fips_cryptodev.py b/tests/TestSuite_fips_cryptodev.py
index 8c75d54c..b9f5e4a3 100644
--- a/tests/TestSuite_fips_cryptodev.py
+++ b/tests/TestSuite_fips_cryptodev.py
@@ -30,9 +30,9 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-import utils
-from test_case import TestCase
-import cryptodev_common as cc
+import framework.utils as utils
+from framework.test_case import TestCase
+import tests.cryptodev_common as cc
 import re
 
 class FipCryptodev(TestCase):
diff --git a/tests/TestSuite_firmware_version.py b/tests/TestSuite_firmware_version.py
index 85f08337..5ad03339 100644
--- a/tests/TestSuite_firmware_version.py
+++ b/tests/TestSuite_firmware_version.py
@@ -33,8 +33,8 @@
 """
 DPDK Test suite.
 """
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 import re
 
 
diff --git a/tests/TestSuite_flexible_rxd.py b/tests/TestSuite_flexible_rxd.py
index 45eb6036..16e179bb 100644
--- a/tests/TestSuite_flexible_rxd.py
+++ b/tests/TestSuite_flexible_rxd.py
@@ -32,9 +32,9 @@
 
 
 import time
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from flexible_common import FlexibleRxdBase
-import rte_flow_common as rfc
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from .flexible_common import FlexibleRxdBase
+import tests.rte_flow_common as rfc
 
 class TestFlexibleRxd(TestCase, FlexibleRxdBase):
     supported_nic = ['columbiaville_100g', 'columbiaville_25g', 'columbiaville_25gx2', 'foxville']
diff --git a/tests/TestSuite_floating_veb.py b/tests/TestSuite_floating_veb.py
index 8bfc4c49..c4214037 100644
--- a/tests/TestSuite_floating_veb.py
+++ b/tests/TestSuite_floating_veb.py
@@ -38,14 +38,14 @@ Test Floating VEB Features by Poll Mode Drivers.
 import re
 import time
 
-from virt_dut import VirtDut
-from project_dpdk import DPDKdut
-from dut import Dut
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
-from packet import Packet
-from utils import RED
+from framework.virt_dut import VirtDut
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.utils import RED
 
 
 class TestFloatingVEBSwitching(TestCase):
diff --git a/tests/TestSuite_flow_classify.py b/tests/TestSuite_flow_classify.py
index 67d78734..14e2f862 100644
--- a/tests/TestSuite_flow_classify.py
+++ b/tests/TestSuite_flow_classify.py
@@ -35,13 +35,13 @@ import re
 from collections import Counter
 from datetime import datetime
 
-from packet import Packet
+from framework.packet import Packet
 from scapy.sendrecv import sendp
 
-from utils import create_mask as dts_create_mask
-from test_case import TestCase
-from exception import VerifyFailure
-from settings import HEADER_SIZE
+from framework.utils import create_mask as dts_create_mask
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.settings import HEADER_SIZE
 from functools import reduce
 
 
diff --git a/tests/TestSuite_flow_classify_softnic.py b/tests/TestSuite_flow_classify_softnic.py
index e5937289..eb6bf33d 100644
--- a/tests/TestSuite_flow_classify_softnic.py
+++ b/tests/TestSuite_flow_classify_softnic.py
@@ -29,24 +29,24 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-import utils
+import framework.utils as utils
 import re
 import time
 
-from settings import HEADER_SIZE
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import DRIVERS
-from crb import Crb
+from framework.settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
+from framework.crb import Crb
 
-from virt_dut import VirtDut
-from project_dpdk import DPDKdut
-from dut import Dut
-from packet import Packet
+from framework.virt_dut import VirtDut
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.packet import Packet
 
 import os
 import random
-from exception import VerifyFailure
+from framework.exception import VerifyFailure
 import scapy.layers.inet
 from scapy.utils import rdpcap
 
diff --git a/tests/TestSuite_flow_filtering.py b/tests/TestSuite_flow_filtering.py
index 7d089bc3..a46846fd 100644
--- a/tests/TestSuite_flow_filtering.py
+++ b/tests/TestSuite_flow_filtering.py
@@ -30,13 +30,13 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import os
-import utils
+import framework.utils as utils
 import time
 import re
 import os
-import packet
-from test_case import TestCase
-from settings import HEADER_SIZE
+import framework.packet as packet
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
 
 
 class TestFlowFiltering(TestCase):
diff --git a/tests/TestSuite_fortville_rss_granularity_config.py b/tests/TestSuite_fortville_rss_granularity_config.py
index 3ebd5139..64a1922d 100644
--- a/tests/TestSuite_fortville_rss_granularity_config.py
+++ b/tests/TestSuite_fortville_rss_granularity_config.py
@@ -50,9 +50,9 @@ Support 4*10G, 1*40G and 2*40G NICs.
 import time
 import random
 import re
-import utils
-import dut
-from pmd_output import PmdOutput
+import framework.utils as utils
+import framework.dut as dut
+from framework.pmd_output import PmdOutput
 
 testQueues = [16]
 reta_entries = []
@@ -60,7 +60,7 @@ reta_lines = []
 
 # Use scapy to send packets with different source and dest ip.
 # and collect the hash result of five tuple and the queue id.
-from test_case import TestCase
+from framework.test_case import TestCase
 #
 #
 # Test class.
diff --git a/tests/TestSuite_fortville_rss_input.py b/tests/TestSuite_fortville_rss_input.py
index f542b667..3b20f227 100644
--- a/tests/TestSuite_fortville_rss_input.py
+++ b/tests/TestSuite_fortville_rss_input.py
@@ -50,9 +50,9 @@ Support 4*10G, 1*40G and 2*40G NICs.
 import time
 import random
 import re
-import utils
-import dut
-from pmd_output import PmdOutput
+import framework.utils as utils
+import framework.dut as dut
+from framework.pmd_output import PmdOutput
 
 testQueues = [16]
 reta_entries = []
@@ -60,7 +60,7 @@ reta_lines = []
 
 # Use scapy to send packets with different source and dest ip.
 # and collect the hash result of five tuple and the queue id.
-from test_case import TestCase
+from framework.test_case import TestCase
 #
 #
 # Test class.
diff --git a/tests/TestSuite_generic_filter.py b/tests/TestSuite_generic_filter.py
index 22f85bd0..d126b8b0 100644
--- a/tests/TestSuite_generic_filter.py
+++ b/tests/TestSuite_generic_filter.py
@@ -36,14 +36,14 @@ Test the support of VLAN Offload Features by Poll Mode Drivers.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
-from settings import DRIVERS
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
 
 
 class TestGeneric_filter(TestCase):
diff --git a/tests/TestSuite_generic_flow_api.py b/tests/TestSuite_generic_flow_api.py
index e8171589..82bae0ff 100644
--- a/tests/TestSuite_generic_flow_api.py
+++ b/tests/TestSuite_generic_flow_api.py
@@ -36,24 +36,24 @@ Test the support of generic flow API by Poll Mode Drivers.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
-from settings import DRIVERS
-from crb import Crb
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
+from framework.crb import Crb
 
-from virt_dut import VirtDut
-from project_dpdk import DPDKdut
-from dut import Dut
-import packet
+from framework.virt_dut import VirtDut
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+import framework.packet as packet
 
 import os
 import random
-from exception import VerifyFailure
+from framework.exception import VerifyFailure
 import scapy.layers.inet
 from scapy.utils import rdpcap
 
diff --git a/tests/TestSuite_hello_world.py b/tests/TestSuite_hello_world.py
index 8e2ffd90..0bcafe0e 100644
--- a/tests/TestSuite_hello_world.py
+++ b/tests/TestSuite_hello_world.py
@@ -34,8 +34,8 @@ DPDK Test suite.
 Test HelloWorld example.
 """
 
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 class TestHelloWorld(TestCase):
 
diff --git a/tests/TestSuite_hotplug.py b/tests/TestSuite_hotplug.py
index bb31a9d5..fcbd07df 100644
--- a/tests/TestSuite_hotplug.py
+++ b/tests/TestSuite_hotplug.py
@@ -37,9 +37,9 @@ Test port hot plug.
 
 import time
 import re
-import utils
-from test_case import TestCase
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
 import os
 
 
diff --git a/tests/TestSuite_hotplug_mp.py b/tests/TestSuite_hotplug_mp.py
index 9b846a0e..bc4951e1 100644
--- a/tests/TestSuite_hotplug_mp.py
+++ b/tests/TestSuite_hotplug_mp.py
@@ -34,9 +34,9 @@ DPDK Test suite.
 Hotplug Multi-process Test.
 """
 
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
+from framework.test_case import TestCase
 import itertools
 
 test_loop = 2
diff --git a/tests/TestSuite_iavf.py b/tests/TestSuite_iavf.py
index 9656b4fc..e0bb1c4c 100644
--- a/tests/TestSuite_iavf.py
+++ b/tests/TestSuite_iavf.py
@@ -40,13 +40,13 @@ import re
 import time
 import math
 
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
-from settings import get_nic_name
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.settings import get_nic_name
 import random
-from settings import HEADER_SIZE
+from framework.settings import HEADER_SIZE
 
 VM_CORES_MASK = 'Default'
 
diff --git a/tests/TestSuite_iavf_fdir.py b/tests/TestSuite_iavf_fdir.py
index d79829ea..90a6cf8f 100644
--- a/tests/TestSuite_iavf_fdir.py
+++ b/tests/TestSuite_iavf_fdir.py
@@ -33,16 +33,16 @@
 import re
 import time
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase, skip_unsupported_pkg
-import rte_flow_common as rfc
-from rte_flow_common import CVL_TXQ_RXQ_NUMBER
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, skip_unsupported_pkg
+import tests.rte_flow_common as rfc
+from .rte_flow_common import CVL_TXQ_RXQ_NUMBER
 from multiprocessing import Process
 from multiprocessing import Manager
 
-from utils import GREEN, RED
-import utils
+from framework.utils import GREEN, RED
+import framework.utils as utils
 
 MAC_IPV4_PAY = {
     "match": [
diff --git a/tests/TestSuite_iavf_flexible_descriptor.py b/tests/TestSuite_iavf_flexible_descriptor.py
index e5cd9b3d..667a9641 100644
--- a/tests/TestSuite_iavf_flexible_descriptor.py
+++ b/tests/TestSuite_iavf_flexible_descriptor.py
@@ -35,8 +35,8 @@ import time
 import traceback
 
 
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-from flexible_common import FlexibleRxdBase
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from .flexible_common import FlexibleRxdBase
 
 
 class TestIavfFlexibleDescriptor(TestCase, FlexibleRxdBase):
diff --git a/tests/TestSuite_iavf_package_driver_error_handle.py b/tests/TestSuite_iavf_package_driver_error_handle.py
index d155afc9..962d1336 100644
--- a/tests/TestSuite_iavf_package_driver_error_handle.py
+++ b/tests/TestSuite_iavf_package_driver_error_handle.py
@@ -32,9 +32,9 @@
 import time
 import re
 import os
-from test_case import TestCase
-from pmd_output import PmdOutput
-from config import UserConf
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.config import UserConf
 
 class Testiavf_package_and_driver_check(TestCase):
 
diff --git a/tests/TestSuite_ieee1588.py b/tests/TestSuite_ieee1588.py
index f737c796..7fcff6ca 100644
--- a/tests/TestSuite_ieee1588.py
+++ b/tests/TestSuite_ieee1588.py
@@ -34,12 +34,12 @@ DPDK Test suite.
 Test support of IEEE1588 Precise Time Protocol.
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 DEV_TX_OFFLOAD_MULTI_SEGS = '0x00008000'
 
diff --git a/tests/TestSuite_inline_ipsec.py b/tests/TestSuite_inline_ipsec.py
index 2b9db77e..3826dda2 100644
--- a/tests/TestSuite_inline_ipsec.py
+++ b/tests/TestSuite_inline_ipsec.py
@@ -35,13 +35,13 @@ DPDK Test suite.
 Test inline_ipsec.
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 import random
 
 from scapy.all import ESP, IP, Ether, sendp, SecurityAssociation
-from test_case import TestCase
+from framework.test_case import TestCase
 
 ETHER_STANDARD_MTU = 1300
 ETHER_JUMBO_FRAME_MTU = 9000
diff --git a/tests/TestSuite_interrupt_pmd.py b/tests/TestSuite_interrupt_pmd.py
index e5e3751d..947a9615 100644
--- a/tests/TestSuite_interrupt_pmd.py
+++ b/tests/TestSuite_interrupt_pmd.py
@@ -37,8 +37,8 @@ Test interrupt pmd.
 
 import string
 import time
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 
 class TestInterruptPmd(TestCase):
diff --git a/tests/TestSuite_ip_pipeline.py b/tests/TestSuite_ip_pipeline.py
index 0d5a114b..dcfdb62c 100644
--- a/tests/TestSuite_ip_pipeline.py
+++ b/tests/TestSuite_ip_pipeline.py
@@ -29,24 +29,24 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-import utils
+import framework.utils as utils
 import re
 import time
 
-from settings import HEADER_SIZE
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import DRIVERS
-from crb import Crb
+from framework.settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
+from framework.crb import Crb
 
-from virt_dut import VirtDut
-from project_dpdk import DPDKdut
-from dut import Dut
-from packet import Packet
+from framework.virt_dut import VirtDut
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.packet import Packet
 
 import os
 import random
-from exception import VerifyFailure
+from framework.exception import VerifyFailure
 import scapy.layers.inet
 from scapy.utils import rdpcap
 
diff --git a/tests/TestSuite_ipfrag.py b/tests/TestSuite_ipfrag.py
index e9972659..a5b343e4 100644
--- a/tests/TestSuite_ipfrag.py
+++ b/tests/TestSuite_ipfrag.py
@@ -34,15 +34,15 @@ DPDK Test suite.
 Test IPv4 fragmentation features in DPDK.
 """
 
-import utils
+import framework.utils as utils
 import string
 import re
 import time
 import os
-from settings import HEADER_SIZE
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
 
 
 lpm_table_ipv4 = [
diff --git a/tests/TestSuite_ipgre.py b/tests/TestSuite_ipgre.py
index 5e7750c5..dfd70ac7 100644
--- a/tests/TestSuite_ipgre.py
+++ b/tests/TestSuite_ipgre.py
@@ -39,12 +39,12 @@ inside virtual point-to-point links over an Internet Protocol network.
 Fortville support GRE packet detecting, checksum computing and filtering.
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
 import os
 
-from packet import Packet
+from framework.packet import Packet
 
 from scapy.utils import wrpcap, rdpcap
 from scapy.packet import split_layers,bind_layers
@@ -52,9 +52,9 @@ from scapy.layers.inet import Ether, IP, TCP, UDP
 from scapy.layers.sctp import SCTP
 from scapy.layers.l2 import GRE
 
-from test_case import TestCase
-from exception import VerifyFailure
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.pmd_output import PmdOutput
 
 class TestIpgre(TestCase):
 
diff --git a/tests/TestSuite_ipsec_gw_cryptodev_func.py b/tests/TestSuite_ipsec_gw_cryptodev_func.py
index 33b67d45..bf08402e 100644
--- a/tests/TestSuite_ipsec_gw_cryptodev_func.py
+++ b/tests/TestSuite_ipsec_gw_cryptodev_func.py
@@ -31,11 +31,11 @@
 
 import binascii
 import time
-import utils
-from test_case import TestCase
-import packet
+import framework.utils as utils
+from framework.test_case import TestCase
+import framework.packet as packet
 
-import cryptodev_common as cc
+import tests.cryptodev_common as cc
 
 class TestIPsecGW(TestCase):
 
diff --git a/tests/TestSuite_ipv4_reassembly.py b/tests/TestSuite_ipv4_reassembly.py
index 0342fb0a..3f5b9a30 100644
--- a/tests/TestSuite_ipv4_reassembly.py
+++ b/tests/TestSuite_ipv4_reassembly.py
@@ -42,8 +42,8 @@ from scapy.utils import struct, socket, PcapWriter
 from scapy.layers.inet import Ether, IP, TCP, fragment
 from scapy.route import *
 
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 
 class IpReassemblyTestConfig(object):
diff --git a/tests/TestSuite_ixgbe_vf_get_extra_queue_information.py b/tests/TestSuite_ixgbe_vf_get_extra_queue_information.py
index 57db70f4..ca3b0fe8 100644
--- a/tests/TestSuite_ixgbe_vf_get_extra_queue_information.py
+++ b/tests/TestSuite_ixgbe_vf_get_extra_queue_information.py
@@ -36,14 +36,14 @@ Test Niantic ixgbe_get_vf_queue Include Extra Information function.
 import time
 import random
 import re
-import utils
+import framework.utils as utils
 
 # Use scapy to send packets with different source and dest ip.
 # and collect the hash result of five tuple and the queue id.
-from test_case import TestCase
-from pmd_output import PmdOutput
-from virt_common import VM
-from qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.virt_common import VM
+from framework.qemu_kvm import QEMUKvm
 
 class TestIxgbeVfGetExtraInfo(TestCase):
 
diff --git a/tests/TestSuite_jumboframes.py b/tests/TestSuite_jumboframes.py
index e277bace..e2c2a362 100644
--- a/tests/TestSuite_jumboframes.py
+++ b/tests/TestSuite_jumboframes.py
@@ -34,12 +34,12 @@ DPDK Test suite.
 Test the support of Jumbo Frames by Poll Mode Drivers
 """
 
-import utils
+import framework.utils as utils
 import re
 from time import sleep
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import PROTOCOL_PACKET_SIZE
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import PROTOCOL_PACKET_SIZE
 
 ETHER_HEADER_LEN = 18
 IP_HEADER_LEN = 20
diff --git a/tests/TestSuite_keep_alive.py b/tests/TestSuite_keep_alive.py
index 4d350d79..093988fd 100644
--- a/tests/TestSuite_keep_alive.py
+++ b/tests/TestSuite_keep_alive.py
@@ -37,8 +37,8 @@ Test keep alive
 
 import time
 import re
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 class TestKeepAlive(TestCase):
 
diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py
index 5db1ec00..b40197cb 100644
--- a/tests/TestSuite_kernelpf_iavf.py
+++ b/tests/TestSuite_kernelpf_iavf.py
@@ -40,13 +40,13 @@ Test some vf function in ice driver
 import re
 import time
 import random
-import utils
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
-from packet import Packet
-from utils import RED
+import framework.utils as utils
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.utils import RED
 
 VM_CORES_MASK = 'all'
 MAX_VLAN = 4095
diff --git a/tests/TestSuite_kni.py b/tests/TestSuite_kni.py
index ba946140..689dca76 100644
--- a/tests/TestSuite_kni.py
+++ b/tests/TestSuite_kni.py
@@ -36,14 +36,14 @@ DPDK Test suite.
 Test Kernel NIC Interface.
 """
 
-import utils
+import framework.utils as utils
 import re
 import os
 import time
 from random import randint
-from pktgen import PacketGeneratorHelper
-from test_case import TestCase
-import packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+import framework.packet as packet
 
 dut_ports = []
 port_virtual_interaces = []
diff --git a/tests/TestSuite_l2fwd.py b/tests/TestSuite_l2fwd.py
index 091ac093..03dce364 100644
--- a/tests/TestSuite_l2fwd.py
+++ b/tests/TestSuite_l2fwd.py
@@ -34,10 +34,10 @@ Test Layer-2 Forwarding support
 """
 import os
 import time
-import utils
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestL2fwd(TestCase):
diff --git a/tests/TestSuite_l2fwd_cryptodev_func.py b/tests/TestSuite_l2fwd_cryptodev_func.py
index de0c0447..c9671c3c 100644
--- a/tests/TestSuite_l2fwd_cryptodev_func.py
+++ b/tests/TestSuite_l2fwd_cryptodev_func.py
@@ -33,9 +33,9 @@ import hmac
 import hashlib
 import binascii
 import time
-import utils
-from test_case import TestCase
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
 
 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
 from cryptography.hazmat.primitives.ciphers.aead import AESCCM, AESGCM
@@ -47,7 +47,7 @@ from cryptography.hazmat.backends import default_backend
 import CryptoMobile.CM as cm
 import pyDes
 
-import cryptodev_common as cc
+import tests.cryptodev_common as cc
 
 class TestL2fwdCrypto(TestCase):
 
diff --git a/tests/TestSuite_l2fwd_jobstats.py b/tests/TestSuite_l2fwd_jobstats.py
index 6c104168..bd60dc16 100644
--- a/tests/TestSuite_l2fwd_jobstats.py
+++ b/tests/TestSuite_l2fwd_jobstats.py
@@ -37,8 +37,8 @@ Test L2fwd Jobstats
 
 import time
 import re
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 
 class TestL2fwdJobstats(TestCase):
diff --git a/tests/TestSuite_l2tp_esp_coverage.py b/tests/TestSuite_l2tp_esp_coverage.py
index 10520c8b..5f8dda80 100644
--- a/tests/TestSuite_l2tp_esp_coverage.py
+++ b/tests/TestSuite_l2tp_esp_coverage.py
@@ -31,10 +31,10 @@
 
 import re
 import time
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
-import rte_flow_common as rfc
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+import tests.rte_flow_common as rfc
 
 vf0_mac = "00:11:22:33:44:55"
 
diff --git a/tests/TestSuite_l3fwd.py b/tests/TestSuite_l3fwd.py
index 4efcca09..6739ac87 100644
--- a/tests/TestSuite_l3fwd.py
+++ b/tests/TestSuite_l3fwd.py
@@ -33,8 +33,8 @@
 DPDK Test suite.
 Layer-3 forwarding test script.
 """
-from test_case import TestCase
-from perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
 
 
 class TestL3fwd(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_l3fwd_em.py b/tests/TestSuite_l3fwd_em.py
index 4879b503..e148083d 100644
--- a/tests/TestSuite_l3fwd_em.py
+++ b/tests/TestSuite_l3fwd_em.py
@@ -33,8 +33,8 @@
 DPDK Test suite.
 Layer-3 forwarding test script.
 """
-from test_case import TestCase
-from perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
 
 
 class TestL3fwdEm(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_l3fwd_lpm_ipv4.py b/tests/TestSuite_l3fwd_lpm_ipv4.py
index 3b881e0a..7ce887cb 100644
--- a/tests/TestSuite_l3fwd_lpm_ipv4.py
+++ b/tests/TestSuite_l3fwd_lpm_ipv4.py
@@ -33,8 +33,8 @@
 DPDK Test suite.
 Layer-3 forwarding test script.
 """
-from test_case import TestCase
-from perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
 
 
 class TestL3fwdLpmIpv4(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_l3fwd_lpm_ipv4_rfc2544.py b/tests/TestSuite_l3fwd_lpm_ipv4_rfc2544.py
index 5b4a0aa3..d167be04 100644
--- a/tests/TestSuite_l3fwd_lpm_ipv4_rfc2544.py
+++ b/tests/TestSuite_l3fwd_lpm_ipv4_rfc2544.py
@@ -33,8 +33,8 @@
 DPDK Test suite.
 Layer-3 forwarding test script.
 """
-from test_case import TestCase
-from perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
 
 
 class TestL3fwdLpmIpv4Rfc2544(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_l3fwd_lpm_ipv6.py b/tests/TestSuite_l3fwd_lpm_ipv6.py
index e53e4f77..bafd91c8 100644
--- a/tests/TestSuite_l3fwd_lpm_ipv6.py
+++ b/tests/TestSuite_l3fwd_lpm_ipv6.py
@@ -33,8 +33,8 @@
 DPDK Test suite.
 Layer-3 forwarding test script.
 """
-from test_case import TestCase
-from perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, MATCH_MODE, IP_TYPE
 
 
 class TestL3fwdLpmIpv6(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_l3fwdacl.py b/tests/TestSuite_l3fwdacl.py
index 4cc51d40..90905251 100644
--- a/tests/TestSuite_l3fwdacl.py
+++ b/tests/TestSuite_l3fwdacl.py
@@ -35,10 +35,10 @@ Layer-3 forwarding ACL test script.
 """
 
 import re
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
-import packet
+from framework.test_case import TestCase
+import framework.packet as packet
 
 class TestL3fwdacl(TestCase):
 
diff --git a/tests/TestSuite_large_vf.py b/tests/TestSuite_large_vf.py
index 84f592d1..68002c9b 100644
--- a/tests/TestSuite_large_vf.py
+++ b/tests/TestSuite_large_vf.py
@@ -32,11 +32,11 @@
 import re
 import time
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
-from utils import GREEN, RED
+from framework.utils import GREEN, RED
 
 multi_fdir_queue_group = {
     "match": [
diff --git a/tests/TestSuite_link_flowctrl.py b/tests/TestSuite_link_flowctrl.py
index 326f8b98..89b84aaf 100644
--- a/tests/TestSuite_link_flowctrl.py
+++ b/tests/TestSuite_link_flowctrl.py
@@ -34,15 +34,15 @@ DPDK Test suite.
 Test for Ethernet Link Flow Control Features by Poll Mode Drivers
 """
 
-import utils
+import framework.utils as utils
 import re
 import os
 
 from time import sleep
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestLinkFlowctrl(TestCase):
diff --git a/tests/TestSuite_link_status_interrupt.py b/tests/TestSuite_link_status_interrupt.py
index 2e8c282e..c9aa35bd 100644
--- a/tests/TestSuite_link_status_interrupt.py
+++ b/tests/TestSuite_link_status_interrupt.py
@@ -35,12 +35,12 @@ DPDK Test suite.
 Test link status.
 """
 
-import utils
+import framework.utils as utils
 import string
 import time
 import re
-from test_case import TestCase
-from packet import Packet
+from framework.test_case import TestCase
+from framework.packet import Packet
 
 
 class TestLinkStatusInterrupt(TestCase):
diff --git a/tests/TestSuite_linux_modules.py b/tests/TestSuite_linux_modules.py
index a5a1542a..8bc864e6 100644
--- a/tests/TestSuite_linux_modules.py
+++ b/tests/TestSuite_linux_modules.py
@@ -37,8 +37,8 @@ Linux Kernel Modules example.
 import os
 import time
 
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
 from framework import settings
 
diff --git a/tests/TestSuite_loadbalancer.py b/tests/TestSuite_loadbalancer.py
index 84e534c9..5cb44466 100644
--- a/tests/TestSuite_loadbalancer.py
+++ b/tests/TestSuite_loadbalancer.py
@@ -36,10 +36,10 @@ Test Load Balancer.
 
 """
 
-import dts
-from packet import Packet
-from test_case import TestCase
-import utils
+import framework.dts as dts
+from framework.packet import Packet
+from framework.test_case import TestCase
+import framework.utils as utils
 import time
 
 
diff --git a/tests/TestSuite_loopback_multi_paths_port_restart.py b/tests/TestSuite_loopback_multi_paths_port_restart.py
index 972a8b25..556d449e 100644
--- a/tests/TestSuite_loopback_multi_paths_port_restart.py
+++ b/tests/TestSuite_loopback_multi_paths_port_restart.py
@@ -37,11 +37,11 @@ Benchmark Vhost loopback for 7 RX/TX PATHs.
 Includes Mergeable, Normal, Vector_RX,Inorder_mergeable,
 Inorder_no_mergeable, VIRTIO1.1_mergeable, VIRTIO1.1_normal Path.
 """
-import utils
+import framework.utils as utils
 import time
 import re
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
 
 class TestLoopbackPortRestart(TestCase):
diff --git a/tests/TestSuite_loopback_multi_queues.py b/tests/TestSuite_loopback_multi_queues.py
index 4700c2d4..d76b63e6 100644
--- a/tests/TestSuite_loopback_multi_queues.py
+++ b/tests/TestSuite_loopback_multi_queues.py
@@ -36,11 +36,11 @@ Includes Mergeable, Normal, Vector_RX, Inorder mergeable,
 Inorder no-mergeable, Virtio 1.1 mergeable, Virtio 1.1 no-mergeable Path.
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
 
 class TestLoopbackMultiQueues(TestCase):
diff --git a/tests/TestSuite_loopback_virtio_user_server_mode.py b/tests/TestSuite_loopback_virtio_user_server_mode.py
index 0178ca34..8531f647 100644
--- a/tests/TestSuite_loopback_virtio_user_server_mode.py
+++ b/tests/TestSuite_loopback_virtio_user_server_mode.py
@@ -35,11 +35,11 @@
 DPDK Test suite.
 Test loopback virtio-user server mode
 """
-import utils
+import framework.utils as utils
 import time
 import re
-from pmd_output import PmdOutput
-from test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
 
 class TestLoopbackVirtioUserServerMode(TestCase):
diff --git a/tests/TestSuite_mac_filter.py b/tests/TestSuite_mac_filter.py
index 112914d6..7742ad58 100644
--- a/tests/TestSuite_mac_filter.py
+++ b/tests/TestSuite_mac_filter.py
@@ -34,11 +34,11 @@ DPDK Test suite.
 Test the support of Allowlist Features by Poll Mode Drivers
 """
 
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 import operator
 
 class TestMacFilter(TestCase):
diff --git a/tests/TestSuite_macsec_for_ixgbe.py b/tests/TestSuite_macsec_for_ixgbe.py
index 4b010d08..a9f793ae 100644
--- a/tests/TestSuite_macsec_for_ixgbe.py
+++ b/tests/TestSuite_macsec_for_ixgbe.py
@@ -33,10 +33,10 @@ import re
 import time
 import os
 
-from test_case import TestCase
-from dut import Dut
-from pktgen import PacketGeneratorHelper
-from packet import Packet
+from framework.test_case import TestCase
+from framework.dut import Dut
+from framework.pktgen import PacketGeneratorHelper
+from framework.packet import Packet
 
 class TestMacsecForIxgbe(TestCase):
     def set_up_all(self):
diff --git a/tests/TestSuite_malicious_driver_event_indication.py b/tests/TestSuite_malicious_driver_event_indication.py
index 8b446cf2..3da9dfba 100644
--- a/tests/TestSuite_malicious_driver_event_indication.py
+++ b/tests/TestSuite_malicious_driver_event_indication.py
@@ -38,12 +38,12 @@ import re
 import time
 import traceback
 from contextlib import contextmanager
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 
 
-from exception import VerifyFailure
-from test_case import TestCase
-import utils
+from framework.exception import VerifyFailure
+from framework.test_case import TestCase
+import framework.utils as utils
 
 
 class TestSuiteMaliciousDrvEventIndication(TestCase):
diff --git a/tests/TestSuite_mdd.py b/tests/TestSuite_mdd.py
index 8aad1a72..cd07ae81 100644
--- a/tests/TestSuite_mdd.py
+++ b/tests/TestSuite_mdd.py
@@ -37,10 +37,10 @@ Test the support of Malicious Driver Detection
 
 import re
 import time
-from packet import Packet
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 VM_CORES_MASK = 'all'
 send_pks_num = 2000
diff --git a/tests/TestSuite_metering_and_policing.py b/tests/TestSuite_metering_and_policing.py
index a566c65c..b80054dc 100644
--- a/tests/TestSuite_metering_and_policing.py
+++ b/tests/TestSuite_metering_and_policing.py
@@ -34,15 +34,15 @@ Test metering_and_policing.
 """
 
 import os
-import utils
+import framework.utils as utils
 import string
 import time
 import re
-from test_case import TestCase
-from plotting import Plotting
-from settings import HEADER_SIZE
-from dut import Dut
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.plotting import Plotting
+from framework.settings import HEADER_SIZE
+from framework.dut import Dut
+from framework.pmd_output import PmdOutput
 
 
 class TestMeteringAndPolicing(TestCase):
diff --git a/tests/TestSuite_metrics.py b/tests/TestSuite_metrics.py
index d1b7fe9c..fd5013e5 100644
--- a/tests/TestSuite_metrics.py
+++ b/tests/TestSuite_metrics.py
@@ -41,13 +41,13 @@ import traceback
 from copy import deepcopy
 from pprint import pformat
 
-from test_case import TestCase
-from pmd_output import PmdOutput
-from exception import VerifyFailure
-from settings import HEADER_SIZE
-from packet import Packet
-from pktgen import TRANSMIT_CONT
-from config import SuiteConf
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.exception import VerifyFailure
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.pktgen import TRANSMIT_CONT
+from framework.config import SuiteConf
 
 
 class TestMetrics(TestCase):
diff --git a/tests/TestSuite_mtu_update.py b/tests/TestSuite_mtu_update.py
index f1da8660..bf25d81e 100644
--- a/tests/TestSuite_mtu_update.py
+++ b/tests/TestSuite_mtu_update.py
@@ -39,20 +39,20 @@ import subprocess
 from time import sleep
 from typing import List, Tuple
 
-import utils
-from pmd_output import PmdOutput
-from test_case import TestCase
+import framework.utils as utils
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
-from pktgen_base import TRANSMIT_S_BURST
+from framework.pktgen_base import TRANSMIT_S_BURST
 
-import utils
+import framework.utils as utils
 import re
 import time
-from test_case import TestCase
-from pktgen import TRANSMIT_CONT
+from framework.test_case import TestCase
+from framework.pktgen import TRANSMIT_CONT
 
-from packet import Packet
-from settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.settings import HEADER_SIZE
 
 ETHER_HEADER_LEN = 18
 VLAN=4
diff --git a/tests/TestSuite_multicast.py b/tests/TestSuite_multicast.py
index a163a151..6d6a7ed0 100644
--- a/tests/TestSuite_multicast.py
+++ b/tests/TestSuite_multicast.py
@@ -36,8 +36,8 @@ multicast test script.
 """
 
 import time
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 routeTbl = [
     ["224.0.0.101", "P1"], ["224.0.0.102", "P2"],
diff --git a/tests/TestSuite_multiple_pthread.py b/tests/TestSuite_multiple_pthread.py
index 8d9dc3f7..58c8abd9 100644
--- a/tests/TestSuite_multiple_pthread.py
+++ b/tests/TestSuite_multiple_pthread.py
@@ -34,9 +34,9 @@ import os
 import re
 import random
 import string
-import utils
-from test_case import TestCase
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
 
 
 class TestMultiplePthread(TestCase):
diff --git a/tests/TestSuite_multiprocess.py b/tests/TestSuite_multiprocess.py
index 743ca1f3..a5985178 100644
--- a/tests/TestSuite_multiprocess.py
+++ b/tests/TestSuite_multiprocess.py
@@ -34,13 +34,13 @@ DPDK Test suite.
 Multi-process Test.
 """
 
-import utils
+import framework.utils as utils
 import time
 import os
 
 executions = []
-from test_case import TestCase
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestMultiprocess(TestCase):
diff --git a/tests/TestSuite_netmap_compat.py b/tests/TestSuite_netmap_compat.py
index 31fa684c..787098d1 100644
--- a/tests/TestSuite_netmap_compat.py
+++ b/tests/TestSuite_netmap_compat.py
@@ -35,11 +35,11 @@ DPDK Test suite.
 Test Netmap_compat.
 """
 
-import utils
+import framework.utils as utils
 import string
 import time
 import re
-from test_case import TestCase
+from framework.test_case import TestCase
 
 class TestNetmapCompat(TestCase):
 
diff --git a/tests/TestSuite_nic_single_core_perf.py b/tests/TestSuite_nic_single_core_perf.py
index 4ccc04ac..45adf06a 100644
--- a/tests/TestSuite_nic_single_core_perf.py
+++ b/tests/TestSuite_nic_single_core_perf.py
@@ -32,18 +32,18 @@
 DPDK Test suite.
 """
 
-import utils
+import framework.utils as utils
 import json
 import os
 import string
-from test_case import TestCase
-from exception import VerifyFailure
-from settings import HEADER_SIZE, UPDATE_EXPECTED, load_global_setting
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.settings import HEADER_SIZE, UPDATE_EXPECTED, load_global_setting
+from framework.pmd_output import PmdOutput
 from copy import deepcopy
 from numpy import mean
-import rst
-from pktgen import PacketGeneratorHelper
+import framework.rst as rst
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestNicSingleCorePerf(TestCase):
diff --git a/tests/TestSuite_ntb.py b/tests/TestSuite_ntb.py
index e5013132..fe037057 100644
--- a/tests/TestSuite_ntb.py
+++ b/tests/TestSuite_ntb.py
@@ -32,11 +32,11 @@
 import os
 import re
 import time
-from test_case import TestCase
-from net_device import GetNicObj
-from settings import HEADER_SIZE
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from nics.net_device import GetNicObj
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 class TestNtb(TestCase):
 
diff --git a/tests/TestSuite_nvgre.py b/tests/TestSuite_nvgre.py
index 1b1a50db..7b3a04bb 100644
--- a/tests/TestSuite_nvgre.py
+++ b/tests/TestSuite_nvgre.py
@@ -36,13 +36,13 @@ Test NVGRE features in DPDK.
 
 """
 
-import utils
+import framework.utils as utils
 import string
 import re
 import time
 import os
-from pmd_output import PmdOutput
-from packet import IncreaseIP, IncreaseIPv6
+from framework.pmd_output import PmdOutput
+from framework.packet import IncreaseIP, IncreaseIPv6
 from random import randint
 
 from socket import AF_INET6
@@ -55,8 +55,8 @@ from scapy.sendrecv import sniff
 from scapy.config import conf
 from scapy.route import *
 
-from test_case import TestCase
-from settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
 
 #
 #
diff --git a/tests/TestSuite_packet_capture.py b/tests/TestSuite_packet_capture.py
index 4b980558..b41e7594 100644
--- a/tests/TestSuite_packet_capture.py
+++ b/tests/TestSuite_packet_capture.py
@@ -46,10 +46,10 @@ from scapy.packet import NoPayload
 from scapy.packet import Packet as scapyPacket
 from scapy.fields import ConditionalField
 
-from test_case import TestCase
-from exception import VerifyFailure
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 
 # These source code copy from packet.py module before sniff_packets/load_sniff_packets
diff --git a/tests/TestSuite_packet_ordering.py b/tests/TestSuite_packet_ordering.py
index 807a3c0d..7cb2ad8e 100644
--- a/tests/TestSuite_packet_ordering.py
+++ b/tests/TestSuite_packet_ordering.py
@@ -36,9 +36,9 @@ Packet ordering example app test cases.
 
 import os
 import time
-import utils
-from test_case import TestCase
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
 
 
 class TestPacketOrdering(TestCase):
diff --git a/tests/TestSuite_perf_virtio_user_loopback.py b/tests/TestSuite_perf_virtio_user_loopback.py
index 4408786c..8e7df7e9 100644
--- a/tests/TestSuite_perf_virtio_user_loopback.py
+++ b/tests/TestSuite_perf_virtio_user_loopback.py
@@ -37,16 +37,16 @@ Inorder non-mergeable, packed ring mergeable, non-mergeable, inorder mergeable,
 inorder non-mergeable Path.
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 import json
-import rst
+import framework.rst as rst
 import os
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 from copy import deepcopy
-from test_case import TestCase
-from settings import UPDATE_EXPECTED, load_global_setting
+from framework.test_case import TestCase
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 
 
 class TestPerfVirtioUserLoopback(TestCase):
diff --git a/tests/TestSuite_perf_virtio_user_pvp.py b/tests/TestSuite_perf_virtio_user_pvp.py
index 344dba5a..3789f244 100644
--- a/tests/TestSuite_perf_virtio_user_pvp.py
+++ b/tests/TestSuite_perf_virtio_user_pvp.py
@@ -32,15 +32,15 @@
 """
 DPDK Test suite.
 """
-import utils
+import framework.utils as utils
 import json
-import rst
+import framework.rst as rst
 import os
 import re
 import time
-from test_case import TestCase
-from packet import Packet
-from settings import UPDATE_EXPECTED, load_global_setting
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 from copy import deepcopy
 
 
diff --git a/tests/TestSuite_perf_vm2vm_virtio_net_perf.py b/tests/TestSuite_perf_vm2vm_virtio_net_perf.py
index ac0e38a2..672bbe39 100644
--- a/tests/TestSuite_perf_vm2vm_virtio_net_perf.py
+++ b/tests/TestSuite_perf_vm2vm_virtio_net_perf.py
@@ -40,15 +40,15 @@ please use qemu version greater 4.1.94 which support packed feathur to test this
 """
 import re
 import os
-import rst
+import framework.rst as rst
 import json
 import time
 import string
 import random
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import UPDATE_EXPECTED, load_global_setting
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 from copy import deepcopy
 
 
diff --git a/tests/TestSuite_performance_thread.py b/tests/TestSuite_performance_thread.py
index 3ff20150..9e138d08 100644
--- a/tests/TestSuite_performance_thread.py
+++ b/tests/TestSuite_performance_thread.py
@@ -35,10 +35,10 @@ Performance-Thread test script.
 """
 import os
 import string
-import utils
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPerformanceThread(TestCase):
diff --git a/tests/TestSuite_pf_smoke.py b/tests/TestSuite_pf_smoke.py
index 63eb2c7e..e4dffdaf 100644
--- a/tests/TestSuite_pf_smoke.py
+++ b/tests/TestSuite_pf_smoke.py
@@ -29,14 +29,14 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from smoke_base import SmokeTest
-from smoke_base import JUMBO_FRAME_LENGTH
-from smoke_base import JUMBO_FRAME_MTU
-from smoke_base import DEFAULT_MTU_VALUE
-from smoke_base import LAUNCH_QUEUE
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from .smoke_base import SmokeTest
+from .smoke_base import JUMBO_FRAME_LENGTH
+from .smoke_base import JUMBO_FRAME_MTU
+from .smoke_base import DEFAULT_MTU_VALUE
+from .smoke_base import LAUNCH_QUEUE
 
 
 class TestPfSmoke(TestCase):
diff --git a/tests/TestSuite_pipeline.py b/tests/TestSuite_pipeline.py
index e00f2e9b..ba7131ec 100644
--- a/tests/TestSuite_pipeline.py
+++ b/tests/TestSuite_pipeline.py
@@ -29,25 +29,25 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-import utils
+import framework.utils as utils
 import re
 import time
 import socket
 
-from settings import HEADER_SIZE
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import DRIVERS
-from crb import Crb
+from framework.settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
+from framework.crb import Crb
 
-from virt_dut import VirtDut
-from project_dpdk import DPDKdut
-from dut import Dut
-from packet import Packet
+from framework.virt_dut import VirtDut
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.packet import Packet
 
 import os
 import random
-from exception import VerifyFailure
+from framework.exception import VerifyFailure
 import scapy.layers.inet
 from scapy.utils import rdpcap
 
diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py
index 48d35831..72f0e473 100644
--- a/tests/TestSuite_pmd.py
+++ b/tests/TestSuite_pmd.py
@@ -34,21 +34,21 @@ DPDK Test suite.
 Test userland 10Gb PMD
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
 import os
 
-from test_case import TestCase
+from framework.test_case import TestCase
 from time import sleep
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
 
-from settings import FOLDERS
-from system_info import SystemInfo
-import perf_report
+from framework.settings import FOLDERS
+from nics.system_info import SystemInfo
+import nics.perf_report as perf_report
 from datetime import datetime
-from pktgen import PacketGeneratorHelper
+from framework.pktgen import PacketGeneratorHelper
 
 class TestPmd(TestCase):
 
diff --git a/tests/TestSuite_pmd_bonded.py b/tests/TestSuite_pmd_bonded.py
index c5c1a667..253c1a69 100644
--- a/tests/TestSuite_pmd_bonded.py
+++ b/tests/TestSuite_pmd_bonded.py
@@ -43,11 +43,11 @@ import random
 from socket import htons, htonl
 from functools import wraps
 
-import utils
-from test_case import TestCase
-from exception import TimeoutException
-from settings import TIMEOUT
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.exception import TimeoutException
+from framework.settings import TIMEOUT
+from framework.pmd_output import PmdOutput
 
 SOCKET_0 = 0
 SOCKET_1 = 1
diff --git a/tests/TestSuite_pmd_bonded_8023ad.py b/tests/TestSuite_pmd_bonded_8023ad.py
index 37070421..cdac97ec 100644
--- a/tests/TestSuite_pmd_bonded_8023ad.py
+++ b/tests/TestSuite_pmd_bonded_8023ad.py
@@ -34,12 +34,12 @@ import re
 import traceback
 
 # import dts/framework libs
-from test_case import TestCase
-from exception import VerifyFailure
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
 
 # import bonding lib(common methods for pmd bonding command)
-import bonding
-from bonding import MODE_LACP, FRAME_SIZE_64
+import tests.bonding as bonding
+from .bonding import MODE_LACP, FRAME_SIZE_64
 
 ######################
 # bonding 802.3ad mode
diff --git a/tests/TestSuite_pmd_stacked_bonded.py b/tests/TestSuite_pmd_stacked_bonded.py
index 12c384fb..66dc00eb 100644
--- a/tests/TestSuite_pmd_stacked_bonded.py
+++ b/tests/TestSuite_pmd_stacked_bonded.py
@@ -33,13 +33,13 @@ import time
 import traceback
 
 # import dts/framework libs
-import utils
-from test_case import TestCase
-from exception import VerifyFailure
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
 
 # import bonding lib
-import bonding
-from bonding import (
+import tests.bonding as bonding
+from .bonding import (
                 MODE_ROUND_ROBIN,
                 MODE_ACTIVE_BACKUP,
                 MODE_XOR_BALANCE,
diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index 0913e9bf..e08dc61c 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -31,12 +31,12 @@
 
 '''
 '''
-from test_case import TestCase
+from framework.test_case import TestCase
 
 from time import sleep
 from scapy.layers.inet import Ether, IP
 from scapy.utils import wrpcap
-import utils
+import framework.utils as utils
 
 
 #
diff --git a/tests/TestSuite_pmdrss_hash.py b/tests/TestSuite_pmdrss_hash.py
index 9ea6f9ae..4e9dd459 100644
--- a/tests/TestSuite_pmdrss_hash.py
+++ b/tests/TestSuite_pmdrss_hash.py
@@ -39,7 +39,7 @@ Support 4*10G, 1*40G and 2*40G NICs.
 import time
 import random
 import re
-import utils
+import framework.utils as utils
 
 queue = 16
 reta_entries = []
@@ -60,7 +60,7 @@ iptypes = {'ipv4-sctp': 'sctp',
 
 # Use scapy to send packets with different source and dest ip.
 # and collect the hash result of five tuple and the queue id.
-from test_case import TestCase
+from framework.test_case import TestCase
 #
 #
 # Test class.
diff --git a/tests/TestSuite_pmdrssreta.py b/tests/TestSuite_pmdrssreta.py
index ce3ee421..230d588b 100644
--- a/tests/TestSuite_pmdrssreta.py
+++ b/tests/TestSuite_pmdrssreta.py
@@ -36,7 +36,7 @@ Test RSS reta (redirection table) update function.
 import time
 import random
 import re
-import utils
+import framework.utils as utils
 import textwrap
 testQueues = [2, 9, 16]
 reta_entries = []
@@ -44,8 +44,8 @@ reta_lines = []
 
 # Use scapy to send packets with different source and dest ip.
 # and collect the hash result of five tuple and the queue id.
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestPmdrssreta(TestCase):
diff --git a/tests/TestSuite_port_control.py b/tests/TestSuite_port_control.py
index e8d96f5a..7a87808e 100644
--- a/tests/TestSuite_port_control.py
+++ b/tests/TestSuite_port_control.py
@@ -30,13 +30,13 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import os
-import utils
+import framework.utils as utils
 import time
 import re
-import packet
-from test_case import TestCase
-from pmd_output import PmdOutput
-from virt_common import VM
+import framework.packet as packet
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.virt_common import VM
 
 
 class TestPortControl(TestCase):
diff --git a/tests/TestSuite_port_representor.py b/tests/TestSuite_port_representor.py
index e2fe0dc8..51ec9982 100644
--- a/tests/TestSuite_port_representor.py
+++ b/tests/TestSuite_port_representor.py
@@ -39,10 +39,10 @@ independent on the control plane and data plane.
 import time
 import re
 
-from test_case import TestCase
-from dut import Dut
-from packet import Packet
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.dut import Dut
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
 
 
 class TestPortRepresentor(TestCase):
diff --git a/tests/TestSuite_power_bidirection_channel.py b/tests/TestSuite_power_bidirection_channel.py
index 1aa02976..6f1a71cb 100644
--- a/tests/TestSuite_power_bidirection_channel.py
+++ b/tests/TestSuite_power_bidirection_channel.py
@@ -37,10 +37,10 @@ import os
 import time
 import traceback
 
-from utils import create_mask as dts_create_mask
-from qemu_libvirt import LibvirtKvm
-from exception import VerifyFailure
-from test_case import TestCase
+from framework.utils import create_mask as dts_create_mask
+from framework.qemu_libvirt import LibvirtKvm
+from framework.exception import VerifyFailure
+from framework.test_case import TestCase
 
 
 class TestPowerBidirectionChannel(TestCase):
diff --git a/tests/TestSuite_power_branch_ratio.py b/tests/TestSuite_power_branch_ratio.py
index a157539a..9b7ed953 100644
--- a/tests/TestSuite_power_branch_ratio.py
+++ b/tests/TestSuite_power_branch_ratio.py
@@ -42,15 +42,15 @@ from pprint import pformat
 import traceback
 
 
-from settings import load_global_setting
-from settings import HOST_BUILD_TYPE_SETTING
-from utils import create_mask as dts_create_mask
-from qemu_libvirt import LibvirtKvm
-from pktgen import TRANSMIT_CONT
-from exception import VerifyFailure
-from settings import HEADER_SIZE
-from packet import Packet
-from test_case import TestCase
+from framework.settings import load_global_setting
+from framework.settings import HOST_BUILD_TYPE_SETTING
+from framework.utils import create_mask as dts_create_mask
+from framework.qemu_libvirt import LibvirtKvm
+from framework.pktgen import TRANSMIT_CONT
+from framework.exception import VerifyFailure
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.test_case import TestCase
 
 
 class TestPowerBranchRatio(TestCase):
diff --git a/tests/TestSuite_power_empty_poll.py b/tests/TestSuite_power_empty_poll.py
index bb69656d..0e44c475 100644
--- a/tests/TestSuite_power_empty_poll.py
+++ b/tests/TestSuite_power_empty_poll.py
@@ -39,12 +39,12 @@ import traceback
 from copy import deepcopy
 from pprint import pformat
 
-from utils import create_mask as dts_create_mask
-from exception import VerifyFailure
-from test_case import TestCase
-from settings import HEADER_SIZE, PKTGEN_TREX
-from packet import Packet
-from pktgen import TRANSMIT_CONT
+from framework.utils import create_mask as dts_create_mask
+from framework.exception import VerifyFailure
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE, PKTGEN_TREX
+from framework.packet import Packet
+from framework.pktgen import TRANSMIT_CONT
 
 
 class TestPowerEmptyPoll(TestCase):
diff --git a/tests/TestSuite_power_negative.py b/tests/TestSuite_power_negative.py
index f6d41491..e28e7334 100644
--- a/tests/TestSuite_power_negative.py
+++ b/tests/TestSuite_power_negative.py
@@ -39,10 +39,10 @@ import re
 import time
 import traceback
 
-from utils import create_mask as dts_create_mask
-from qemu_libvirt import LibvirtKvm
-from exception import VerifyFailure
-from test_case import TestCase
+from framework.utils import create_mask as dts_create_mask
+from framework.qemu_libvirt import LibvirtKvm
+from framework.exception import VerifyFailure
+from framework.test_case import TestCase
 
 
 class TestPowerNegative(TestCase):
diff --git a/tests/TestSuite_power_pbf.py b/tests/TestSuite_power_pbf.py
index 083fd5b3..be7fa8a0 100644
--- a/tests/TestSuite_power_pbf.py
+++ b/tests/TestSuite_power_pbf.py
@@ -39,12 +39,12 @@ import traceback
 from collections import Counter
 from pprint import pformat
 
-# import dts libs
-from settings import load_global_setting
-from settings import HOST_BUILD_TYPE_SETTING
-from test_case import TestCase
-from exception import VerifyFailure
-from utils import create_mask
+# import framework.dts as dts libs
+from framework.settings import load_global_setting
+from framework.settings import HOST_BUILD_TYPE_SETTING
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.utils import create_mask
 
 
 class TestPowerPbf(TestCase):
diff --git a/tests/TestSuite_power_pstate.py b/tests/TestSuite_power_pstate.py
index 220fe6ff..ed3d78ea 100644
--- a/tests/TestSuite_power_pstate.py
+++ b/tests/TestSuite_power_pstate.py
@@ -37,10 +37,10 @@ import traceback
 from collections import Counter
 from pprint import pformat
 
-# import dts libs
-from test_case import TestCase
-from exception import VerifyFailure
-from utils import create_mask
+# import framework.dts as dts libs
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.utils import create_mask
 
 
 class TestPowerPstate(TestCase):
diff --git a/tests/TestSuite_power_telemetry.py b/tests/TestSuite_power_telemetry.py
index 0af30d77..6b94f171 100644
--- a/tests/TestSuite_power_telemetry.py
+++ b/tests/TestSuite_power_telemetry.py
@@ -42,15 +42,15 @@ import json
 from copy import deepcopy
 from pprint import pformat
 
-from settings import load_global_setting
-from settings import HOST_BUILD_TYPE_SETTING
-from utils import create_mask as dts_create_mask
-from settings import HEADER_SIZE
-from test_case import TestCase
-from pktgen import TRANSMIT_CONT
-from exception import VerifyFailure
-
-from packet import Packet
+from framework.settings import load_global_setting
+from framework.settings import HOST_BUILD_TYPE_SETTING
+from framework.utils import create_mask as dts_create_mask
+from framework.settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.pktgen import TRANSMIT_CONT
+from framework.exception import VerifyFailure
+
+from framework.packet import Packet
 
 
 class TestPowerTelemetry(TestCase):
diff --git a/tests/TestSuite_ptpclient.py b/tests/TestSuite_ptpclient.py
index 858d5f46..dd0daafd 100644
--- a/tests/TestSuite_ptpclient.py
+++ b/tests/TestSuite_ptpclient.py
@@ -34,10 +34,10 @@ DPDK Test suite.
 Test support of IEEE1588 Precise Time Protocol.
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
-from test_case import TestCase
+from framework.test_case import TestCase
 
 class TestPtpClient(TestCase):
 
diff --git a/tests/TestSuite_ptype_mapping.py b/tests/TestSuite_ptype_mapping.py
index 0d650e0b..a5e04774 100644
--- a/tests/TestSuite_ptype_mapping.py
+++ b/tests/TestSuite_ptype_mapping.py
@@ -30,11 +30,11 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-import utils
-from test_case import TestCase
-from exception import VerifyFailure
-from pmd_output import PmdOutput
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 import time
 import re
 
diff --git a/tests/TestSuite_pvp_diff_qemu_version.py b/tests/TestSuite_pvp_diff_qemu_version.py
index bdf3f67c..e00151e9 100644
--- a/tests/TestSuite_pvp_diff_qemu_version.py
+++ b/tests/TestSuite_pvp_diff_qemu_version.py
@@ -40,12 +40,12 @@ qemu =
 """
 import re
 import time
-import utils
+import framework.utils as utils
 from scapy.utils import wrpcap
-from test_case import TestCase
-from settings import HEADER_SIZE
-from virt_common import VM
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.virt_common import VM
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVhostPVPDiffQemuVersion(TestCase):
diff --git a/tests/TestSuite_pvp_multi_paths_performance.py b/tests/TestSuite_pvp_multi_paths_performance.py
index 11db11ee..8ef9b085 100644
--- a/tests/TestSuite_pvp_multi_paths_performance.py
+++ b/tests/TestSuite_pvp_multi_paths_performance.py
@@ -34,15 +34,15 @@ DPDK Test suite.
 Test PVP performance using virtio_user on 8 tx/rx path.
 """
 import json
-import rst
+import framework.rst as rst
 import os
-import utils
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from settings import UPDATE_EXPECTED, load_global_setting
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 from copy import deepcopy
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 
 
 class TestPVPMultiPathPerformance(TestCase):
diff --git a/tests/TestSuite_pvp_multi_paths_vhost_single_core_performance.py b/tests/TestSuite_pvp_multi_paths_vhost_single_core_performance.py
index d26b2719..bc32e793 100644
--- a/tests/TestSuite_pvp_multi_paths_vhost_single_core_performance.py
+++ b/tests/TestSuite_pvp_multi_paths_vhost_single_core_performance.py
@@ -35,15 +35,15 @@ Test PVP vhost single core performance using virtio_user on 8 tx/rx path.
 """
 
 import json
-import rst
+import framework.rst as rst
 import os
-import utils
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from settings import UPDATE_EXPECTED, load_global_setting
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 from copy import deepcopy
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 
 
 class TestPVPMultiPathVhostPerformance(TestCase):
diff --git a/tests/TestSuite_pvp_multi_paths_virtio_single_core_performance.py b/tests/TestSuite_pvp_multi_paths_virtio_single_core_performance.py
index 03c5a3ce..620bdcc3 100644
--- a/tests/TestSuite_pvp_multi_paths_virtio_single_core_performance.py
+++ b/tests/TestSuite_pvp_multi_paths_virtio_single_core_performance.py
@@ -35,15 +35,15 @@ Test PVP virtio single core performance using virtio_user on 8 tx/rx path.
 """
 
 import json
-import rst
+import framework.rst as rst
 import os
-import utils
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from settings import UPDATE_EXPECTED, load_global_setting
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 from copy import deepcopy
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 
 
 class TestPVPMultiPathVirtioPerformance(TestCase):
diff --git a/tests/TestSuite_pvp_qemu_multi_paths_port_restart.py b/tests/TestSuite_pvp_qemu_multi_paths_port_restart.py
index 1c31ce6f..b4306eea 100644
--- a/tests/TestSuite_pvp_qemu_multi_paths_port_restart.py
+++ b/tests/TestSuite_pvp_qemu_multi_paths_port_restart.py
@@ -38,13 +38,13 @@ includes Mergeable, Normal, Vector_RX.
 Cover virtio 1.0 and virtio 0.95.Also cover
 port restart test with each path
 """
-import utils
+import framework.utils as utils
 import time
 import re
-from virt_common import VM
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPVPQemuMultiPathPortRestart(TestCase):
diff --git a/tests/TestSuite_pvp_share_lib.py b/tests/TestSuite_pvp_share_lib.py
index 6746ff89..1d24a032 100644
--- a/tests/TestSuite_pvp_share_lib.py
+++ b/tests/TestSuite_pvp_share_lib.py
@@ -34,10 +34,10 @@ DPDK Test suite.
 The feature need compile dpdk as shared libraries.
 """
 
-import utils
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPVPShareLib(TestCase):
diff --git a/tests/TestSuite_pvp_vhost_user_built_in_net_driver.py b/tests/TestSuite_pvp_vhost_user_built_in_net_driver.py
index a0d16671..b1843749 100644
--- a/tests/TestSuite_pvp_vhost_user_built_in_net_driver.py
+++ b/tests/TestSuite_pvp_vhost_user_built_in_net_driver.py
@@ -33,13 +33,13 @@
 DPDK Test suite.
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
+from framework.pmd_output import PmdOutput
 
 
 class TestPVPVhostUserBuiltInNetDriver(TestCase):
diff --git a/tests/TestSuite_pvp_vhost_user_reconnect.py b/tests/TestSuite_pvp_vhost_user_reconnect.py
index 4be19c5a..fd880bd3 100644
--- a/tests/TestSuite_pvp_vhost_user_reconnect.py
+++ b/tests/TestSuite_pvp_vhost_user_reconnect.py
@@ -37,12 +37,12 @@ Becase this suite will use the reconnet feature, the VM will start as
 server mode, so the qemu version should greater than 2.7
 """
 import re
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
-from virt_common import VM
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.virt_common import VM
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPVPVhostUserReconnect(TestCase):
diff --git a/tests/TestSuite_pvp_virtio_bonding.py b/tests/TestSuite_pvp_virtio_bonding.py
index e6d0e61a..d5b67769 100644
--- a/tests/TestSuite_pvp_virtio_bonding.py
+++ b/tests/TestSuite_pvp_virtio_bonding.py
@@ -36,12 +36,12 @@ link bonding devices from within testpmd interactive prompt.
 """
 import re
 import time
-import utils
-from test_case import TestCase
-from virt_common import VM
-from pmd_output import PmdOutput
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.virt_common import VM
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPVPVirtIOBonding(TestCase):
diff --git a/tests/TestSuite_pvp_virtio_user_2M_hugepages.py b/tests/TestSuite_pvp_virtio_user_2M_hugepages.py
index c1685463..4174fe80 100644
--- a/tests/TestSuite_pvp_virtio_user_2M_hugepages.py
+++ b/tests/TestSuite_pvp_virtio_user_2M_hugepages.py
@@ -34,11 +34,11 @@ DPDK Test suite.
 vhost/virtio-user pvp with 2M hugepage.
 """
 
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPVPVirtioWith2Mhuge(TestCase):
diff --git a/tests/TestSuite_pvp_virtio_user_4k_pages.py b/tests/TestSuite_pvp_virtio_user_4k_pages.py
index 98cfdce6..4681a48a 100644
--- a/tests/TestSuite_pvp_virtio_user_4k_pages.py
+++ b/tests/TestSuite_pvp_virtio_user_4k_pages.py
@@ -34,11 +34,11 @@ DPDK Test suite.
 vhost/virtio-user pvp with 4K pages.
 """
 
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestPvpVirtioUser4kPages(TestCase):
diff --git a/tests/TestSuite_pvp_virtio_user_multi_queues_port_restart.py b/tests/TestSuite_pvp_virtio_user_multi_queues_port_restart.py
index eefc5bb4..36783a76 100644
--- a/tests/TestSuite_pvp_virtio_user_multi_queues_port_restart.py
+++ b/tests/TestSuite_pvp_virtio_user_multi_queues_port_restart.py
@@ -41,10 +41,10 @@ non-mergeable path, also cover port restart test with each path.
 """
 import time
 import re
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.pmd_output import PmdOutput
 
 class TestPVPVirtioUserMultiQueuesPortRestart(TestCase):
 
diff --git a/tests/TestSuite_qinq_filter.py b/tests/TestSuite_qinq_filter.py
index e19fe0f3..c841372a 100644
--- a/tests/TestSuite_qinq_filter.py
+++ b/tests/TestSuite_qinq_filter.py
@@ -37,10 +37,10 @@ Test the support of VLAN Offload Features by Poll Mode Drivers.
 
 """
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 import time
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 
 class TestQinqFilter(TestCase):
 
diff --git a/tests/TestSuite_qos_api.py b/tests/TestSuite_qos_api.py
index da2c544a..10035b78 100644
--- a/tests/TestSuite_qos_api.py
+++ b/tests/TestSuite_qos_api.py
@@ -34,14 +34,14 @@ DPDK Test suite.
 Test QOS API in DPDK.
 """
 
-import utils
+import framework.utils as utils
 import string
 import re
 import time
 import os
-from pktgen import PacketGeneratorHelper
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestQosApi(TestCase):
diff --git a/tests/TestSuite_qos_meter.py b/tests/TestSuite_qos_meter.py
index fa193126..2374989e 100644
--- a/tests/TestSuite_qos_meter.py
+++ b/tests/TestSuite_qos_meter.py
@@ -35,11 +35,11 @@ Test QOS API in DPDK.
 The DUT must have two 10G Ethernet ports connected to two ports of IXIA.
 """
 import os
-from test_case import TestCase
-from  settings import HEADER_SIZE
-from pktgen import TRANSMIT_CONT
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import TRANSMIT_CONT
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 
 class TestQosMeter(TestCase):
diff --git a/tests/TestSuite_queue_region.py b/tests/TestSuite_queue_region.py
index 29adaf41..bee17434 100644
--- a/tests/TestSuite_queue_region.py
+++ b/tests/TestSuite_queue_region.py
@@ -36,18 +36,18 @@ Test the support of VLAN Offload Features by Poll Mode Drivers.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
-from settings import DRIVERS
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
 
-from project_dpdk import DPDKdut
-from dut import Dut
-from packet import Packet
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.packet import Packet
 
 
 class TestQueue_region(TestCase):
diff --git a/tests/TestSuite_queue_start_stop.py b/tests/TestSuite_queue_start_stop.py
index 75718c8c..32d58fdc 100644
--- a/tests/TestSuite_queue_start_stop.py
+++ b/tests/TestSuite_queue_start_stop.py
@@ -41,10 +41,10 @@ Test queue start stop Feature
 import time
 import re
 import os
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import FOLDERS
-from packet import Packet, strip_pktload
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import FOLDERS
+from framework.packet import Packet, strip_pktload
 
 #
 #
diff --git a/tests/TestSuite_rss_key_update.py b/tests/TestSuite_rss_key_update.py
index f74641cb..35675037 100644
--- a/tests/TestSuite_rss_key_update.py
+++ b/tests/TestSuite_rss_key_update.py
@@ -40,10 +40,10 @@ Test the support of RSS Key Update by Poll Mode Drivers.
 import time
 import re
 import random
-import utils
+import framework.utils as utils
 
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 queue = 16
 reta_entries = []
diff --git a/tests/TestSuite_rss_to_rte_flow.py b/tests/TestSuite_rss_to_rte_flow.py
index 20deda0c..5edf4247 100644
--- a/tests/TestSuite_rss_to_rte_flow.py
+++ b/tests/TestSuite_rss_to_rte_flow.py
@@ -38,10 +38,10 @@ Test moving RSS to rte_flow.
 
 import time
 import re
-import packet
+import framework.packet as packet
 
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestRSS_to_Rteflow(TestCase):
diff --git a/tests/TestSuite_rte_flow.py b/tests/TestSuite_rte_flow.py
index 0cc9830f..f4141976 100644
--- a/tests/TestSuite_rte_flow.py
+++ b/tests/TestSuite_rte_flow.py
@@ -38,11 +38,11 @@ import time
 import ipaddress
 from typing import Callable
 
-import utils
-from pmd_output import PmdOutput
-from test_case import TestCase
+import framework.utils as utils
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 from framework.flow import generator
 
diff --git a/tests/TestSuite_rteflow_priority.py b/tests/TestSuite_rteflow_priority.py
index 353dc8f9..d65d82e3 100644
--- a/tests/TestSuite_rteflow_priority.py
+++ b/tests/TestSuite_rteflow_priority.py
@@ -41,11 +41,11 @@ import string
 from time import sleep
 from scapy.utils import struct, socket, PcapWriter
 
-import utils
-from etgen import IxiaPacketGenerator
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.etgen import IxiaPacketGenerator
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
 import sys
 import imp
 imp.reload(sys)
diff --git a/tests/TestSuite_runtime_vf_queue_number.py b/tests/TestSuite_runtime_vf_queue_number.py
index 1d7d536c..21b6bdd7 100644
--- a/tests/TestSuite_runtime_vf_queue_number.py
+++ b/tests/TestSuite_runtime_vf_queue_number.py
@@ -36,10 +36,10 @@ DPDK Test suite.
 
 import time
 import re
-from qemu_kvm import QEMUKvm
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 RSS_KEY = '6EA6A420D5138E712433B813AE45B3C4BECB2B405F31AD6C331835372D15E2D5E49566EE0ED1962AFA1B7932F3549520FD71C75E'
 PACKET_COUNT = 100
diff --git a/tests/TestSuite_runtime_vf_queue_number_kernel.py b/tests/TestSuite_runtime_vf_queue_number_kernel.py
index 3daf2347..a13ef30e 100644
--- a/tests/TestSuite_runtime_vf_queue_number_kernel.py
+++ b/tests/TestSuite_runtime_vf_queue_number_kernel.py
@@ -37,11 +37,11 @@ runtime_vf_queue_number_kernel test script.
 import random
 import time
 
-import utils
-from pmd_output import PmdOutput
-from test_case import TestCase
-from virt_common import VM
-from packet import Packet
+import framework.utils as utils
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.virt_common import VM
+from framework.packet import Packet
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_runtime_vf_queue_number_maxinum.py b/tests/TestSuite_runtime_vf_queue_number_maxinum.py
index 8e93c208..31aa20ac 100644
--- a/tests/TestSuite_runtime_vf_queue_number_maxinum.py
+++ b/tests/TestSuite_runtime_vf_queue_number_maxinum.py
@@ -37,8 +37,8 @@ DPDK Test suite.
 import time
 import re
 import math
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestRuntimeVfQnMaxinum(TestCase):
diff --git a/tests/TestSuite_rxtx_callbacks.py b/tests/TestSuite_rxtx_callbacks.py
index f7d343eb..54075946 100644
--- a/tests/TestSuite_rxtx_callbacks.py
+++ b/tests/TestSuite_rxtx_callbacks.py
@@ -34,10 +34,10 @@
 DPDK Test suite.
 Test Rxtx_Callbacks.
 """
-import utils
+import framework.utils as utils
 import string
 import time
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 class TestRxtxCallbacks(TestCase):
diff --git a/tests/TestSuite_rxtx_offload.py b/tests/TestSuite_rxtx_offload.py
index 0e70526f..a57a9cea 100644
--- a/tests/TestSuite_rxtx_offload.py
+++ b/tests/TestSuite_rxtx_offload.py
@@ -36,18 +36,18 @@ New RX/TX offload APIs.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pmd_output import PmdOutput
-from settings import DRIVERS
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pmd_output import PmdOutput
+from framework.settings import DRIVERS
 
-from project_dpdk import DPDKdut
-from dut import Dut
-from packet import Packet
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.packet import Packet
 
 ETHER_STANDARD_MTU = 1518
 ETHER_JUMBO_FRAME_MTU = 9000
diff --git a/tests/TestSuite_scatter.py b/tests/TestSuite_scatter.py
index 2049f357..80a0f3ef 100644
--- a/tests/TestSuite_scatter.py
+++ b/tests/TestSuite_scatter.py
@@ -33,9 +33,9 @@
 DPDK Test suite.
 Test Scattered Packets.
 """
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet, strip_pktload
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet, strip_pktload
 import time
 #
 #
diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 5ebf0b4d..c3b1fdc4 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -41,9 +41,9 @@ Test short live dpdk app Feature
 import time
 import re
 import os
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import FOLDERS
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import FOLDERS
 
 #
 #
diff --git a/tests/TestSuite_shutdown_api.py b/tests/TestSuite_shutdown_api.py
index 3810b53a..1d5a0873 100644
--- a/tests/TestSuite_shutdown_api.py
+++ b/tests/TestSuite_shutdown_api.py
@@ -36,19 +36,19 @@ Test Shutdown API Feature
 
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 import os
 import random
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE, PROTOCOL_PACKET_SIZE
-from exception import VerifyFailure
-from qemu_kvm import QEMUKvm
-from settings import get_nic_name
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE, PROTOCOL_PACKET_SIZE
+from framework.exception import VerifyFailure
+from framework.qemu_kvm import QEMUKvm
+from framework.settings import get_nic_name
 from random import randint
-from settings import DRIVERS
+from framework.settings import DRIVERS
 #
 #
 # Test class.
diff --git a/tests/TestSuite_skeleton.py b/tests/TestSuite_skeleton.py
index c2563dc3..816cfcfe 100644
--- a/tests/TestSuite_skeleton.py
+++ b/tests/TestSuite_skeleton.py
@@ -34,10 +34,10 @@
 DPDK Test suite.
 Test Skeleton.
 """
-import utils
+import framework.utils as utils
 import string
 import time
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 
diff --git a/tests/TestSuite_softnic.py b/tests/TestSuite_softnic.py
index e4934ffe..d29d2218 100644
--- a/tests/TestSuite_softnic.py
+++ b/tests/TestSuite_softnic.py
@@ -34,15 +34,15 @@ DPDK Test suite.
 Test softnic API in DPDK.
 """
 
-import utils
+import framework.utils as utils
 import string
 import re
 import time
-from settings import HEADER_SIZE
+from framework.settings import HEADER_SIZE
 import os
-from pktgen import PacketGeneratorHelper
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestSoftnic(TestCase):
diff --git a/tests/TestSuite_speed_capabilities.py b/tests/TestSuite_speed_capabilities.py
index 25c45e45..9fa441f5 100644
--- a/tests/TestSuite_speed_capabilities.py
+++ b/tests/TestSuite_speed_capabilities.py
@@ -33,9 +33,9 @@
 """
 DPDK Test suite.
 """
-import utils
-from pmd_output import PmdOutput
-from test_case import TestCase
+import framework.utils as utils
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
 
 
 class TestSpeedCapabilities(TestCase):
diff --git a/tests/TestSuite_sriov_kvm.py b/tests/TestSuite_sriov_kvm.py
index 1a0e3a53..c43087d4 100644
--- a/tests/TestSuite_sriov_kvm.py
+++ b/tests/TestSuite_sriov_kvm.py
@@ -42,11 +42,11 @@ import pdb
 import time
 import random
 
-from virt_common import VM
-from test_case import TestCase
+from framework.virt_common import VM
+from framework.test_case import TestCase
 
-from pmd_output import PmdOutput
-from settings import PROTOCOL_PACKET_SIZE
+from framework.pmd_output import PmdOutput
+from framework.settings import PROTOCOL_PACKET_SIZE
 
 FRAME_SIZE_64 = 64
 VM_CORES_MASK = 'all'
diff --git a/tests/TestSuite_stats_checks.py b/tests/TestSuite_stats_checks.py
index 5dc21b6d..b405f0d1 100644
--- a/tests/TestSuite_stats_checks.py
+++ b/tests/TestSuite_stats_checks.py
@@ -40,11 +40,11 @@ import random
 import struct
 import socket
 import re
-import utils
-from pmd_output import PmdOutput
-import packet
+import framework.utils as utils
+from framework.pmd_output import PmdOutput
+import framework.packet as packet
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 ETHER_HEADER_LEN = 18
 IP_HEADER_LEN = 20
diff --git a/tests/TestSuite_telemetry.py b/tests/TestSuite_telemetry.py
index 82a1d400..b87e5d58 100644
--- a/tests/TestSuite_telemetry.py
+++ b/tests/TestSuite_telemetry.py
@@ -36,9 +36,9 @@ import re
 import textwrap
 from pprint import pformat
 
-# import dts libs
-from test_case import TestCase
-from pmd_output import PmdOutput
+# import framework.dts as dts libs
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestTelemetry(TestCase):
diff --git a/tests/TestSuite_testpmd_perf.py b/tests/TestSuite_testpmd_perf.py
index db2eb3c7..477464bf 100644
--- a/tests/TestSuite_testpmd_perf.py
+++ b/tests/TestSuite_testpmd_perf.py
@@ -34,8 +34,8 @@ DPDK Test suite.
 testpmd perf test script.
 """
 
-from test_case import TestCase
-from perf_test_base import PerfTestBase, BIN_TYPE, MATCH_MODE, IP_TYPE
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, BIN_TYPE, MATCH_MODE, IP_TYPE
 
 
 class TestPmdPerf(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_timer.py b/tests/TestSuite_timer.py
index 77758823..73d4f217 100644
--- a/tests/TestSuite_timer.py
+++ b/tests/TestSuite_timer.py
@@ -34,12 +34,12 @@ DPDK Test suite.
 Test Timer.
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
 
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 class TestTimer(TestCase):
diff --git a/tests/TestSuite_tso.py b/tests/TestSuite_tso.py
index 1b5cda67..891833d0 100644
--- a/tests/TestSuite_tso.py
+++ b/tests/TestSuite_tso.py
@@ -37,14 +37,14 @@ Tests for TSO.
 
 """
 import os
-import utils
+import framework.utils as utils
 import time
 import re
 import os
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
-from packet import Packet
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
+from framework.packet import Packet
 
 DEFAULT_MUT = 1500
 TSO_MTU = 9000
diff --git a/tests/TestSuite_tx_preparation.py b/tests/TestSuite_tx_preparation.py
index 070290e0..66eec90e 100644
--- a/tests/TestSuite_tx_preparation.py
+++ b/tests/TestSuite_tx_preparation.py
@@ -40,14 +40,14 @@ Test tx preparation feature
 
 import os
 import time
-import dut
+import framework.dut as dut
 import re
 import subprocess
-from config import PortConf
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import FOLDERS
-from packet import Packet
+from framework.config import PortConf
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import FOLDERS
+from framework.packet import Packet
 import random
 #
 #
diff --git a/tests/TestSuite_uni_pkt.py b/tests/TestSuite_uni_pkt.py
index 9a3200aa..ed503b29 100644
--- a/tests/TestSuite_uni_pkt.py
+++ b/tests/TestSuite_uni_pkt.py
@@ -43,12 +43,12 @@ translate the offloaded packet types into these 7 fields of information, for
 user applications
 """
 
-import utils
-from test_case import TestCase
-from exception import VerifyFailure
-from packet import Packet
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.exception import VerifyFailure
+from framework.packet import Packet
 import time
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 
 
 class TestUniPacket(TestCase):
diff --git a/tests/TestSuite_unit_tests_cmdline.py b/tests/TestSuite_unit_tests_cmdline.py
index ac49c1bf..13ecc587 100644
--- a/tests/TestSuite_unit_tests_cmdline.py
+++ b/tests/TestSuite_unit_tests_cmdline.py
@@ -36,8 +36,8 @@ Cmdline autotest
 
 """
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_crc.py b/tests/TestSuite_unit_tests_crc.py
index 9bc5e62f..66a6ee43 100644
--- a/tests/TestSuite_unit_tests_crc.py
+++ b/tests/TestSuite_unit_tests_crc.py
@@ -36,8 +36,8 @@ Crc autotest
 
 """
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_cryptodev_func.py b/tests/TestSuite_unit_tests_cryptodev_func.py
index e51cca42..502e7969 100644
--- a/tests/TestSuite_unit_tests_cryptodev_func.py
+++ b/tests/TestSuite_unit_tests_cryptodev_func.py
@@ -30,10 +30,10 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import json
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
-import cryptodev_common as cc
+import tests.cryptodev_common as cc
 
 
 class UnitTestsCryptodev(TestCase):
diff --git a/tests/TestSuite_unit_tests_dump.py b/tests/TestSuite_unit_tests_dump.py
index 38b5fc48..22018bb4 100644
--- a/tests/TestSuite_unit_tests_dump.py
+++ b/tests/TestSuite_unit_tests_dump.py
@@ -38,8 +38,8 @@ Run Inter-VM share memory autotests
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_eal.py b/tests/TestSuite_unit_tests_eal.py
index e5703f1d..706f7c0e 100644
--- a/tests/TestSuite_unit_tests_eal.py
+++ b/tests/TestSuite_unit_tests_eal.py
@@ -36,10 +36,10 @@ EAL autotest.
 
 """
 
-import utils
+import framework.utils as utils
 
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_event_timer.py b/tests/TestSuite_unit_tests_event_timer.py
index 22c316e0..ca880f58 100644
--- a/tests/TestSuite_unit_tests_event_timer.py
+++ b/tests/TestSuite_unit_tests_event_timer.py
@@ -34,9 +34,9 @@ DPDK Test suite.
 Test Event Timer Adapter Unit test
 """
 
-import utils
+import framework.utils as utils
 
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 class TestUnitTestEventTimer(TestCase):
diff --git a/tests/TestSuite_unit_tests_kni.py b/tests/TestSuite_unit_tests_kni.py
index d54a5ace..fce7baa3 100644
--- a/tests/TestSuite_unit_tests_kni.py
+++ b/tests/TestSuite_unit_tests_kni.py
@@ -35,8 +35,8 @@ DPDK Test suite.
 This TestSuite runs the unit tests included in DPDK for KNI feature.
 """
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_loopback.py b/tests/TestSuite_unit_tests_loopback.py
index a0467378..86eff71c 100644
--- a/tests/TestSuite_unit_tests_loopback.py
+++ b/tests/TestSuite_unit_tests_loopback.py
@@ -35,10 +35,10 @@ DPDK Test suite.
 This TestSuite runs the unit tests included in DPDK for X710/XL710/XXV710 loopback mode.
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
-from test_case import TestCase
+from framework.test_case import TestCase
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_lpm.py b/tests/TestSuite_unit_tests_lpm.py
index dd4d5346..8c2f6ae6 100644
--- a/tests/TestSuite_unit_tests_lpm.py
+++ b/tests/TestSuite_unit_tests_lpm.py
@@ -36,8 +36,8 @@ This TestSuite runs the unit tests included in DPDK for LPM methods in l3fwd.
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_mbuf.py b/tests/TestSuite_unit_tests_mbuf.py
index 05b633ce..c5a85b7e 100644
--- a/tests/TestSuite_unit_tests_mbuf.py
+++ b/tests/TestSuite_unit_tests_mbuf.py
@@ -36,8 +36,8 @@ Run all mbuf autotests
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_mempool.py b/tests/TestSuite_unit_tests_mempool.py
index 4907fd42..92afb492 100644
--- a/tests/TestSuite_unit_tests_mempool.py
+++ b/tests/TestSuite_unit_tests_mempool.py
@@ -36,8 +36,8 @@ Run all Mempool autotests
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_pmd_perf.py b/tests/TestSuite_unit_tests_pmd_perf.py
index 4546169d..f8fb0f1c 100644
--- a/tests/TestSuite_unit_tests_pmd_perf.py
+++ b/tests/TestSuite_unit_tests_pmd_perf.py
@@ -36,7 +36,7 @@ This TestSuite runs the unit tests included in DPDK for pmd performance.
 """
 
 import re
-from test_case import TestCase
+from framework.test_case import TestCase
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_power.py b/tests/TestSuite_unit_tests_power.py
index b09bcd69..66c05e00 100644
--- a/tests/TestSuite_unit_tests_power.py
+++ b/tests/TestSuite_unit_tests_power.py
@@ -35,8 +35,8 @@ DPDK Test suite.
 This TestSuite runs the unit tests included in DPDK for power feature.
 """
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_qos.py b/tests/TestSuite_unit_tests_qos.py
index 8ccaea17..e3a6e216 100644
--- a/tests/TestSuite_unit_tests_qos.py
+++ b/tests/TestSuite_unit_tests_qos.py
@@ -36,8 +36,8 @@ This TestSuite runs the unit tests included in DPDK for Random Early
 Detection, Metering and Scheduling QoS features.
 """
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_ring.py b/tests/TestSuite_unit_tests_ring.py
index 8c7e0624..2e46ddc8 100644
--- a/tests/TestSuite_unit_tests_ring.py
+++ b/tests/TestSuite_unit_tests_ring.py
@@ -36,8 +36,8 @@ Run all Ring autotests
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_ringpmd.py b/tests/TestSuite_unit_tests_ringpmd.py
index 7050a448..e55ff7af 100644
--- a/tests/TestSuite_unit_tests_ringpmd.py
+++ b/tests/TestSuite_unit_tests_ringpmd.py
@@ -36,8 +36,8 @@ Run Inter-VM share memory autotests
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_unit_tests_timer.py b/tests/TestSuite_unit_tests_timer.py
index fef84089..8869eacd 100644
--- a/tests/TestSuite_unit_tests_timer.py
+++ b/tests/TestSuite_unit_tests_timer.py
@@ -36,8 +36,8 @@ Run all timer autotests
 """
 
 
-from test_case import TestCase
-import utils
+from framework.test_case import TestCase
+import framework.utils as utils
 
 #
 #
diff --git a/tests/TestSuite_userspace_ethtool.py b/tests/TestSuite_userspace_ethtool.py
index fd65d718..b42ff71a 100644
--- a/tests/TestSuite_userspace_ethtool.py
+++ b/tests/TestSuite_userspace_ethtool.py
@@ -35,17 +35,17 @@ Test support of userspace ethtool feature
 """
 
 import os
-import utils
+import framework.utils as utils
 import time
 import re
-from test_case import TestCase
-from packet import Packet
+from framework.test_case import TestCase
+from framework.packet import Packet
 import random
-from etgen import IxiaPacketGenerator
-from settings import HEADER_SIZE
-from settings import SCAPY2IXIA
-from utils import RED
-from exception import VerifyFailure
+from framework.etgen import IxiaPacketGenerator
+from framework.settings import HEADER_SIZE
+from framework.settings import SCAPY2IXIA
+from framework.utils import RED
+from framework.exception import VerifyFailure
 
 
 class TestUserspaceEthtool(TestCase, IxiaPacketGenerator):
diff --git a/tests/TestSuite_vdev_primary_secondary.py b/tests/TestSuite_vdev_primary_secondary.py
index 50d5b597..841afc58 100644
--- a/tests/TestSuite_vdev_primary_secondary.py
+++ b/tests/TestSuite_vdev_primary_secondary.py
@@ -43,9 +43,9 @@ sends them out by writing them directly to a suitable TX queue.
 
 import time
 import re
-import utils
-from test_case import TestCase
-from virt_common import VM
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.virt_common import VM
 
 
 class TestVdevPrimarySecondary(TestCase):
diff --git a/tests/TestSuite_veb_switch.py b/tests/TestSuite_veb_switch.py
index cdd2b3c4..c72721dd 100644
--- a/tests/TestSuite_veb_switch.py
+++ b/tests/TestSuite_veb_switch.py
@@ -37,16 +37,16 @@ Test VEB Switch and floating VEB Features by Poll Mode Drivers.
 
 import re
 import time
-import utils
-
-from virt_dut import VirtDut
-from project_dpdk import DPDKdut
-from dut import Dut
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
-from packet import Packet
-from utils import RED
+import framework.utils as utils
+
+from framework.virt_dut import VirtDut
+from framework.project_dpdk import DPDKdut
+from framework.dut import Dut
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.utils import RED
 
 
 class TestVEBSwitching(TestCase):
diff --git a/tests/TestSuite_vf_daemon.py b/tests/TestSuite_vf_daemon.py
index a08ae7b5..ed2c392b 100644
--- a/tests/TestSuite_vf_daemon.py
+++ b/tests/TestSuite_vf_daemon.py
@@ -31,14 +31,14 @@
 
 import time
 import sys
-import utils 
+import framework.utils as utils 
 from scapy.utils import rdpcap
 
-from qemu_kvm import QEMUKvm
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
-from settings import get_nic_name
+from framework.qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.settings import get_nic_name
 import random
 
 VM_CORES_MASK = 'all'
diff --git a/tests/TestSuite_vf_interrupt_pmd.py b/tests/TestSuite_vf_interrupt_pmd.py
index 8d68b022..9a4e6235 100644
--- a/tests/TestSuite_vf_interrupt_pmd.py
+++ b/tests/TestSuite_vf_interrupt_pmd.py
@@ -35,13 +35,13 @@ DPDK Test suite.
 Test vf_interrupt_pmd.
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
 import pdb
-from virt_common import VM
-from test_case import TestCase
-from packet import Packet
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.packet import Packet
 
 class TestVfInterruptPmd(TestCase):
     supported_vf_driver = ['pci-stub', 'vfio-pci']
diff --git a/tests/TestSuite_vf_jumboframe.py b/tests/TestSuite_vf_jumboframe.py
index 3eb441f2..faa53929 100644
--- a/tests/TestSuite_vf_jumboframe.py
+++ b/tests/TestSuite_vf_jumboframe.py
@@ -32,13 +32,13 @@
 import re
 import time
 
-import utils
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
-from packet import Packet
-from utils import RED
+import framework.utils as utils
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.utils import RED
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_vf_kernel.py b/tests/TestSuite_vf_kernel.py
index a4e1e52a..9656f027 100755
--- a/tests/TestSuite_vf_kernel.py
+++ b/tests/TestSuite_vf_kernel.py
@@ -35,18 +35,18 @@ DPDK Test suite.
 Test VF kernel
 """
 
-import utils
+import framework.utils as utils
 import time
 import datetime
 import re
 import random
 import threading
-from test_case import TestCase
-from qemu_kvm import QEMUKvm
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.qemu_kvm import QEMUKvm
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 import random
-from utils import GREEN, RED
+from framework.utils import GREEN, RED
 
 
 class TestVfKernel(TestCase):
diff --git a/tests/TestSuite_vf_l3fwd.py b/tests/TestSuite_vf_l3fwd.py
index a9bc7fa4..b2e816eb 100644
--- a/tests/TestSuite_vf_l3fwd.py
+++ b/tests/TestSuite_vf_l3fwd.py
@@ -32,11 +32,11 @@
 import time
 import os
 import string
-import utils
-from test_case import TestCase
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVfL3fwd(TestCase):
diff --git a/tests/TestSuite_vf_l3fwd_em_kernelpf.py b/tests/TestSuite_vf_l3fwd_em_kernelpf.py
index 05cda1d1..4468210e 100644
--- a/tests/TestSuite_vf_l3fwd_em_kernelpf.py
+++ b/tests/TestSuite_vf_l3fwd_em_kernelpf.py
@@ -31,8 +31,8 @@
 
 import os
 import time
-from test_case import TestCase
-from perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
 
 
 class TestVfL3fwdEmKernelPf(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_vf_l3fwd_kernelpf.py b/tests/TestSuite_vf_l3fwd_kernelpf.py
index d5ed897a..6ed04dcc 100644
--- a/tests/TestSuite_vf_l3fwd_kernelpf.py
+++ b/tests/TestSuite_vf_l3fwd_kernelpf.py
@@ -31,8 +31,8 @@
 
 import os
 import time
-from test_case import TestCase
-from perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
 
 
 class TestVfL3fwdKernelPf(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_vf_l3fwd_lpm_ipv4_kernelpf.py b/tests/TestSuite_vf_l3fwd_lpm_ipv4_kernelpf.py
index 51490047..ccb232c9 100644
--- a/tests/TestSuite_vf_l3fwd_lpm_ipv4_kernelpf.py
+++ b/tests/TestSuite_vf_l3fwd_lpm_ipv4_kernelpf.py
@@ -31,8 +31,8 @@
 
 import os
 import time
-from test_case import TestCase
-from perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
 
 
 class TestVfL3fwdLpmIpv4KernelPf(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_vf_l3fwd_lpm_ipv4_rfc2544_kernelpf.py b/tests/TestSuite_vf_l3fwd_lpm_ipv4_rfc2544_kernelpf.py
index c37d18ad..2688f5f4 100644
--- a/tests/TestSuite_vf_l3fwd_lpm_ipv4_rfc2544_kernelpf.py
+++ b/tests/TestSuite_vf_l3fwd_lpm_ipv4_rfc2544_kernelpf.py
@@ -31,8 +31,8 @@
 
 import os
 import time
-from test_case import TestCase
-from perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
 
 
 class TestVfL3fwdLpmIpv4Rfc2544KernelPf(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_vf_l3fwd_lpm_ipv6_kernelpf.py b/tests/TestSuite_vf_l3fwd_lpm_ipv6_kernelpf.py
index c7cb1b6c..9f99a63b 100644
--- a/tests/TestSuite_vf_l3fwd_lpm_ipv6_kernelpf.py
+++ b/tests/TestSuite_vf_l3fwd_lpm_ipv6_kernelpf.py
@@ -31,8 +31,8 @@
 
 import os
 import time
-from test_case import TestCase
-from perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
+from framework.test_case import TestCase
+from .perf_test_base import PerfTestBase, IP_TYPE, MATCH_MODE, SUITE_TYPE, VF_L3FWD_NIC_SUPPORT
 
 
 class TestVfL3fwdLpmIpv6KernelPf(TestCase, PerfTestBase):
diff --git a/tests/TestSuite_vf_macfilter.py b/tests/TestSuite_vf_macfilter.py
index b3035603..49ea9c86 100644
--- a/tests/TestSuite_vf_macfilter.py
+++ b/tests/TestSuite_vf_macfilter.py
@@ -32,9 +32,9 @@
 import re
 import time
 
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_vf_offload.py b/tests/TestSuite_vf_offload.py
index 4a16134b..1431414a 100644
--- a/tests/TestSuite_vf_offload.py
+++ b/tests/TestSuite_vf_offload.py
@@ -33,14 +33,14 @@ import re
 import time
 import string
 
-import utils
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from utils import RED, GREEN
-from net_device import NetDevice
-from crb import Crb
-from settings import HEADER_SIZE
+import framework.utils as utils
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.utils import RED, GREEN
+from nics.net_device import NetDevice
+from framework.crb import Crb
+from framework.settings import HEADER_SIZE
 VM_CORES_MASK = 'all'
 DEFAULT_MTU = 1500
 TSO_MTU = 9000
diff --git a/tests/TestSuite_vf_packet_rxtx.py b/tests/TestSuite_vf_packet_rxtx.py
index faf9c402..e3522c0d 100644
--- a/tests/TestSuite_vf_packet_rxtx.py
+++ b/tests/TestSuite_vf_packet_rxtx.py
@@ -32,10 +32,10 @@
 import re
 import time
 
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_vf_port_start_stop.py b/tests/TestSuite_vf_port_start_stop.py
index de67a67c..8adb699e 100644
--- a/tests/TestSuite_vf_port_start_stop.py
+++ b/tests/TestSuite_vf_port_start_stop.py
@@ -32,10 +32,10 @@
 import re
 import time
 
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 VM_CORES_MASK = 'all'
 
 class TestVfPortStartStop(TestCase):
diff --git a/tests/TestSuite_vf_rss.py b/tests/TestSuite_vf_rss.py
index 4e48163b..7db9fd20 100644
--- a/tests/TestSuite_vf_rss.py
+++ b/tests/TestSuite_vf_rss.py
@@ -42,9 +42,9 @@ reta_lines = []
 
 # Use scapy to send packets with different source and dest ip.
 # and collect the hash result of five tuple and the queue id.
-from test_case import TestCase
-from pmd_output import PmdOutput
-from virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.virt_common import VM
 
 
 class TestVfRss(TestCase):
diff --git a/tests/TestSuite_vf_single_core_perf.py b/tests/TestSuite_vf_single_core_perf.py
index d40547cd..a1d1e0ce 100644
--- a/tests/TestSuite_vf_single_core_perf.py
+++ b/tests/TestSuite_vf_single_core_perf.py
@@ -32,15 +32,15 @@
 DPDK Test suite.
 """
 
-import utils
+import framework.utils as utils
 import json
 import os
-from test_case import TestCase
-from settings import HEADER_SIZE, UPDATE_EXPECTED, load_global_setting
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE, UPDATE_EXPECTED, load_global_setting
+from framework.pmd_output import PmdOutput
 from copy import deepcopy
-import rst
-from pktgen import PacketGeneratorHelper
+import framework.rst as rst
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVfSingleCorePerf(TestCase):
diff --git a/tests/TestSuite_vf_smoke.py b/tests/TestSuite_vf_smoke.py
index ac627aa3..7d0713e1 100644
--- a/tests/TestSuite_vf_smoke.py
+++ b/tests/TestSuite_vf_smoke.py
@@ -29,14 +29,14 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-from packet import Packet
-from pmd_output import PmdOutput
-from test_case import TestCase
-from smoke_base import SmokeTest
-from smoke_base import JUMBO_FRAME_LENGTH
-from smoke_base import JUMBO_FRAME_MTU
-from smoke_base import DEFAULT_MTU_VALUE
-from smoke_base import LAUNCH_QUEUE
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase
+from .smoke_base import SmokeTest
+from .smoke_base import JUMBO_FRAME_LENGTH
+from .smoke_base import JUMBO_FRAME_MTU
+from .smoke_base import DEFAULT_MTU_VALUE
+from .smoke_base import LAUNCH_QUEUE
 
 VF_MAC_ADDR = '00:11:22:33:44:55'
 
diff --git a/tests/TestSuite_vf_to_vf_nic_bridge.py b/tests/TestSuite_vf_to_vf_nic_bridge.py
index b7b749bc..d06630b0 100644
--- a/tests/TestSuite_vf_to_vf_nic_bridge.py
+++ b/tests/TestSuite_vf_to_vf_nic_bridge.py
@@ -34,13 +34,13 @@ Test vf to vf nic bridge
 """
 
 import re
-import utils
+import framework.utils as utils
 import time
 import pdb
 
-from test_case import TestCase
-from virt_common import VM
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.virt_common import VM
+from framework.pmd_output import PmdOutput
 
 VF_NUMS_ON_ONE_PF = 2
 VF_TEMP_MAC = "52:54:12:45:67:1%d"
diff --git a/tests/TestSuite_vf_vlan.py b/tests/TestSuite_vf_vlan.py
index 28650143..3d417033 100644
--- a/tests/TestSuite_vf_vlan.py
+++ b/tests/TestSuite_vf_vlan.py
@@ -32,11 +32,11 @@
 import re
 import time
 
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
-from settings import get_nic_name
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.settings import get_nic_name
 import random
 
 VM_CORES_MASK = 'all'
diff --git a/tests/TestSuite_vhost_1024_ethports.py b/tests/TestSuite_vhost_1024_ethports.py
index 5eb89c3b..3b20f3e0 100644
--- a/tests/TestSuite_vhost_1024_ethports.py
+++ b/tests/TestSuite_vhost_1024_ethports.py
@@ -34,8 +34,8 @@ DPDK Test suite.
 Basic test for launch vhost with 1024 ethports
 """
 
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 
 class TestVhost1024Ethports(TestCase):
diff --git a/tests/TestSuite_vhost_cbdma.py b/tests/TestSuite_vhost_cbdma.py
index 16fef645..a0abe6b0 100644
--- a/tests/TestSuite_vhost_cbdma.py
+++ b/tests/TestSuite_vhost_cbdma.py
@@ -42,16 +42,16 @@ Here is an example:
  $ ./testpmd -c f -n 4 \
    --vdev 'net_vhost0,iface=/tmp/s0,queues=1,dmas=[txq0@80:04.0],dmathr=1024'
 """
-import rst, json
+import framework.rst as rst, json
 import os
 import re
 import time
-from test_case import TestCase
-from settings import HEADER_SIZE
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from pmd_output import PmdOutput
-from settings import UPDATE_EXPECTED, load_global_setting
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.pmd_output import PmdOutput
+from framework.settings import UPDATE_EXPECTED, load_global_setting
 from copy import deepcopy
 
 
diff --git a/tests/TestSuite_vhost_event_idx_interrupt.py b/tests/TestSuite_vhost_event_idx_interrupt.py
index 6179dd1c..d0939d01 100644
--- a/tests/TestSuite_vhost_event_idx_interrupt.py
+++ b/tests/TestSuite_vhost_event_idx_interrupt.py
@@ -34,11 +34,11 @@ DPDK Test suite.
 Vhost event idx interrupt need test with l3fwd-power sample
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from virt_common import VM
-from test_case import TestCase
+from framework.virt_common import VM
+from framework.test_case import TestCase
 
 
 class TestVhostEventIdxInterrupt(TestCase):
diff --git a/tests/TestSuite_vhost_multi_queue_qemu.py b/tests/TestSuite_vhost_multi_queue_qemu.py
index 01d5826b..72294fa7 100644
--- a/tests/TestSuite_vhost_multi_queue_qemu.py
+++ b/tests/TestSuite_vhost_multi_queue_qemu.py
@@ -36,13 +36,13 @@ Vhost PVP performance using Qemu test suite.
 """
 import re
 import time
-import utils
-from test_case import TestCase
-from settings import HEADER_SIZE
-from virt_common import VM
-from packet import Packet
-from pmd_output import PmdOutput
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.virt_common import VM
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVhostMultiQueueQemu(TestCase):
diff --git a/tests/TestSuite_vhost_pmd_xstats.py b/tests/TestSuite_vhost_pmd_xstats.py
index 016348d1..8934d438 100644
--- a/tests/TestSuite_vhost_pmd_xstats.py
+++ b/tests/TestSuite_vhost_pmd_xstats.py
@@ -36,14 +36,14 @@ vhost pmd xstats test suite.
 """
 import re
 import time
-import utils
+import framework.utils as utils
 import datetime
 import copy
-from test_case import TestCase
-from settings import HEADER_SIZE
-from qemu_kvm import QEMUKvm
-from packet import Packet
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.qemu_kvm import QEMUKvm
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
 ETHER_JUMBO_FRAME_MTU = 9000
 DEFAULT_JUMBO_FRAME_MTU = 1500
 
diff --git a/tests/TestSuite_vhost_user_interrupt.py b/tests/TestSuite_vhost_user_interrupt.py
index e64a4c14..0ed6f12d 100644
--- a/tests/TestSuite_vhost_user_interrupt.py
+++ b/tests/TestSuite_vhost_user_interrupt.py
@@ -34,10 +34,10 @@ DPDK Test suite.
 Vhost enqueue interrupt need test with l3fwd-power sample
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from test_case import TestCase
+from framework.test_case import TestCase
 
 
 class TestVhostUserInterrupt(TestCase):
diff --git a/tests/TestSuite_vhost_user_live_migration.py b/tests/TestSuite_vhost_user_live_migration.py
index f73411e5..7b9f175b 100644
--- a/tests/TestSuite_vhost_user_live_migration.py
+++ b/tests/TestSuite_vhost_user_live_migration.py
@@ -31,11 +31,11 @@
 
 import re
 import time
-import utils
-from virt_common import VM
-from test_case import TestCase
-from config import UserConf
-from exception import VirtDutInitException
+import framework.utils as utils
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.config import UserConf
+from framework.exception import VirtDutInitException
 
 
 class TestVhostUserLiveMigration(TestCase):
diff --git a/tests/TestSuite_vhost_virtio_pmd_interrupt.py b/tests/TestSuite_vhost_virtio_pmd_interrupt.py
index 675a15ee..64bcddd5 100644
--- a/tests/TestSuite_vhost_virtio_pmd_interrupt.py
+++ b/tests/TestSuite_vhost_virtio_pmd_interrupt.py
@@ -34,13 +34,13 @@ DPDK Test suite.
 vhost virtio pmd interrupt need test with l3fwd-power sample
 """
 
-import utils
+import framework.utils as utils
 import time
 import re
-from virt_common import VM
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVhostVirtioPmdInterrupt(TestCase):
diff --git a/tests/TestSuite_vhost_virtio_user_interrupt.py b/tests/TestSuite_vhost_virtio_user_interrupt.py
index 1c4a5a98..e0136de2 100644
--- a/tests/TestSuite_vhost_virtio_user_interrupt.py
+++ b/tests/TestSuite_vhost_virtio_user_interrupt.py
@@ -36,8 +36,8 @@ Virtio-user interrupt need test with l3fwd-power sample
 
 import re
 import time
-import utils
-from test_case import TestCase
+import framework.utils as utils
+from framework.test_case import TestCase
 
 
 class TestVirtioUserInterrupt(TestCase):
diff --git a/tests/TestSuite_virtio_event_idx_interrupt.py b/tests/TestSuite_virtio_event_idx_interrupt.py
index 37634f05..18cbc4a4 100644
--- a/tests/TestSuite_virtio_event_idx_interrupt.py
+++ b/tests/TestSuite_virtio_event_idx_interrupt.py
@@ -34,13 +34,13 @@ DPDK Test suite.
 Virtio idx interrupt need test with l3fwd-power sample
 """
 
-import utils
+import framework.utils as utils
 import time
 import _thread
 import re
-from virt_common import VM
-from test_case import TestCase
-from pktgen import PacketGeneratorHelper
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVirtioIdxInterrupt(TestCase):
diff --git a/tests/TestSuite_virtio_ipsec_cryptodev_func.py b/tests/TestSuite_virtio_ipsec_cryptodev_func.py
index ec610dde..a2ce9cdb 100644
--- a/tests/TestSuite_virtio_ipsec_cryptodev_func.py
+++ b/tests/TestSuite_virtio_ipsec_cryptodev_func.py
@@ -33,14 +33,14 @@ DPDK Test suite
 Test DPDK vhost + virtio scenarios
 """
 import os
-import utils
+import framework.utils as utils
 import time
 import subprocess
 import binascii
-from test_case import TestCase
-from qemu_kvm import QEMUKvm
-import cryptodev_common as cc
-from packet import Packet
+from framework.test_case import TestCase
+from framework.qemu_kvm import QEMUKvm
+import tests.cryptodev_common as cc
+from framework.packet import Packet
 
 class VirtioCryptodevIpsecTest(TestCase):
     def set_up_all(self):
diff --git a/tests/TestSuite_virtio_perf_cryptodev_func.py b/tests/TestSuite_virtio_perf_cryptodev_func.py
index 506dd5a7..6719fdc5 100644
--- a/tests/TestSuite_virtio_perf_cryptodev_func.py
+++ b/tests/TestSuite_virtio_perf_cryptodev_func.py
@@ -33,11 +33,11 @@ DPDK Test suite
 Test DPDK vhost + virtio scenarios
 """
 import os
-import utils
+import framework.utils as utils
 import subprocess
-from test_case import TestCase
-from qemu_kvm import QEMUKvm
-import cryptodev_common as cc
+from framework.test_case import TestCase
+from framework.qemu_kvm import QEMUKvm
+import tests.cryptodev_common as cc
 
 class VirtioCryptodevPerfTest(TestCase):
     def set_up_all(self):
diff --git a/tests/TestSuite_virtio_pvp_regression.py b/tests/TestSuite_virtio_pvp_regression.py
index 8e04ba5a..b3dc098a 100644
--- a/tests/TestSuite_virtio_pvp_regression.py
+++ b/tests/TestSuite_virtio_pvp_regression.py
@@ -43,11 +43,11 @@ qemu =
 """
 import re
 import time
-import utils
-from test_case import TestCase
-from settings import HEADER_SIZE
-from virt_common import VM
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.virt_common import VM
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVirtioPVPRegression(TestCase):
diff --git a/tests/TestSuite_virtio_smoke.py b/tests/TestSuite_virtio_smoke.py
index b7391b77..eec785f9 100644
--- a/tests/TestSuite_virtio_smoke.py
+++ b/tests/TestSuite_virtio_smoke.py
@@ -34,8 +34,8 @@ DPDK Test suite.
 """
 
 import re
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 DEFAULT_MTU = 1500
 TSO_MTU = 9000
 
diff --git a/tests/TestSuite_virtio_unit_cryptodev_func.py b/tests/TestSuite_virtio_unit_cryptodev_func.py
index bf96b62f..088872cc 100644
--- a/tests/TestSuite_virtio_unit_cryptodev_func.py
+++ b/tests/TestSuite_virtio_unit_cryptodev_func.py
@@ -35,11 +35,11 @@ Test DPDK vhost + virtio scenarios
 """
 
 import os
-import utils
+import framework.utils as utils
 import subprocess
-from test_case import TestCase
-from qemu_kvm import QEMUKvm
-import cryptodev_common as cc
+from framework.test_case import TestCase
+from framework.qemu_kvm import QEMUKvm
+import tests.cryptodev_common as cc
 
 class VirtioCryptodevUnitTest(TestCase):
     def set_up_all(self):
diff --git a/tests/TestSuite_virtio_user_as_exceptional_path.py b/tests/TestSuite_virtio_user_as_exceptional_path.py
index 3d54441c..e35a0764 100644
--- a/tests/TestSuite_virtio_user_as_exceptional_path.py
+++ b/tests/TestSuite_virtio_user_as_exceptional_path.py
@@ -36,11 +36,11 @@ virtio user as exception path test suite.
 """
 import re
 import time
-import utils
-from test_case import TestCase
-from settings import HEADER_SIZE
-import vhost_peer_conf as peer
-from pktgen import PacketGeneratorHelper
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+import tests.vhost_peer_conf as peer
+from framework.pktgen import PacketGeneratorHelper
 
 class TestVirtioUserAsExceptionalPath(TestCase):
 
diff --git a/tests/TestSuite_virtio_user_for_container_networking.py b/tests/TestSuite_virtio_user_for_container_networking.py
index 0fca14ab..43f4f44f 100644
--- a/tests/TestSuite_virtio_user_for_container_networking.py
+++ b/tests/TestSuite_virtio_user_for_container_networking.py
@@ -34,11 +34,11 @@ DPDK Test suite.
 Virtio user for container networking
 """
 
-import utils
+import framework.utils as utils
 import time
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVirtioUserForContainer(TestCase):
diff --git a/tests/TestSuite_vlan.py b/tests/TestSuite_vlan.py
index ec4cca7b..736d7b84 100644
--- a/tests/TestSuite_vlan.py
+++ b/tests/TestSuite_vlan.py
@@ -37,13 +37,13 @@ Test the support of VLAN Offload Features by Poll Mode Drivers.
 
 """
 
-import utils
+import framework.utils as utils
 import time
 
 
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.packet import Packet
 
 
 class TestVlan(TestCase):
diff --git a/tests/TestSuite_vlan_ethertype_config.py b/tests/TestSuite_vlan_ethertype_config.py
index 514bdd1f..f5f69ddd 100644
--- a/tests/TestSuite_vlan_ethertype_config.py
+++ b/tests/TestSuite_vlan_ethertype_config.py
@@ -37,17 +37,17 @@ Test the support of VLAN Offload Features by Poll Mode Drivers.
 
 """
 
-import dts
+import framework.dts as dts
 import time
-import utils
+import framework.utils as utils
 
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 from scapy.utils import struct, socket, wrpcap, rdpcap
 from scapy.layers.inet import Ether, IP, TCP, UDP, ICMP
 from scapy.layers.l2 import Dot1Q, ARP, GRE
-from settings import DPDK_RXMODE_SETTING
-from settings import load_global_setting
+from framework.settings import DPDK_RXMODE_SETTING
+from framework.settings import load_global_setting
 
 import random
 MAX_VLAN = 4095
diff --git a/tests/TestSuite_vm2vm_virtio_net_perf.py b/tests/TestSuite_vm2vm_virtio_net_perf.py
index 0ec542af..b11dacae 100644
--- a/tests/TestSuite_vm2vm_virtio_net_perf.py
+++ b/tests/TestSuite_vm2vm_virtio_net_perf.py
@@ -42,10 +42,10 @@ import re
 import time
 import string
 import random
-import utils
-from virt_common import VM
-from test_case import TestCase
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 
 class TestVM2VMVirtioNetPerf(TestCase):
diff --git a/tests/TestSuite_vm2vm_virtio_pmd.py b/tests/TestSuite_vm2vm_virtio_pmd.py
index 44f17a36..6ff7fe30 100644
--- a/tests/TestSuite_vm2vm_virtio_pmd.py
+++ b/tests/TestSuite_vm2vm_virtio_pmd.py
@@ -40,11 +40,11 @@ About mergeable path check the large packet payload.
 """
 import re
 import time
-import utils
-from virt_common import VM
-from test_case import TestCase
-from packet import Packet
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.virt_common import VM
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
 
 class TestVM2VMVirtioPMD(TestCase):
     def set_up_all(self):
diff --git a/tests/TestSuite_vm2vm_virtio_user.py b/tests/TestSuite_vm2vm_virtio_user.py
index bd1c320e..d6ab38c4 100644
--- a/tests/TestSuite_vm2vm_virtio_user.py
+++ b/tests/TestSuite_vm2vm_virtio_user.py
@@ -40,10 +40,10 @@ mergeable, non-mergeable path test
 """
 import re
 import time
-import utils
-from test_case import TestCase
-from packet import Packet
-from pmd_output import PmdOutput
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
 
 
 class TestVM2VMVirtioUser(TestCase):
diff --git a/tests/TestSuite_vm_hotplug.py b/tests/TestSuite_vm_hotplug.py
index f403d40e..ddee4188 100644
--- a/tests/TestSuite_vm_hotplug.py
+++ b/tests/TestSuite_vm_hotplug.py
@@ -39,9 +39,9 @@ Test some vm hotplug function with vfio
 import os
 import re
 import time
-from qemu_kvm import QEMUKvm
-from test_case import TestCase
-from pmd_output import PmdOutput
+from framework.qemu_kvm import QEMUKvm
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
 
 VM_CORES_MASK = 'all'
 
diff --git a/tests/TestSuite_vm_power_manager.py b/tests/TestSuite_vm_power_manager.py
index fca122bb..479d1267 100644
--- a/tests/TestSuite_vm_power_manager.py
+++ b/tests/TestSuite_vm_power_manager.py
@@ -35,11 +35,11 @@ VM power manager test suite.
 """
 
 import re
-import utils
-from test_case import TestCase
-from etgen import IxiaPacketGenerator
-from settings import HEADER_SIZE
-from qemu_libvirt import LibvirtKvm
+import framework.utils as utils
+from framework.test_case import TestCase
+from framework.etgen import IxiaPacketGenerator
+from framework.settings import HEADER_SIZE
+from framework.qemu_libvirt import LibvirtKvm
 
 
 class TestVmPowerManager(TestCase, IxiaPacketGenerator):
diff --git a/tests/TestSuite_vm_pw_mgmt_policy.py b/tests/TestSuite_vm_pw_mgmt_policy.py
index f074f6d7..7eac19db 100644
--- a/tests/TestSuite_vm_pw_mgmt_policy.py
+++ b/tests/TestSuite_vm_pw_mgmt_policy.py
@@ -44,13 +44,13 @@ from datetime import datetime, timedelta
 from copy import deepcopy
 from pprint import pformat
 
-from utils import create_mask as dts_create_mask
-from test_case import TestCase
-from pmd_output import PmdOutput
-from qemu_libvirt import LibvirtKvm
-from pktgen import TRANSMIT_CONT
-from exception import VerifyFailure
-from packet import Packet
+from framework.utils import create_mask as dts_create_mask
+from framework.test_case import TestCase
+from framework.pmd_output import PmdOutput
+from framework.qemu_libvirt import LibvirtKvm
+from framework.pktgen import TRANSMIT_CONT
+from framework.exception import VerifyFailure
+from framework.packet import Packet
 
 
 class TestVmPwMgmtPolicy(TestCase):
diff --git a/tests/TestSuite_vmdq.py b/tests/TestSuite_vmdq.py
index 3f2ccde2..1ccd88b2 100644
--- a/tests/TestSuite_vmdq.py
+++ b/tests/TestSuite_vmdq.py
@@ -35,13 +35,13 @@ DPDK Test suite.
 Tests for vmdq.
 
 """
-import utils
+import framework.utils as utils
 import os
 import re
-from test_case import TestCase
+from framework.test_case import TestCase
 from time import sleep
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVmdq(TestCase):
diff --git a/tests/TestSuite_vmdq_dcb.py b/tests/TestSuite_vmdq_dcb.py
index 5f0da0fb..4dbecff8 100644
--- a/tests/TestSuite_vmdq_dcb.py
+++ b/tests/TestSuite_vmdq_dcb.py
@@ -36,13 +36,13 @@ DPDK Test suite.
 Test  example vmdq_dcb.
 
 """
-import utils
+import framework.utils as utils
 import os
 import re
 import random
-from test_case import TestCase
-from settings import HEADER_SIZE
-from pktgen import PacketGeneratorHelper
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE
+from framework.pktgen import PacketGeneratorHelper
 
 
 class TestVmdqDcb(TestCase):
diff --git a/tests/TestSuite_vswitch_sample_cbdma.py b/tests/TestSuite_vswitch_sample_cbdma.py
index 08422ea3..bc301139 100644
--- a/tests/TestSuite_vswitch_sample_cbdma.py
+++ b/tests/TestSuite_vswitch_sample_cbdma.py
@@ -33,16 +33,16 @@
 DPDK Test suite.
 """
 
-import utils
+import framework.utils as utils
 import re
 import time
 import os
-from test_case import TestCase
-from packet import Packet
-from pktgen import PacketGeneratorHelper
-from pmd_output import PmdOutput
-from virt_common import VM
-from settings import HEADER_SIZE
+from framework.test_case import TestCase
+from framework.packet import Packet
+from framework.pktgen import PacketGeneratorHelper
+from framework.pmd_output import PmdOutput
+from framework.virt_common import VM
+from framework.settings import HEADER_SIZE
 import random
 import string
 
diff --git a/tests/TestSuite_vxlan.py b/tests/TestSuite_vxlan.py
index fdb6616d..4a7520e2 100644
--- a/tests/TestSuite_vxlan.py
+++ b/tests/TestSuite_vxlan.py
@@ -36,13 +36,13 @@ Test VXLAN behaviour in DPDK.
 
 """
 
-import utils
+import framework.utils as utils
 import string
 import re
 import time
 import os
-from pmd_output import PmdOutput
-from packet import IncreaseIP, IncreaseIPv6
+from framework.pmd_output import PmdOutput
+from framework.packet import IncreaseIP, IncreaseIPv6
 from random import randint
 
 from scapy.utils import wrpcap, rdpcap
@@ -55,10 +55,10 @@ from scapy.sendrecv import sniff
 from scapy.config import conf
 from scapy.route import *
 
-from test_case import TestCase
-from settings import HEADER_SIZE, FOLDERS
-from etgen import IxiaPacketGenerator
-import packet
+from framework.test_case import TestCase
+from framework.settings import HEADER_SIZE, FOLDERS
+from framework.etgen import IxiaPacketGenerator
+import framework.packet as packet
 
 #
 #
diff --git a/tests/TestSuite_vxlan_gpe_support_in_i40e.py b/tests/TestSuite_vxlan_gpe_support_in_i40e.py
index b5022540..a17b790a 100644
--- a/tests/TestSuite_vxlan_gpe_support_in_i40e.py
+++ b/tests/TestSuite_vxlan_gpe_support_in_i40e.py
@@ -36,17 +36,17 @@ Test VXLAN-GPE behaviour in DPDK.
 
 """
 
-import utils
+import framework.utils as utils
 import os
 import re
-from pmd_output import PmdOutput
+from framework.pmd_output import PmdOutput
 from scapy.utils import wrpcap, rdpcap
 from scapy.layers.inet import Ether, IP, UDP
 from scapy.layers.l2 import Dot1Q
 from scapy.layers.vxlan import VXLAN
 from scapy.config import conf
-from test_case import TestCase
-from settings import FOLDERS
+from framework.test_case import TestCase
+from framework.settings import FOLDERS
 
 #
 #
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 00000000..ae0043b7
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in
+#     the documentation and/or other materials provided with the
+#     distribution.
+#   * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tests/bonding.py b/tests/bonding.py
index b5fc45fc..1df1feda 100644
--- a/tests/bonding.py
+++ b/tests/bonding.py
@@ -36,14 +36,14 @@ import struct
 import socket
 from socket import htonl
 
-from packet import Packet, TMP_PATH
+from framework.packet import Packet, TMP_PATH
 from scapy.sendrecv import sendp
 from scapy.utils import wrpcap
 
-import utils
-from exception import TimeoutException, VerifyFailure
-from pmd_output import PmdOutput
-from settings import HEADER_SIZE
+import framework.utils as utils
+from framework.exception import TimeoutException, VerifyFailure
+from framework.pmd_output import PmdOutput
+from framework.settings import HEADER_SIZE
 
 # define bonding mode
 MODE_ROUND_ROBIN = 0
diff --git a/tests/compress_common.py b/tests/compress_common.py
index 4afdcdef..c585af5d 100644
--- a/tests/compress_common.py
+++ b/tests/compress_common.py
@@ -32,8 +32,8 @@
 
 import os
 import re
-import utils
-from config import SuiteConf
+import framework.utils as utils
+from framework.config import SuiteConf
 
 conf = SuiteConf('compressdev_sample')
 
diff --git a/tests/cryptodev_common.py b/tests/cryptodev_common.py
index bb725897..f2ff3c3c 100644
--- a/tests/cryptodev_common.py
+++ b/tests/cryptodev_common.py
@@ -29,8 +29,8 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-from net_device import GetNicObj
-from config import SuiteConf
+from nics.net_device import GetNicObj
+from framework.config import SuiteConf
 
 conf = SuiteConf('cryptodev_sample')
 
diff --git a/tests/flexible_common.py b/tests/flexible_common.py
index 9df62caa..19a4a358 100644
--- a/tests/flexible_common.py
+++ b/tests/flexible_common.py
@@ -30,8 +30,8 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import time
-from packet import Packet
-from pmd_output import PmdOutput
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
 import re
 
 
diff --git a/tests/perf_test_base.py b/tests/perf_test_base.py
index 02a73eec..ee09915e 100644
--- a/tests/perf_test_base.py
+++ b/tests/perf_test_base.py
@@ -36,7 +36,7 @@ import os
 import re
 import time
 import traceback
-import texttable
+import framework.texttable as texttable
 import json
 import numpy as np
 from enum import Enum, unique
@@ -44,12 +44,12 @@ from pprint import pformat
 from itertools import product
 from copy import deepcopy
 
-from config import SuiteConf
-from packet import Packet
-from pktgen import TRANSMIT_CONT, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK
-from utils import convert_int2ip, convert_ip2int
-from exception import VerifyFailure
-import utils
+from framework.config import SuiteConf
+from framework.packet import Packet
+from framework.pktgen import TRANSMIT_CONT, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK
+from framework.utils import convert_int2ip, convert_ip2int
+from framework.exception import VerifyFailure
+import framework.utils as utils
 
 
 VF_L3FWD_NIC_SUPPORT = frozenset((
diff --git a/tests/rte_flow_common.py b/tests/rte_flow_common.py
index 591aa5a1..348750bf 100644
--- a/tests/rte_flow_common.py
+++ b/tests/rte_flow_common.py
@@ -32,8 +32,8 @@
 import json
 import time
 import re
-from utils import GREEN, RED
-from packet import Packet
+from framework.utils import GREEN, RED
+from framework.packet import Packet
 
 CVL_TXQ_RXQ_NUMBER = 16
 
diff --git a/tests/smoke_base.py b/tests/smoke_base.py
index 0d7046b0..f992f068 100644
--- a/tests/smoke_base.py
+++ b/tests/smoke_base.py
@@ -31,7 +31,7 @@
 
 import re
 import time
-from settings import HEADER_SIZE
+from framework.settings import HEADER_SIZE
 
 JUMBO_FRAME_MTU = 9600
 DEFAULT_MTU_VALUE = 1500
diff --git a/tests/vhost_peer_conf.py b/tests/vhost_peer_conf.py
index 59b34956..c8802277 100644
--- a/tests/vhost_peer_conf.py
+++ b/tests/vhost_peer_conf.py
@@ -29,7 +29,7 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-from config import UserConf
+from framework.config import UserConf
 
 conf_file = 'conf/vhost_peer_conf.cfg'
 conf_peer = UserConf(conf_file)
diff --git a/tools/__init__.py b/tools/__init__.py
new file mode 100644
index 00000000..ae0043b7
--- /dev/null
+++ b/tools/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# BSD LICENSE
+#
+# Copyright (c) 2021 PANTHEON.tech s.r.o.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in
+#     the documentation and/or other materials provided with the
+#     distribution.
+#   * Neither the name of PANTHEON.tech s.r.o. nor the names of its
+#     contributors may be used to endorse or promote products derived
+#     from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tools/dump_case.py b/tools/dump_case.py
index 22c79d2c..d4633875 100755
--- a/tools/dump_case.py
+++ b/tools/dump_case.py
@@ -13,9 +13,9 @@ DTS_FRAMEWORK = DTS_PATH + '/framework'
 sys.path.append(DTS_SUITES)
 sys.path.append(DTS_FRAMEWORK)
 
-import dts
-from test_case import TestCase
-from utils import pprint
+import framework.dts as dts
+from framework.test_case import TestCase
+from framework.utils import pprint
 
 
 def get_subclasses(module, clazz):
diff --git a/tools/setup.py b/tools/setup.py
index c0852f21..516d5031 100755
--- a/tools/setup.py
+++ b/tools/setup.py
@@ -22,10 +22,10 @@ DTS_IXIA_CFG = DTS_PATH + '/conf/ixia.cfg'
 sys.path.append(DTS_FRAMEWORK)
 sys.path.append(DTS_TOOLS)
 
-import utils
-from parse_opt import Option
-from settings import NICS
-from utils import GREEN, RED
+import framework.utils as utils
+from .parse_opt import Option
+from framework.settings import NICS
+from framework.utils import GREEN, RED
 
 global def_opt
 global dut_ip
