From: Sanghoon Lee Date: Mon, 29 Oct 2018 01:52:06 +0000 (+0900) Subject: [tct-tools][non-acr][Updated tct-tools] X-Git-Tag: tct5.0_m2^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=969a768becb092d676504499f89ab753e6165b35;p=test%2Ftct%2Fcsharp%2Fapi.git [tct-tools][non-acr][Updated tct-tools] Change-Id: I7bb4019b14f958f0fc23e69ca44fde16cacc3de6 --- diff --git a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/manager/lib/tct-mgr-app-3.1.5-20180524.jar b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/manager/lib/tct-mgr-app-3.1.5-20180524.jar index 2f5a70a6b..3109fab27 100755 Binary files a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/manager/lib/tct-mgr-app-3.1.5-20180524.jar and b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/manager/lib/tct-mgr-app-3.1.5-20180524.jar differ diff --git a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/distribute_plan.py b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/distribute_plan.py index 99c1a259f..367e2196c 100755 --- a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/distribute_plan.py +++ b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/distribute_plan.py @@ -396,6 +396,8 @@ class AutoPlan_AutoSuiteWorker: return suiteName = suite.getSuiteName() + suite.runPreTestScript(self.deviceId) + LOGGER.info("Start to execute|suite:{},devid:{},pid:{}".\ format(suiteName, self.deviceId, os.getpid())) LOGGER.debug("current suite Auto count : %s " % suite.getAutoNum()) @@ -415,6 +417,8 @@ class AutoPlan_AutoSuiteWorker: suite.executePlanAuto(self.deviceId, self.resultFolder, \ suite.getTestCase(), self.isRerun, self.stubPort) + suite.runPostTestScript(self.deviceId) + LOGGER.info('removing the suite pkg file of the suite ' + suiteName) LOGGER.info('Uninstalling the suite ' + suiteName) suite.unInstallSuite(self.deviceId, self.remTmpDir) diff --git a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/intention_generator.py b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/intention_generator.py index 59ad7b30c..36f1c512f 100755 --- a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/intention_generator.py +++ b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/intention_generator.py @@ -168,7 +168,7 @@ def _parsTestScenario(scen_name, file_path, stubPort, skip_package, \ # return : TctShellSuite [] def _parsTestPlan(file_path, plan_name, deviceId, executeType, tizenVersion, \ resultFolder, stubPort, skip_package, skip_count, skip_tc, devmgr, \ - scen_name=None, make_ne_package=None): + scen_name=None, make_ne_package=None, pre_test=None, post_test=None): suites = [] profile = "" if not _verifyPlan(file_path, tizenVersion): @@ -204,6 +204,8 @@ def _parsTestPlan(file_path, plan_name, deviceId, executeType, tizenVersion, \ xml_suite.find("pkg_name").text, \ xml_suite.get("launcher"), xml_suite.get("category"), \ tizenVersion, skip_count, skip_tc, devmgr, \ + pre_test=pre_test, \ + post_test=post_test, \ is_make_ne=is_make_ne) suites.append(suite) @@ -219,7 +221,7 @@ def _parsTestPlan(file_path, plan_name, deviceId, executeType, tizenVersion, \ def _parsTestProfile(path_suites, deviceId, executeType, tizenV, profile, \ resultFolder, stubPort, skip_package, skip_count, skip_tc, devmgr, \ - distribute_count, make_ne_package=None): + distribute_count, make_ne_package=None, pre_test=None, post_test=None): suites = [] LOGGER.debug("Preparing Test Suite ") suite_profile = os.path.basename(os.path.dirname(path_suites[0])) @@ -248,10 +250,12 @@ def _parsTestProfile(path_suites, deviceId, executeType, tizenV, profile, \ if make_ne_package and str(make_ne_package).find(suite_name) > -1: issue_num = _pars_issue_num(make_ne_package[0], suite_name) is_make_ne = int(issue_num) - + suite = TctShellSuite(suite_name, None, auto_num, manual_num, \ suite_pkg_name, suite_launcher, suite_category, \ suite_tizenVer, skip_count, skip_tc, devmgr, \ + pre_test=pre_test, \ + post_test=post_test, \ is_make_ne=is_make_ne) if not distribute_count: @@ -274,7 +278,7 @@ def _parsTestProfile(path_suites, deviceId, executeType, tizenV, profile, \ def _parsTestSuite(path_suites, deviceId, executeType, tizenVersion, tc_name, \ resultFolder, stubPort, devmgr, skip_count=None, skip_tc=None, \ - make_ne_package=None): + pre_test=None, post_test=None, make_ne_package=None): #type(suites) -> list suites = [] LOGGER.debug("Preparing Test Suite ") @@ -297,10 +301,12 @@ def _parsTestSuite(path_suites, deviceId, executeType, tizenVersion, tc_name, \ if make_ne_package and str(make_ne_package).find(suite_name) > -1: issue_num = _pars_issue_num(make_ne_package[0], suite_name) is_make_ne = int(issue_num) - + suite = TctShellSuite(suite_name, tc_name, auto_num, manual_num, \ suite_pkg_name, suite_launcher, suite_category, \ suite_tizenVer, skip_count, skip_tc, devmgr, \ + pre_test=pre_test, \ + post_test=post_test, \ is_make_ne=is_make_ne) suites.append(suite) @@ -327,7 +333,7 @@ def _parsTestCase(path_suites, deviceId, executeType, tizenVersion, \ def _parsAutoPlan(planFile, plan_name, executeType, tizenVer, \ resultFolderPath, stubPort, skip_package, skip_count, skip_tc, \ - devmgr, make_ne_package=None): + devmgr, pre_test=None, post_test=None, make_ne_package=None): if not _verifyPlan(planFile, tizenVer): LOGGER.warning("Please check the plan xml file: %s" % planFile) return None @@ -383,7 +389,7 @@ def _parsAutoPlan(planFile, plan_name, executeType, tizenVer, \ xml_suite.find("auto_tcn").text, xml_suite.find("manual_tcn").text,\ xml_suite.find("pkg_name").text, xml_suite.get("launcher"), \ xml_suite.get("category"), tizenVer, skip_count, skip_tc, \ - devmgr, is_make_ne=is_make_ne) + devmgr, pre_test=pre_test, post_test=post_test, is_make_ne=is_make_ne) suite.setExpectedTime(etime) if suite.suite_pkg_name is None: @@ -405,7 +411,7 @@ def _parsAutoPlan(planFile, plan_name, executeType, tizenVer, \ def _parsResultForRerun(wrapper, skip_package, skip_count, skip_tc, devmgr, \ - distribute_count, make_ne_package=None): + distribute_count, pre_test=None, post_test=None, make_ne_package=None): result = wrapper.get_result_for_rerun() rerun_plan_creator = ResultSummary() rerun_data = rerun_plan_creator.prepareRerun(result) @@ -476,6 +482,8 @@ def _parsResultForRerun(wrapper, skip_package, skip_count, skip_tc, devmgr, \ suite = TctShellSuite(suite_name, None, auto_num, manual_num, \ suite_pkg_name, suite_launcher, suite_category, \ tizenVer, skip_count, skip_tc, devmgr, \ + pre_test=pre_test, \ + post_test=post_test, \ is_make_ne=is_make_ne) if not distribute_count: @@ -559,6 +567,8 @@ class IntentionGenerator: skip_count = wrapper.get_skip_count() skip_tc = wrapper.get_skip_tc() make_ne_package = wrapper.get_make_ne() + pre_test = wrapper.get_pre_test() + post_test = wrapper.get_post_test() distribute_count = wrapper.get_distribute_count() if wrapper.get_running_mode() == Constants.RUNNING_MODE_RERUN: @@ -604,20 +614,21 @@ class IntentionGenerator: planFile = wrapper.get_planfile() plans = _parsTestPlan(planFile, name, deviceId, executeType, \ tizenVer, resultFolderPath, stubPort, skip_package, \ - skip_count, skip_tc, devmgr, make_ne_package=make_ne_package) + skip_count, skip_tc, devmgr, make_ne_package=make_ne_package, \ + pre_test=pre_test, post_test=post_test) elif intention_type == IntentionType.TestCase: plans = _parsTestCase(suites, deviceId, executeType, tizenVer, \ tcId, resultFolderPath, stubPort, devmgr) elif intention_type == IntentionType.TestSuite: plans = _parsTestSuite(suites, deviceId, executeType, tizenVer, \ None, resultFolderPath, stubPort, devmgr, skip_count, \ - skip_tc, make_ne_package=make_ne_package) + skip_tc, make_ne_package=make_ne_package, pre_test=pre_test, post_test=post_test) elif intention_type == IntentionType.AutoPlan: name = wrapper.get_plan_name() autoFile = wrapper.get_autoplanfile() plans = _parsAutoPlan(autoFile, name, executeType, tizenVer, \ resultFolderPath, stubPort, skip_package, skip_count, \ - skip_tc, devmgr, make_ne_package=make_ne_package) + skip_tc, devmgr, make_ne_package=make_ne_package, pre_test=pre_test, post_test=post_test) elif intention_type == IntentionType.TestProfile: profile_suites = wrapper.get_profile_suites() if not profile_suites: @@ -626,6 +637,6 @@ class IntentionGenerator: plans = _parsTestProfile(profile_suites, deviceId, executeType, \ tizenVer, profile, resultFolderPath, stubPort, \ skip_package, skip_count, skip_tc, devmgr, distribute_count, \ - make_ne_package=make_ne_package) + make_ne_package=make_ne_package, pre_test=pre_test, post_test=post_test) return plans diff --git a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellplanner.py b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellplanner.py index fd403d7ce..d608f5afe 100755 --- a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellplanner.py +++ b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellplanner.py @@ -304,7 +304,7 @@ class TctShellSuite: #PARAM tizenV = 'tizen_web_2.4' def __init__(self, suiteName, tcName, auto_num, manual_num, \ suite_pkg_name, launcher, category, tizenV, skip_count, skip_tc, \ - devmgr, is_make_ne=0): + devmgr, pre_test, post_test, is_make_ne=0): self.suiteName = suiteName self.tcName = tcName self.auto_num = auto_num @@ -321,6 +321,8 @@ class TctShellSuite: self.skip_count = skip_count self.skip_tc = skip_tc self.devmgr = devmgr + self.pre_test = pre_test + self.post_test = post_test self.is_make_ne = is_make_ne def _liteCommand(self, deviceId, resultFolder, extype, \ @@ -630,6 +632,17 @@ class TctShellSuite: except Exception: return False + def runPreTestScript(self, _devid): + if self.pre_test: + LOGGER.debug("run pre-test script: {}".format(self.pre_test)) + SdbManager.hostRecLiteCommand('bash {} {} {}'.format(self.pre_test, _devid, self.suiteName)) + + + def runPostTestScript(self, _devid): + if self.post_test: + LOGGER.debug("run post-test script: {}".format(self.post_test)) + SdbManager.hostRecLiteCommand('bash {} {} {}'.format(self.post_test, _devid, self.suiteName)) + def unInstallSuite(self, deviceId, remoteFolder): if self.tizenV.find("csharp") > -1 or self.tizenV.find("web") > -1 or deviceId is None: hostTmpFolder = Constants.LOCAL_SHELL_TEMP_PATH % deviceId diff --git a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellwrapper.py b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellwrapper.py index 1be4700f4..aac9e0bbc 100755 --- a/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellwrapper.py +++ b/release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellwrapper.py @@ -207,7 +207,11 @@ class ShellWrapper: make_option("--make-summary", dest="makesummary",\ action="callback", callback=varnarg, help="Specify the result folder. When the test is not abnomally terminated. you can create summary file use to this option"), make_option("--tracking-dump", dest="trackingdump", action="callback", callback=varnarg, - help="Specify the file(dump) names expected (for distribute run mode). After tracking the file(dump) generated by test and exits the tct-shell tool") + help="Specify the file(dump) names expected (for distribute run mode). After tracking the file(dump) generated by test and exits the tct-shell tool"), + make_option("--pre-test", dest="pre_test", action="callback", \ + callback=varnarg, help="Before running suite, run a given script before installing testsuite."), + make_option("--post-test", dest="post_test", action="callback", \ + callback=varnarg, help="After running suite, run a given script before uninstalling testsuite.") ] # detect non-params @@ -360,6 +364,12 @@ class ShellWrapper: if self.options.make_ne and len(self.options.make_ne) > 0: if not self.check_make_ne(): opt = "--make-ne" + if self.options.pre_test and len(self.options.pre_test) > 0: + if not self.check_pre_test(): + opt = "--pre-test" + if self.options.post_test and len(self.options.post_test) > 0: + if not self.check_post_test(): + opt = "--post-test" if len(opt) > 0: os.system("tct-shell -h") @@ -467,6 +477,14 @@ class ShellWrapper: packLen = len(packages) return packLen > 0 + def check_pre_test(self): + script = self.options.pre_test[0] + return os.path.isfile(script) + + def check_post_test(self): + script = self.options.post_test[0] + return os.path.isfile(script) + def getIntentionType(self): if self.options.scenario_file is not None: return IntentionType.TestScenario @@ -685,11 +703,19 @@ class ShellWrapper: def get_tracking_dump(self): if (self.options.trackingdump is not None) and (self.options.trackingdump[0] is not None): return self.options.trackingdump[0] - + def get_make_ne(self): if self.options.make_ne is not None: return self.options.make_ne + def get_pre_test(self): + if self.options.pre_test is not None: + return self.options.pre_test[0] + + def get_post_test(self): + if self.options.post_test is not None: + return self.options.post_test[0] + def is_testplan_mode(self): return self.options.testplan_file is not None