[tct-tools][non-acr][Updated tct-tools] 19/192019/1
authorSanghoon Lee <shooney.lee@samsung.com>
Mon, 29 Oct 2018 01:52:06 +0000 (10:52 +0900)
committerSanghoon Lee <shooney.lee@samsung.com>
Mon, 29 Oct 2018 01:52:06 +0000 (10:52 +0900)
Change-Id: I7bb4019b14f958f0fc23e69ca44fde16cacc3de6

release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/manager/lib/tct-mgr-app-3.1.5-20180524.jar
release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/distribute_plan.py
release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/intention_generator.py
release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellplanner.py
release/csharp-tct_5.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellwrapper.py

index 2f5a70a..3109fab 100755 (executable)
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
index 99c1a25..367e219 100755 (executable)
@@ -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)
index 59ad7b3..36f1c51 100755 (executable)
@@ -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
index fd403d7..d608f5a 100755 (executable)
@@ -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
index 1be4700..aac9e0b 100755 (executable)
@@ -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