v5: - fix comment error. - v4: - optimize judgment condition. - v3: - update check condition as required - DTS only support Python3 now, it doesn't support Python2. But it requires Python minus version. E.g. Python3.4 is not supported, it requires version larger than 3.6x. v2: - add python version check at the beginning of run_all and tester crb init stage. v1: - implement a method to check the python version of tester and the server that run dts. - If the version is lower than 3.6.9, print a warning message. yufengmx (3): framework: check the python version framework: check the python version framework: check the python version framework/dts.py | 6 +++++- framework/tester.py | 5 ++++- framework/utils.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) -- 2.21.0
implement a method to check the python version of tester and the server that run dts. If the version is lower than 3.6.9, print a warning message. Signed-off-by: yufengmx <yufengx.mo@intel.com> --- framework/utils.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/framework/utils.py b/framework/utils.py index e74e6c5..6084ea6 100644 --- a/framework/utils.py +++ b/framework/utils.py @@ -32,6 +32,7 @@ import json # json format import re import os +import sys import inspect import socket import struct @@ -280,3 +281,30 @@ def get_backtrace_object(file_name, obj_name): obj = getattr(frame.f_locals['self'], obj_name, None) return obj + + +def check_crb_python_version(crb): + cmd = 'python3 -V' + out = crb.send_expect(cmd, '#', 5) + pat = "Python (\d+).(\d+).(\d+)" + result = re.findall(pat, out) + if not result or \ + int(result[0][0]) < 3 or \ + (int(result[0][0]) == 3 and int(result[0][1]) < 6) or \ + (int(result[0][0]) == 3 and int(result[0][1]) == 6 and int(result[0][2]) < 9): + crb.logger.warning( + ("WARNING: Tester node python version is lower than python 3.6, " + "it is deprecated for use in DTS, " + "and will not work in future releases.")) + crb.logger.warning("Please use Python >= 3.6.9 instead") + + +def check_dts_python_version(): + if sys.version_info.major < 3 or \ + (sys.version_info.major == 3 and sys.version_info.minor < 6) or \ + (sys.version_info.major == 3 and sys.version_info.minor == 6 and sys.version_info.micro < 9): + print(RED( + ("WARNING: Dts running node python version is lower than python 3.6, " + "it is deprecated for use in DTS, " + "and will not work in future releases.")), file=sys.stderr) + print(RED("Please use Python >= 3.6.9 instead"), file=sys.stderr) -- 2.21.0
check the python version of the server that run dts. If the version is lower than 3.6.9, print a warning message. Signed-off-by: yufengmx <yufengx.mo@intel.com> --- framework/dts.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/dts.py b/framework/dts.py index 4fcec3a..697602d 100644 --- a/framework/dts.py +++ b/framework/dts.py @@ -58,7 +58,8 @@ import logger import debugger from config import CrbsConf from checkCase import CheckCase -from utils import get_subclasses, copy_instance_attr, create_parallel_locks +from utils import (get_subclasses, copy_instance_attr, create_parallel_locks, + check_dts_python_version) import sys import imp imp.reload(sys) @@ -505,6 +506,9 @@ def run_all(config_file, pkgName, git, patch, skip_setup, global log_handler global check_case_inst + # check the python version of the server that run dts + check_dts_python_version() + # save global variable serializer = Serializer() -- 2.21.0
check the python version of tester. If the version is lower than 3.6.9, print a warning message. Signed-off-by: yufengmx <yufengx.mo@intel.com> --- framework/tester.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/framework/tester.py b/framework/tester.py index ca179b2..482b0e4 100644 --- a/framework/tester.py +++ b/framework/tester.py @@ -43,7 +43,8 @@ from crb import Crb from 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 multiprocessing import Process from pktgen import getPacketGenerator @@ -66,6 +67,8 @@ class Tester(Crb): self.NAME = 'tester' self.scapy_session = None super(Tester, self).__init__(crb, serializer, self.NAME) + # check the python version of tester + check_crb_python_version(self) self.bgProcIsRunning = False self.duts = None -- 2.21.0
> v5:
> - fix comment error.
> -
>
> v4:
> - optimize judgment condition.
> -
>
> v3:
> - update check condition as required
> - DTS only support Python3 now, it doesn't support Python2. But it requires
> Python minus version. E.g. Python3.4 is not supported, it requires version larger
> than 3.6x.
>
> v2:
> - add python version check at the beginning of run_all and tester crb init stage.
>
> v1:
> - implement a method to check the python version of tester and the server that
> run dts.
> - If the version is lower than 3.6.9, print a warning message.
>
> yufengmx (3):
> framework: check the python version
> framework: check the python version
> framework: check the python version
Applied, thanks