[Non-ACR] Update tct CSharp from python 2x to python 3x 17/275617/3
authoranh.vn <anh.vn@samsung.com>
Fri, 27 May 2022 07:16:58 +0000 (14:16 +0700)
committeranh.vn <anh.vn@samsung.com>
Wed, 8 Jun 2022 04:45:38 +0000 (11:45 +0700)
Change-Id: I41c5639904bcbfe095a43b054c76b7a8d709e788

41 files changed:
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/resource/buildinfo.xml
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/resource/capability.xml
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/resource/precondition.txt
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/resource/tct-testconfig/inst.py
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/tools/devicemanager.py
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/tools/sdbmanager.py
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/tools/tct-config-device.py
release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/tools/tct-config-host.py
release/csharp-tct_7.0_dotnet/tct-setup.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tct-shell
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/constants.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/devicemanager.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/dumpmonitor.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/environment_manager.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/intention_generator.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/netstatmonitor.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/plan_options.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/plan_runner.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/result_manager.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/result_summary.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/sdbmanager.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellguider.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellplanner.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellworker.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/shellwrapper.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/testenvironment.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/shell/tctshell/usbmonitor.py
release/csharp-tct_7.0_dotnet/tct-tools_r4_rc1/tct-config-tools.py
tct-suite-vs/Tizen.Mediacontent.Manual.Tests/res/copy_res.sh
tct-suite-vs/Tizen.Mediacontent.Tests/res/copy_res.sh
tool/script/artik_template/inst.py
tool/script/auto_binary.py
tool/script/cli_pack.py
tool/script/creating_auto_binary.sh
tool/script/pack.py
tool/script/pkginfo_gen.py
tool/script/tct-testconfig/inst.apk.py
tool/script/tct-testconfig/inst.wgt.py
tool/script/tct-testconfig/inst.xpk.py
tool/script/tct-testconfig/pack.py
tool/script/template/inst.py

index 533afd5..807065a 100644 (file)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<buildinfos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-xsi:noNamespaceSchemaLocation="buildinfo.xsd">\r
-    <buildinfo name="model" support="true" type="String">\r
-        <value>SM-Z130H</value>\r
-    </buildinfo>\r
-    <buildinfo name="manufacturer" support="true" type="String">\r
-        <value>samsung</value>\r
-    </buildinfo>\r
-    <buildinfo name="buildVersion" support="true" type="String">\r
-        <value>Z130HDDE0ANL7</value>\r
-    </buildinfo>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<buildinfos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:noNamespaceSchemaLocation="buildinfo.xsd">
+    <buildinfo name="model" support="true" type="String">
+        <value>SM-Z130H</value>
+    </buildinfo>
+    <buildinfo name="manufacturer" support="true" type="String">
+        <value>samsung</value>
+    </buildinfo>
+    <buildinfo name="buildVersion" support="true" type="String">
+        <value>Z130HDDE0ANL7</value>
+    </buildinfo>
 </buildinfos>
\ No newline at end of file
index 23216c3..50f4951 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>\r
-<capabilities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-xsi:noNamespaceSchemaLocation="capability.xsd">\r
-    <capability name="http://tizen.org/feature/account" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/battery" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/bookmark" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/calendar" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/camera" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/camera.back" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/camera.back.flash" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/camera.front" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/camera.front.flash" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/contact" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/database.encryption" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/datasync" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/datacontrol" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/download" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/fmradio" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/graphics.acceleration" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/input.keyboard" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/input.keyboard.layout" support="qwerty" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/location" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/location.gps" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/location.wps" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/email" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/microphone" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/multi_point_touch.pinch_zoom" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/multi_point_touch.point_count" support="10" type="Integer">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/network.bluetooth" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.bluetooth.health" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.nfc" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.nfc.card_emulation" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.nfc.reserved_push" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.push" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.secure_element" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.telephony" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.telephony.mms" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.wifi" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.wifi.direct" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/notification" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format" support="etc" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format.3dc" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format.atc" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format.etc" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format.ptc" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format.pvrtc" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.texture_format.utc" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.version.1_1" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/opengles.version.2_0" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.api.version" support="2.3" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/platform.core.cpu.arch" support="x86" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv6" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv7" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.cpu.arch.x86" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.fpu.arch" support="sse3" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/platform.core.fpu.arch.sse2" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.fpu.arch.sse3" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.fpu.arch.ssse3" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.fpu.arch.vfpv2" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.fpu.arch.vfpv3" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.native.api.version" support="2.3" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/platform.native.osp_compatible" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.version" support="2.3.0" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/platform.web.api.version" support="2.3" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/profile" support="MOBILE" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/screen" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.auto_rotation" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.bpp" support="32" type="Integer">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/screen.coordinate_system.size.large" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.coordinate_system.size.normal" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.dpi" support="207" type="Integer">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/screen.height" support="800" type="Integer">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/screen.output.hdmi" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.output.rca" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.1080.1920" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.240.400" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.320.320" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.320.480" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.480.800" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.540.960" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.600.1024" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.720.1280" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.width" support="480" type="Integer">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/sensor.accelerometer" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.accelerometer.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.barometer" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.barometer.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.gyroscope" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.gyroscope.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.heart_rate_monitor" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.magnetometer" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.magnetometer.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.pedometer" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.photometer" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.photometer.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.proximity" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.proximity.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.tiltmeter" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.tiltmeter.wakeup" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.ultraviolet" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.wrist_up" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/shell.appwidget" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sip.voip" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/speech.recognition" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/speech.synthesis" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/systemsetting" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/systemsetting.home_screen" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/systemsetting.incoming_call" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/systemsetting.lock_screen" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/systemsetting.notification_email" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/usb.accessory" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/usb.host" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/vision.face_recognition" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/vision.image_recognition" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/vision.qrcode_generation" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/vision.qrcode_recognition" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/websetting" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/system/platform.name" support="Tizen" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/archive" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/badge" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/exif" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/led" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/multimedia.transcoder" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/capability/network.bluetooth.always_on" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.bluetooth.audio.call" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.bluetooth.audio.media" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.bluetooth.hid" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.bluetooth.le" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/network.bluetooth.opp" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/platform.core.cpu.frequency" support="0" type="Integer">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/platform.version.name" support="" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/screen.size.all" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.large" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/screen.size.normal.360.480" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.activity_recognition" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.gesture_recognition" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.gravity" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.humidity" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.linear_acceleration" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.rotation_vector" support="true" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/sensor.temperature" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/system/build.date" support="2015.02.23" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/build.string" support="Tizen-2.3.0_Mobile-Emulator_20150223.1659" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/build.time" support="16:59:07" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/manufacturer" support="Tizen" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/tizenid" support="3PXV0WmJ+1caWiHvW7/s1APzFAA=" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/model_name" support="Emulator" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/platform.communication_processor" support="none" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/system/platform.processor" support="Emulator" type="String">\r
-    </capability>\r
-    <capability name="http://tizen.org/feature/web.service" support="false" type="boolean"/>\r
-    <capability name="http://tizen.org/feature/humanactivitymonitor" support="true" type="boolean"/>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<capabilities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:noNamespaceSchemaLocation="capability.xsd">
+    <capability name="http://tizen.org/feature/account" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/battery" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/bookmark" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/calendar" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/camera" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/camera.back" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/camera.back.flash" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/camera.front" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/camera.front.flash" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/contact" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/database.encryption" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/datasync" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/datacontrol" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/download" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/fmradio" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/graphics.acceleration" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/input.keyboard" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/input.keyboard.layout" support="qwerty" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/location" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/location.gps" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/location.wps" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/email" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/microphone" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/multi_point_touch.pinch_zoom" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/multi_point_touch.point_count" support="10" type="Integer">
+    </capability>
+    <capability name="http://tizen.org/feature/network.bluetooth" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.bluetooth.health" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.nfc" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.nfc.card_emulation" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.nfc.reserved_push" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.push" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.secure_element" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.telephony" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.telephony.mms" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.wifi" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.wifi.direct" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/notification" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.texture_format" support="etc" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/opengles.texture_format.3dc" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.texture_format.atc" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.texture_format.etc" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.texture_format.ptc" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.texture_format.pvrtc" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.texture_format.utc" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.version.1_1" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/opengles.version.2_0" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.api.version" support="2.3" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/platform.core.cpu.arch" support="x86" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv6" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.cpu.arch.armv7" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.cpu.arch.x86" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.fpu.arch" support="sse3" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/platform.core.fpu.arch.sse2" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.fpu.arch.sse3" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.fpu.arch.ssse3" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.fpu.arch.vfpv2" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.fpu.arch.vfpv3" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.native.api.version" support="2.3" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/platform.native.osp_compatible" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.version" support="2.3.0" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/platform.web.api.version" support="2.3" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/profile" support="MOBILE" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/screen" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.auto_rotation" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.bpp" support="32" type="Integer">
+    </capability>
+    <capability name="http://tizen.org/feature/screen.coordinate_system.size.large" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.coordinate_system.size.normal" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.dpi" support="207" type="Integer">
+    </capability>
+    <capability name="http://tizen.org/feature/screen.height" support="800" type="Integer">
+    </capability>
+    <capability name="http://tizen.org/feature/screen.output.hdmi" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.output.rca" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.1080.1920" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.240.400" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.320.320" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.320.480" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.480.800" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.540.960" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.600.1024" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.720.1280" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.width" support="480" type="Integer">
+    </capability>
+    <capability name="http://tizen.org/feature/sensor.accelerometer" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.accelerometer.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.barometer" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.barometer.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.gyroscope" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.gyroscope.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.heart_rate_monitor" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.magnetometer" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.magnetometer.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.pedometer" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.photometer" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.photometer.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.proximity" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.proximity.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.tiltmeter" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.tiltmeter.wakeup" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.ultraviolet" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.wrist_up" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/shell.appwidget" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sip.voip" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/speech.recognition" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/speech.synthesis" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/systemsetting" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/systemsetting.home_screen" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/systemsetting.incoming_call" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/systemsetting.lock_screen" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/systemsetting.notification_email" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/usb.accessory" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/usb.host" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/vision.face_recognition" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/vision.image_recognition" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/vision.qrcode_generation" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/vision.qrcode_recognition" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/websetting" support="true" type="boolean"/>
+    <capability name="http://tizen.org/system/platform.name" support="Tizen" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/archive" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/badge" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/exif" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/led" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/multimedia.transcoder" support="false" type="boolean"/>
+    <capability name="http://tizen.org/capability/network.bluetooth.always_on" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.bluetooth.audio.call" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.bluetooth.audio.media" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.bluetooth.hid" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.bluetooth.le" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/network.bluetooth.opp" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/platform.core.cpu.frequency" support="0" type="Integer">
+    </capability>
+    <capability name="http://tizen.org/feature/platform.version.name" support="" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/screen.size.all" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.large" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/screen.size.normal.360.480" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.activity_recognition" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.gesture_recognition" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.gravity" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.humidity" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.linear_acceleration" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.rotation_vector" support="true" type="boolean"/>
+    <capability name="http://tizen.org/feature/sensor.temperature" support="false" type="boolean"/>
+    <capability name="http://tizen.org/system/build.date" support="2015.02.23" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/build.string" support="Tizen-2.3.0_Mobile-Emulator_20150223.1659" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/build.time" support="16:59:07" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/manufacturer" support="Tizen" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/tizenid" support="3PXV0WmJ+1caWiHvW7/s1APzFAA=" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/model_name" support="Emulator" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/platform.communication_processor" support="none" type="String">
+    </capability>
+    <capability name="http://tizen.org/system/platform.processor" support="Emulator" type="String">
+    </capability>
+    <capability name="http://tizen.org/feature/web.service" support="false" type="boolean"/>
+    <capability name="http://tizen.org/feature/humanactivitymonitor" support="true" type="boolean"/>
 </capabilities>
\ No newline at end of file
index efccadb..f456346 100644 (file)
@@ -1,22 +1,22 @@
-Reference : http://168.219.209.56/confluence/display/Tizen3/Running+Web+TCT+for+Tizen+3.0\r
-\r
----------------------------------------------------------------------------------------\r
-\r
-1. Please push the below attached 2 files in the below location(target) before the test start.\r
-\r
-file name : \r
-\r
-capability.xml\r
-buildinfo.xml\r
-\r
-\r
-location :\r
-\r
-/home/owner/content/Documents/tct/\r
-\r
-\r
-ex) sdb push capability.xml /home/owner/content/Documents/tct/\r
-ex) sdb push buildinfo.xml /home/owner/content/Documents/tct/\r
-\r
-\r
----------------------------------------------------------------------------------------\r
+Reference : http://168.219.209.56/confluence/display/Tizen3/Running+Web+TCT+for+Tizen+3.0
+
+---------------------------------------------------------------------------------------
+
+1. Please push the below attached 2 files in the below location(target) before the test start.
+
+file name : 
+
+capability.xml
+buildinfo.xml
+
+
+location :
+
+/home/owner/content/Documents/tct/
+
+
+ex) sdb push capability.xml /home/owner/content/Documents/tct/
+ex) sdb push buildinfo.xml /home/owner/content/Documents/tct/
+
+
+---------------------------------------------------------------------------------------
index b1bb50b..25be415 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import os
 import shutil
@@ -27,14 +27,14 @@ PKG_SRC_DIR = SRC_DIR + "/tct/opt/%s" % PKG_NAME
 
 def doCMD(cmd):
     # Do not need handle timeout in this short script, let tool do it
-    print "-->> \"%s\"" % cmd
+    print ("-->> \"%s\"" % cmd)
     output = []
     cmd_return_code = 1
     cmd_proc = subprocess.Popen(
         cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
 
     while True:
-        output_line = cmd_proc.stdout.readline().strip("\r\n")
+        output_line = cmd_proc.stdout.readline().decode('utf-8').strip("\r\n")
         cmd_return_code = cmd_proc.poll()
         if output_line == '' and cmd_return_code != None:
             break
@@ -148,8 +148,8 @@ def main():
             "-a", dest="user", action="store", help="User name")
         global PARAMETERS
         (PARAMETERS, args) = opts_parser.parse_args()
-    except Exception, e:
-        print "Got wrong option: %s, exit ..." % e
+    except Exception as e:
+        print ("Got wrong option: %s, exit ..." % e)
         sys.exit(1)
 
     if not PARAMETERS.user:
@@ -168,7 +168,7 @@ def main():
         PARAMETERS.mode = "SSH"
 
     if not PARAMETERS.device:
-        print "No device provided"
+        print ("No device provided")
         sys.exit(1)
 
     user_info = getUSERID()
@@ -178,10 +178,10 @@ def main():
         userid = user_info[1][0]
         XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
     else:
-        print "[Error] cmd commands error : %s"%str(user_info[1])
+        print ("[Error] cmd commands error : %s"%str(user_info[1]))
         sys.exit(1)
     if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
-        print "-i and -u are conflict"
+        print ("-i and -u are conflict")
         sys.exit(1)
 
     if PARAMETERS.buninstpkg:
index 7ca7e7d..4390a00 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 
 from sdbmanager import SdbManager
 
@@ -50,7 +50,7 @@ class DeviceManager(object):
             if dev.getDeviceId() == deviceId:
                 return dev
 
-        print "#ERROR#: The '%s' device Id exists error" % deviceId
+        print("#ERROR#: The '%s' device Id exists error" % deviceId)
         return None
 
     def loadDeviceList(self):
@@ -71,8 +71,8 @@ class DeviceManager(object):
 
         if len(connDevices) > 0:
             self._updateConnDevice(connDevices)
-            print "Connected Devices = %s" \
-                    % str([dev.devId for dev in self.devices])
+            print("Connected Devices = %s" \
+                    % str([dev.devId for dev in self.devices]))
             return True
         else:
             self._resetDevices()
@@ -85,11 +85,11 @@ class SdbDevice:
         self.devType = devType
 
     def _printDevInfo(self):
-        print "===== Device Infomation ====="
-        print " Name : " + self.devName
-        print " Id   : " + self.devId
-        print " Type : " + self.devType
-        print "============================="
+        print("===== Device Infomation =====")
+        print(" Name : " + self.devName)
+        print(" Id   : " + self.devId)
+        print(" Type : " + self.devType)
+        print("=============================")
 
     def getDeviceId(self):
         return self.devId
index 71b823e..d1fb915 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 
 import subprocess
 import time
@@ -24,7 +24,7 @@ class SdbManager:
 
     @staticmethod
     def hostCommand(command):
-        print command
+        print(command)
         proc = subprocess.Popen(command, shell=True, \
                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
@@ -33,19 +33,19 @@ class SdbManager:
             if exit_code is not None:
                 break
 
-            output = proc.stdout.read()
+            output = proc.stdout.read().decode('utf-8')
             if output:
-                print output
+                print(output)
 
-            errlog = proc.stderr.read()
+            errlog = proc.stderr.read().decode('utf-8')
             if errlog:
-                print errlog
+                print(errlog)
 
         return True
 
     @staticmethod
     def hostCommandwithResult(command):
-        print command
+        print(command)
         proc = subprocess.Popen(command, shell=True, \
                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
@@ -54,11 +54,11 @@ class SdbManager:
             if exit_code is not None:
                 break
 
-        return proc.stdout.read()
+        return proc.stdout.read().decode('utf-8')
 
     @staticmethod
     def sdbCommand(command, timeout=90):
-        print command
+        print(command)
         proc = subprocess.Popen(command,
                                 shell=True,
                                 stdout=subprocess.PIPE,
@@ -79,7 +79,7 @@ class SdbManager:
     @staticmethod
     def _checkDevIdExists(_devid):
         if len(_devid) < 0:
-            print "#ERROR#: The '%s' device Id exists error" % _devid
+            print("#ERROR#: The '%s' device Id exists error" % _devid)
             return False
         return True
 
@@ -93,7 +93,7 @@ class SdbManager:
     @staticmethod
     def sdbPush(_devid, local, remote):
         if SdbManager._checkFileExists(local) is False:
-            print '#WARNING#: The %s file exists error' % local
+            print('#WARNING#: The %s file exists error' % local)
             return False
 
         FAIL_LOG = "#ERROR#: sdb push failed"
@@ -102,12 +102,12 @@ class SdbManager:
         exit_code, re_stdout, re_stderr = SdbManager.sdbCommand(push_cmd)
 
         if exit_code is None:
-            print FAIL_LOG
-            errLog = re_stderr.read()
-            if errLog: print errLog
+            print(FAIL_LOG)
+            errLog = re_stderr.read().decode('utf-8')
+            if errLog: print(errLog)
             return False
         else:
-            print re_stdout.read()
+            print(re_stdout.read().decode('utf-8'))
             return True
 
     @staticmethod
@@ -118,19 +118,19 @@ class SdbManager:
         exit_code, re_stdout, re_stderr = SdbManager.sdbCommand(shell_cmd, timeout)
 
         if exit_code is None:
-            print FAIL_LOG
-            errLog = re_stderr.read()
-            if errLog : print errLog
+            print(FAIL_LOG)
+            errLog = re_stderr.read().decode('utf-8')
+            if errLog : print(errLog)
             return None
         else:
-            outLog = re_stdout.read()
-            errLog = re_stderr.read()
+            outLog = re_stdout.read().decode('utf-8')
+            errLog = re_stderr.read().decode('utf-8')
             if errLog:
-                print FAIL_LOG
-                print errLog
+                print(FAIL_LOG)
+                print(errLog)
                 return None
             if outLog:
-                print outLog
+                print(outLog)
                 return outLog
 
     @staticmethod
@@ -142,17 +142,17 @@ class SdbManager:
         exit_code, re_stdout, re_stderr = SdbManager.sdbCommand(root_cmd, 20)
 
         if exit_code is None:
-            print FAIL_LOG
-            errLog = re_stderr.read()
-            if errLog: print (str(errLog))
+            print(FAIL_LOG)
+            errLog = re_stderr.read().decode('utf-8')
+            if errLog: print((str(errLog)))
 
         checkLog = SdbManager.sdbShell(deviceId, 'whoami')
         if checkLog and checkLog.find('root') != -1:
-            print 'SDB ROOT ON'
+            print('SDB ROOT ON')
             is_pass = True
         else:
-            print FAIL_LOG
-            print str(checkLog)
+            print(FAIL_LOG)
+            print(str(checkLog))
 
         return is_pass
 
@@ -163,14 +163,14 @@ class SdbManager:
         SdbManager.sdbCommand(start_server_cmd, 8)
         exit_code, re_stdout, re_stderr = SdbManager.sdbCommand(dev_cmd, 20)
         if exit_code is None:
-            print "#ERROR#: %s" % re_stderr.read()
+            print("#ERROR#: %s" % re_stderr.read().decode('utf-8'))
             return None
 
-        return re_stdout.read()
+        return re_stdout.read().decode('utf-8')
 
     @staticmethod
     def sdbSetDate(devid):
-        print "set device date"
+        print("set device date")
         HDATE = '`date "+%Y-%m-%d %H:%M:%S %Z"`'
         date_cmd = '"date -s \''+ HDATE + '\'"'
         SdbManager.sdbShell(devid, date_cmd)
@@ -201,21 +201,21 @@ class SdbManager:
                     pid = pidgrp.pop()
                     try:
                         os.kill(int(pid), signal.SIGKILL)
-                    except OSError, error:
+                    except OSError as error:
                         pattern = re.compile('No such process')
                         match = pattern.search(str(error))
                         if not match:
-                            print "[ Error: fail to kill pid: %s," \
-                                " error: %s ]\n" % (int(pid), error)
+                            print("[ Error: fail to kill pid: %s," \
+                                " error: %s ]\n" % (int(pid), error))
             # kill for windows platform
             else:
                 kernel32 = ctypes.windll.kernel32
                 handle = kernel32.OpenProcess(1, 0, int(ppid))
                 kernel32.TerminateProcess(handle, 0)
-        except OSError, error:
+        except OSError as error:
             pattern = re.compile('No such process')
             match = pattern.search(str(error))
             if not match:
-                print "[ Error: fail to kill pid: %s, error: %s ]\n" \
-                      % (int(ppid), error)
+                print("[ Error: fail to kill pid: %s, error: %s ]\n" \
+                      % (int(ppid), error))
         return None
index d114829..8e94f84 100644 (file)
-#!/usr/bin/python\r
-\r
-"""Usage:\r
-         tct-config-device.py [--install [--deviceid <serial_no>]]\r
-         tct-config-device.py --purge [--deviceid <serial_no>]\r
-         tct-config-device.py --check [--deviceid <serial_no>][--procid <process_name>]\r
-         tct-config-device.py --bhtest <profile>\r
-\r
-Options:\r
-  -h, --help         show this help message and exit\r
-  --install          Install tct resources to TIZEN device,it can be omitted\r
-  --purge            Clean up tct resources from TIZEN device\r
-  --check            Check test resource on device\r
-  --bhtest           Install tct behavior test\r
-  --deviceid         Set the device serial number\r
-  --procid           Set the check process name\r
-\r
-"""\r
-import os\r
-import sys\r
-import time\r
-import ConfigParser\r
-import threading\r
-import subprocess\r
-\r
-\r
-from optparse import OptionParser\r
-from devicemanager import DeviceManager\r
-from sdbmanager import SdbManager\r
-\r
-JOIN = os.path.join\r
-EXISTS = os.path.exists\r
-DIRNAME = os.path.dirname\r
-BASENAME = os.path.basename\r
-ABSPATH = os.path.abspath\r
-SPLIT = os.path.split\r
-\r
-CURENT_DIR = SPLIT(DIRNAME(ABSPATH(__file__)))[0]\r
-\r
-TOOLS_DIR = JOIN(CURENT_DIR, "tools")\r
-RESRC_DIR = JOIN(CURENT_DIR, "resource")\r
-PKGS_DIR = JOIN(CURENT_DIR, "package")\r
-\r
-DEVID = ""\r
-\r
-TIZENV = "tizen_6.5"\r
-\r
-DLOG_CLEAR = "dlogutil -c"\r
-DLOG_UTIL = "sdb -s %s shell dlogutil -v time"\r
-\r
-TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"\r
-tct_parser = ConfigParser.ConfigParser()\r
-tct_parser.read(TCT_CONFIG_FILE)\r
-\r
-DEVICE_SUITE_TARGET_24 = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_24')\r
-DEVICE_SUITE_TARGET_30 = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')\r
-DEVICE_EXECUTION_MODE_30 = tct_parser.get('DEVICE', 'DEVICE_EXECUTION_MODE_30')\r
-\r
-if TIZENV.find('tizen_6.5') > -1:\r
-    DEVICE_SUITE_TARGET = DEVICE_SUITE_TARGET_30\r
-else:\r
-    DEVICE_SUITE_TARGET = DEVICE_SUITE_TARGET_24\r
-\r
-def LS(root, file_name, extension=None):\r
-    import glob\r
-\r
-    file_path = ""\r
-    if extension:\r
-        file_path = JOIN(root, file_name) + "*." + extension\r
-    else:\r
-        file_path = JOIN(root, file_name) + "*"\r
-    files = glob.iglob(r'' + file_path + '')\r
-    for f in files:\r
-        return BASENAME(f)\r
-\r
-def get_device_arch():\r
-    global DEV_ARCH\r
-    #ARCHCMD = SDB_SERNO + " shell \"cat /etc/products.d/tizen.prod |grep \<arch\""\r
-    arch_cmd = "cat /etc/config/model-config.xml | grep tizen.org/feature/platform.core.cpu.arch"\r
-    #result example : <key name="tizen.org/feature/platform.core.cpu.arch" type="string">armv7</key>\r
-    result = SdbManager.sdbShell(DEVID, arch_cmd)\r
-    if result and len(result) > 0:\r
-        arch_str = result.split('\n')[0]\r
-        if arch_str and arch_str.find('armv') > -1:\r
-            DEV_ARCH = "arm"\r
-            print "info: [* Arch Type : arm *]"\r
-        elif arch_str and arch_str.find("aarch64") > -1:\r
-            DEV_ARCH = "aarch64"\r
-            print "info: [* Arch Type : aarch64 *]"\r
-        elif arch_str and arch_str.find('x86_64') > -1:\r
-            DEV_ARCH = "ia64"\r
-            print "info: [* Arch Type : ia64 *]"\r
-        elif arch_str and (arch_str.find("i686") > -1 or arch_str.find("x86") > -1 or arch_str.find("i386") > -1):\r
-            DEV_ARCH = "ia"\r
-            print "info: [* Arch Type : ia *]"\r
-        else:\r
-            print "info: [* Arch Type : None *]"\r
-            return False\r
-        return True\r
-    else:\r
-        print "#ERROR#: Failed to get device cpu_arch type"\r
-        return False\r
-\r
-\r
-def kill_process(process_name):\r
-    proc_cmd = "ps aux | grep " + process_name + " | grep -v grep | awk '{print $2}'"\r
-    result = SdbManager.sdbShell(DEVID, proc_cmd)\r
-    if result and len(result) > 0:\r
-        kill_cmd = "kill -9 " + str(result).strip() + " > /dev/null 2>&1"\r
-        SdbManager.sdbShell(DEVID, kill_cmd)\r
-        print "info: %s process has been killed" % process_name\r
-    else:\r
-        print "info: No process of %s activated" % process_name\r
-\r
-def remove_tinyweb():\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/server.pem > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/tinyweb > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/cgi-getcookie > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/cgi-getfield > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/libmongoose.so > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/echo.so > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/libssl.so > /dev/null 2>&1")\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/libcrypto.so > /dev/null 2>&1")\r
-\r
-def remove_stub():\r
-    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/testkit-stub")\r
-\r
-\r
-def uninstall_testconfig():\r
-    if TIZENV.find('tizen_6.5') > -1:\r
-        inst_path = RESRC_DIR + os.sep + 'tct-testconfig' + os.sep + 'inst.py'\r
-        SdbManager.hostCommand("python %s -s %s -u" % (inst_path, DEVID))\r
-    else:\r
-        RPMPKG = LS(RESRC_DIR, "tct-testconfig")\r
-        if not RPMPKG:\r
-            sys.exit("#ERROR#: cannot found tct-testconfig.zip file in resource dir")\r
-        uninst_cmd = JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/inst.sh') + ' -u'\r
-        SdbManager.sdbShell(DEVID, uninst_cmd)\r
-        rm_cmd = 'rm -f ' + JOIN(DEVICE_SUITE_TARGET, 'tct/', RPMPKG)\r
-        SdbManager.sdbShell(DEVID, rm_cmd)\r
-\r
-\r
-def uninstall_behavior():\r
-    print "info: Uninstall behavior tool."\r
-    if TIZENV.find('tizen_6.5') > -1:\r
-        pass\r
-    else:\r
-        uninst_cmd = JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-behavior-tests/inst.sh') + ' -u'\r
-        SdbManager.sdbShell(DEVID, uninst_cmd)\r
-\r
-\r
-def check_resource_dir():\r
-    print "info: check resource directory."\r
-    if os.path.exists(RESRC_DIR):\r
-        SdbManager.sdbShell(DEVID, 'mkdir -p ' + JOIN(DEVICE_SUITE_TARGET, 'tct/'))\r
-        SdbManager.sdbShell(DEVID, 'mkdir -p ' + JOIN(DEVICE_SUITE_TARGET, 'Documents/'))\r
-        return True\r
-    else:\r
-        print "#WARNING#: The directory resource does not exists. Please copy test resources to %s " % RESRC_DIR\r
-        return False\r
-\r
-def check_tinyweb():\r
-    print "info: Check tinyweb."\r
-    result = SdbManager.sdbShell(DEVID, "ls /opt/home/developer/ | grep tinyweb")\r
-    if result and result.find('tinyweb'):\r
-        remove_tinyweb()\r
-        install_tinyweb()\r
-        launch_tinyweb()\r
-    else:\r
-        install_tinyweb()\r
-        launch_tinyweb()\r
-\r
-\r
-def port_manager():\r
-    print "info: Check the tinyweb port"\r
-    result = SdbManager.sdbShell('fuser -n tcp 80 8080 8081 8082 8083 8443')\r
-    if result and len(result) > 0:\r
-        check_port = SdbManager.sdbShell('su "netstat -nap |grep tinyweb"')\r
-        if len(check_port) > 0:\r
-            print "info: tinyweb on"\r
-    else:\r
-        print "info: Port is available"\r
-\r
-\r
-def launch_tinyweb():\r
-    dpath_cmd = "printenv PATH"\r
-    dpath = SdbManager.sdbShell(DEVID, dpath_cmd)\r
-\r
-    launch_cmd = 'sdb -s ' + DEVID + ' shell ' + '"env LD_LIBRARY_PATH=/opt/home/developer PATH=' + dpath.strip() + \\r
-                 ':/opt/home/developer/ tinyweb -ssl_certificate /opt/home/developer/server.pem -document_root ' + \\r
-                 JOIN(DEVICE_SUITE_TARGET, 'tct') + ' -listening_ports 80,8080,8081,8082,8083,8443s; sleep 3s" 0> /dev/null'\r
-\r
-    SdbManager.sdbCommand(launch_cmd, 10)\r
-\r
-    check_tinyweb_cmd = '\"ps aux | grep tinyweb | grep -v grep\"'\r
-    result = SdbManager.sdbShell(DEVID, check_tinyweb_cmd)\r
-    if result and result.find('tinyweb') > -1:\r
-        print "info: Active process tinyweb successfully."\r
-        return True\r
-    else:\r
-        print "#ERROR#: Active process tinyweb failed."\r
-        return False\r
-\r
-def install_tinyweb():\r
-    print "info: Install tinyweb"\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'tinyweb'), '/opt/home/developer/')\r
-    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/tinyweb")\r
-\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'cgi-getcookie'), '/opt/home/developer/')\r
-    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/cgi-getcookie")\r
-\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'cgi-getfield'), '/opt/home/developer/')\r
-    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/cgi-getfield")\r
-\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'libmongoose.so'), '/opt/home/developer/')\r
-    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/libmongoose.so")\r
-\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'echo.so'), '/opt/home/developer/')\r
-    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/echo.so")\r
-\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'server.pem'), '/opt/home/developer/')\r
-    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/server.pem")\r
-    if DEV_ARCH == "arm":\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libssl.so.1.0.0 /opt/home/developer/libssl.so")\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")\r
-    elif DEV_ARCH == "ia":\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libssl.so.1.0.0 /opt/home/developer/libssl.so")\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")\r
-    elif DEV_ARCH == "aarch64":\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libssl.so.1.0.0 /opt/home/developer/libssl.so")\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")\r
-    elif DEV_ARCH == "ia64":\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libssl.so.1.0.0 /opt/home/developer/libssl.so")\r
-        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")\r
-\r
-\r
-def check_stub():\r
-    print "info: Check testkit-stub."\r
-    result = SdbManager.sdbShell(DEVID, "ls /opt/home/developer/ | grep testkit-stub")\r
-    if result and len(result) > 0:\r
-        print "info: testkit-stub has been installed on device."\r
-        kill_process("testkit-stub")\r
-    install_stub()\r
-\r
-\r
-def install_stub():\r
-    print "info: Install testkit-stub."\r
-    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'testkit-stub', DEV_ARCH, 'testkit-stub'), '/opt/home/developer/testkit-stub')\r
-    SdbManager.sdbShell(DEVID, "chmod a+x /opt/home/developer/testkit-stub")\r
-    SdbManager.sdbShell(DEVID, "chsmack -e \"User\" /opt/home/developer/testkit-stub")\r
-\r
-\r
-def check_testconfig():\r
-    result = SdbManager.sdbShell(DEVID, '"cat ' + JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/tct-testconfig.ini') + ' | grep tct"')\r
-    if result and len(result) > 0 and result.find('No such file or directory') == -1:\r
-        print "info: testconfig has already been installed on device."\r
-    else:\r
-        install_testconfig()\r
-\r
-\r
-def install_testconfig():\r
-    print "info: Install testconfig."\r
-    if TIZENV.find('tizen_6.5') > -1:\r
-        instPath = RESRC_DIR + os.sep + 'tct-testconfig' + os.sep + 'inst.py'\r
-        SdbManager.hostCommand("python %s -s %s" % (instPath, DEVID))\r
-    else:\r
-        conf_pkg = LS(RESRC_DIR, "tct-testconfig")\r
-        SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, conf_pkg), JOIN(DEVICE_SUITE_TARGET, 'tct/'))\r
-        SdbManager.sdbShell(DEVID, 'unzip -uo ' + JOIN(DEVICE_SUITE_TARGET, 'tct/') + conf_pkg + ' -d ' + JOIN(DEVICE_SUITE_TARGET, 'tct/'))\r
-        SdbManager.sdbShell(DEVID, JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/inst.sh'))\r
-\r
-    result = SdbManager.sdbShell(DEVID, 'cat ' + JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/tct-testconfig.ini') + ' | grep tct')\r
-\r
-    if result and len(result) > 0:\r
-        print "info: Install testconfig successfully."\r
-    else:\r
-        print "#ERROR#: Failed to install testconfig, please check %s" % RESRC_DIR\r
-        return False\r
-\r
-    return True\r
-\r
-def install_behavior(profile_name):\r
-    print "info: Install behavior tool."\r
-\r
-    if not profile_name in ['wearable', 'mobile', 'tv', 'ivi']:\r
-        print "#WARNING#: Invalid device profile value %s" % profile_name\r
-        return False\r
-\r
-    if TIZENV.find('tizen_6.5') > -1:\r
-        RPMPKG = "tct-behavior-tests-6.5.zip"\r
-        opt_rpm_path = PKGS_DIR + "s" + os.sep + profile_name + os.sep + RPMPKG\r
-        local_rpm_path = PKGS_DIR + os.sep + profile_name + os.sep + RPMPKG\r
-\r
-        install_rpm = None\r
-        install_dest = None\r
-        install_cmd = None\r
-        if os.path.exists(opt_rpm_path):\r
-            install_rpm = opt_rpm_path\r
-            install_dest = PKGS_DIR + "s" + os.sep + profile_name + os.sep\r
-            install_cmd = PKGS_DIR + "s" + os.sep + profile_name + os.sep + \\r
-                    'opt' + os.sep + "tct-behavior-tests" + os.sep + "inst.py"\r
-        elif os.path.exists(local_rpm_path):\r
-            install_rpm = local_rpm_path\r
-            install_dest = PKGS_DIR + os.sep + profile_name + os.sep\r
-            install_cmd = PKGS_DIR + os.sep + profile_name + os.sep + \\r
-                    'opt' + os.sep + "tct-behavior-tests" + os.sep + "inst.py"\r
-\r
-        SdbManager.hostCommand("rm -rf %s" % install_dest + "opt/tct-behavior-tests")\r
-        SdbManager.hostCommand("unzip -uo %s -d %s" % (install_rpm, install_dest))\r
-        SdbManager.hostCommand("python %s -s %s" % (install_cmd, DEVID))\r
-\r
-        print "info: Check tizen-web-ui-fw. Please wait..."\r
-        check_uifw = SdbManager.sdbShell(DEVID, "ls /usr/share/ | grep tizen-web-ui-fw")\r
-        if check_uifw and len(check_uifw) > 0:\r
-            print "info: tizen-web-ui-fw has been installed on device."\r
-        else:\r
-            SdbManager.sdbShell(DEVID, '"mkdir -p /usr/share/tizen-web-ui-fw/"')\r
-            SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, "tizen-web-ui-fw"), '/usr/share/tizen-web-ui-fw/')\r
-    else:\r
-        pass\r
-\r
-    return True\r
-\r
-\r
-\r
-def update_tctconf_file():\r
-    print "Updating TCT_CONFIG file"\r
-    tct_config_old = "/opt/tools/TCT_CONFIG"\r
-    tct_config_new = "/opt/tools/shell/tmp/%s/TCT_CONFIG"%DEVID\r
-\r
-    if os.path.exists(tct_config_new):\r
-        os.remove(tct_config_new)\r
-\r
-    config_content = ""\r
-    with open(tct_config_old, 'r') as f:\r
-        config_content = f.readlines()\r
-    f_new = open(tct_config_new, 'w')\r
-\r
-    tmp = ""\r
-    for line in config_content:\r
-        if line.find("DEVICE_PHYSICAL_STORAGE_30")!=-1:\r
-            tmp = getDevPhysicalStorage()\r
-            if tmp is None:\r
-                f_new.write(line)\r
-            else:\r
-                f_new.write("DEVICE_PHYSICAL_STORAGE_30="+tmp.strip()+"\n")\r
-        elif line.find("DEVICE_ADMIN_USER_APPS_ROOT_30")!=-1:\r
-            tmp = getDevAdminUserAppsRoot()\r
-            if tmp is None:\r
-                f_new.write(line)\r
-            else:\r
-                f_new.write("DEVICE_ADMIN_USER_APPS_ROOT_30="+tmp.strip()+"\n")\r
+#!/usr/bin/env python3
+
+"""Usage:
+         tct-config-device.py [--install [--deviceid <serial_no>]]
+         tct-config-device.py --purge [--deviceid <serial_no>]
+         tct-config-device.py --check [--deviceid <serial_no>][--procid <process_name>]
+         tct-config-device.py --bhtest <profile>
+
+Options:
+  -h, --help         show this help message and exit
+  --install          Install tct resources to TIZEN device,it can be omitted
+  --purge            Clean up tct resources from TIZEN device
+  --check            Check test resource on device
+  --bhtest           Install tct behavior test
+  --deviceid         Set the device serial number
+  --procid           Set the check process name
+
+"""
+import os
+import sys
+import time
+import configparser
+import threading
+import subprocess
+
+
+from optparse import OptionParser
+from devicemanager import DeviceManager
+from sdbmanager import SdbManager
+
+JOIN = os.path.join
+EXISTS = os.path.exists
+DIRNAME = os.path.dirname
+BASENAME = os.path.basename
+ABSPATH = os.path.abspath
+SPLIT = os.path.split
+
+CURENT_DIR = SPLIT(DIRNAME(ABSPATH(__file__)))[0]
+
+TOOLS_DIR = JOIN(CURENT_DIR, "tools")
+RESRC_DIR = JOIN(CURENT_DIR, "resource")
+PKGS_DIR = JOIN(CURENT_DIR, "package")
+
+DEVID = ""
+
+TIZENV = "tizen_7.0"
+
+DLOG_CLEAR = "dlogutil -c"
+DLOG_UTIL = "sdb -s %s shell dlogutil -v time"
+
+TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
+tct_parser = configparser.ConfigParser()
+tct_parser.read(TCT_CONFIG_FILE)
+
+DEVICE_SUITE_TARGET_24 = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_24')
+DEVICE_SUITE_TARGET_30 = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
+DEVICE_EXECUTION_MODE_30 = tct_parser.get('DEVICE', 'DEVICE_EXECUTION_MODE_30')
+
+if TIZENV.find('tizen_7.0') > -1:
+    DEVICE_SUITE_TARGET = DEVICE_SUITE_TARGET_30
+else:
+    DEVICE_SUITE_TARGET = DEVICE_SUITE_TARGET_24
+
+def LS(root, file_name, extension=None):
+    import glob
+
+    file_path = ""
+    if extension:
+        file_path = JOIN(root, file_name) + "*." + extension
+    else:
+        file_path = JOIN(root, file_name) + "*"
+    files = glob.iglob(r'' + file_path + '')
+    for f in files:
+        return BASENAME(f)
+
+def get_device_arch():
+    global DEV_ARCH
+    #ARCHCMD = SDB_SERNO + " shell \"cat /etc/products.d/tizen.prod |grep \<arch\""
+    arch_cmd = "cat /etc/config/model-config.xml | grep tizen.org/feature/platform.core.cpu.arch"
+    #result example : <key name="tizen.org/feature/platform.core.cpu.arch" type="string">armv7</key>
+    result = SdbManager.sdbShell(DEVID, arch_cmd)
+    if result and len(result) > 0:
+        arch_str = result.split('\n')[0]
+        if arch_str and arch_str.find('armv') > -1:
+            DEV_ARCH = "arm"
+            print("info: [* Arch Type : arm *]")
+        elif arch_str and arch_str.find("aarch64") > -1:
+            DEV_ARCH = "aarch64"
+            print("info: [* Arch Type : aarch64 *]")
+        elif arch_str and arch_str.find('x86_64') > -1:
+            DEV_ARCH = "ia64"
+            print("info: [* Arch Type : ia64 *]")
+        elif arch_str and (arch_str.find("i686") > -1 or arch_str.find("x86") > -1 or arch_str.find("i386") > -1):
+            DEV_ARCH = "ia"
+            print("info: [* Arch Type : ia *]")
+        else:
+            print("info: [* Arch Type : None *]")
+            return False
+        return True
+    else:
+        print("#ERROR#: Failed to get device cpu_arch type")
+        return False
+
+
+def kill_process(process_name):
+    proc_cmd = "ps aux | grep " + process_name + " | grep -v grep | awk '{print $2}'"
+    result = SdbManager.sdbShell(DEVID, proc_cmd)
+    if result and len(result) > 0:
+        kill_cmd = "kill -9 " + str(result).strip() + " > /dev/null 2>&1"
+        SdbManager.sdbShell(DEVID, kill_cmd)
+        print("info: %s process has been killed" % process_name)
+    else:
+        print("info: No process of %s activated" % process_name)
+
+def remove_tinyweb():
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/server.pem > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/tinyweb > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/cgi-getcookie > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/cgi-getfield > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/libmongoose.so > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/echo.so > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/libssl.so > /dev/null 2>&1")
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/libcrypto.so > /dev/null 2>&1")
+
+def remove_stub():
+    SdbManager.sdbShell(DEVID, "rm -f /opt/home/developer/testkit-stub")
+
+
+def uninstall_testconfig():
+    if TIZENV.find('tizen_7.0') > -1:
+        inst_path = RESRC_DIR + os.sep + 'tct-testconfig' + os.sep + 'inst.py'
+        SdbManager.hostCommand("python %s -s %s -u" % (inst_path, DEVID))
+    else:
+        RPMPKG = LS(RESRC_DIR, "tct-testconfig")
+        if not RPMPKG:
+            sys.exit("#ERROR#: cannot found tct-testconfig.zip file in resource dir")
+        uninst_cmd = JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/inst.sh') + ' -u'
+        SdbManager.sdbShell(DEVID, uninst_cmd)
+        rm_cmd = 'rm -f ' + JOIN(DEVICE_SUITE_TARGET, 'tct/', RPMPKG)
+        SdbManager.sdbShell(DEVID, rm_cmd)
+
+
+def uninstall_behavior():
+    print("info: Uninstall behavior tool.")
+    if TIZENV.find('tizen_7.0') > -1:
+        pass
+    else:
+        uninst_cmd = JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-behavior-tests/inst.sh') + ' -u'
+        SdbManager.sdbShell(DEVID, uninst_cmd)
+
+
+def check_resource_dir():
+    print("info: check resource directory.")
+    if os.path.exists(RESRC_DIR):
+        SdbManager.sdbShell(DEVID, 'mkdir -p ' + JOIN(DEVICE_SUITE_TARGET, 'tct/'))
+        SdbManager.sdbShell(DEVID, 'mkdir -p ' + JOIN(DEVICE_SUITE_TARGET, 'Documents/'))
+        return True
+    else:
+        print("#WARNING#: The directory resource does not exists. Please copy test resources to %s " % RESRC_DIR)
+        return False
+
+def check_tinyweb():
+    print("info: Check tinyweb.")
+    result = SdbManager.sdbShell(DEVID, "ls /opt/home/developer/ | grep tinyweb")
+    if result and result.find('tinyweb'):
+        remove_tinyweb()
+        install_tinyweb()
+        launch_tinyweb()
+    else:
+        install_tinyweb()
+        launch_tinyweb()
+
+
+def port_manager():
+    print("info: Check the tinyweb port")
+    result = SdbManager.sdbShell('fuser -n tcp 80 8080 8081 8082 8083 8443')
+    if result and len(result) > 0:
+        check_port = SdbManager.sdbShell('su "netstat -nap |grep tinyweb"')
+        if len(check_port) > 0:
+            print("info: tinyweb on")
+    else:
+        print("info: Port is available")
+
+
+def launch_tinyweb():
+    dpath_cmd = "printenv PATH"
+    dpath = SdbManager.sdbShell(DEVID, dpath_cmd)
+
+    launch_cmd = 'sdb -s ' + DEVID + ' shell ' + '"env LD_LIBRARY_PATH=/opt/home/developer PATH=' + dpath.strip() + \
+                 ':/opt/home/developer/ tinyweb -ssl_certificate /opt/home/developer/server.pem -document_root ' + \
+                 JOIN(DEVICE_SUITE_TARGET, 'tct') + ' -listening_ports 80,8080,8081,8082,8083,8443s; sleep 3s" 0> /dev/null'
+
+    SdbManager.sdbCommand(launch_cmd, 10)
+
+    check_tinyweb_cmd = '\"ps aux | grep tinyweb | grep -v grep\"'
+    result = SdbManager.sdbShell(DEVID, check_tinyweb_cmd)
+    if result and result.find('tinyweb') > -1:
+        print("info: Active process tinyweb successfully.")
+        return True
+    else:
+        print("#ERROR#: Active process tinyweb failed.")
+        return False
+
+def install_tinyweb():
+    print("info: Install tinyweb")
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'tinyweb'), '/opt/home/developer/')
+    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/tinyweb")
+
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'cgi-getcookie'), '/opt/home/developer/')
+    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/cgi-getcookie")
+
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'cgi-getfield'), '/opt/home/developer/')
+    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/cgi-getfield")
+
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'libmongoose.so'), '/opt/home/developer/')
+    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/libmongoose.so")
+
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'echo.so'), '/opt/home/developer/')
+    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/echo.so")
+
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'tinyweb', DEV_ARCH, 'server.pem'), '/opt/home/developer/')
+    SdbManager.sdbShell(DEVID, "chmod 777 /opt/home/developer/server.pem")
+    if DEV_ARCH == "arm":
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libssl.so.1.0.0 /opt/home/developer/libssl.so")
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")
+    elif DEV_ARCH == "ia":
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libssl.so.1.0.0 /opt/home/developer/libssl.so")
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")
+    elif DEV_ARCH == "aarch64":
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libssl.so.1.0.0 /opt/home/developer/libssl.so")
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")
+    elif DEV_ARCH == "ia64":
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libssl.so.1.0.0 /opt/home/developer/libssl.so")
+        SdbManager.sdbShell(DEVID, "ln -s /usr/lib64/libcrypto.so.1.0.0 /opt/home/developer/libcrypto.so")
+
+
+def check_stub():
+    print("info: Check testkit-stub.")
+    result = SdbManager.sdbShell(DEVID, "ls /opt/home/developer/ | grep testkit-stub")
+    if result and len(result) > 0:
+        print("info: testkit-stub has been installed on device.")
+        kill_process("testkit-stub")
+    install_stub()
+
+
+def install_stub():
+    print("info: Install testkit-stub.")
+    SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, 'testkit-stub', DEV_ARCH, 'testkit-stub'), '/opt/home/developer/testkit-stub')
+    SdbManager.sdbShell(DEVID, "chmod a+x /opt/home/developer/testkit-stub")
+    SdbManager.sdbShell(DEVID, "chsmack -e \"User\" /opt/home/developer/testkit-stub")
+
+
+def check_testconfig():
+    result = SdbManager.sdbShell(DEVID, '"cat ' + JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/tct-testconfig.ini') + ' | grep tct"')
+    if result and len(result) > 0 and result.find('No such file or directory') == -1:
+        print("info: testconfig has already been installed on device.")
+    else:
+        install_testconfig()
+
+
+def install_testconfig():
+    print("info: Install testconfig.")
+    if TIZENV.find('tizen_7.0') > -1:
+        instPath = RESRC_DIR + os.sep + 'tct-testconfig' + os.sep + 'inst.py'
+        SdbManager.hostCommand("python %s -s %s" % (instPath, DEVID))
+    else:
+        conf_pkg = LS(RESRC_DIR, "tct-testconfig")
+        SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, conf_pkg), JOIN(DEVICE_SUITE_TARGET, 'tct/'))
+        SdbManager.sdbShell(DEVID, 'unzip -uo ' + JOIN(DEVICE_SUITE_TARGET, 'tct/') + conf_pkg + ' -d ' + JOIN(DEVICE_SUITE_TARGET, 'tct/'))
+        SdbManager.sdbShell(DEVID, JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/inst.sh'))
+
+    result = SdbManager.sdbShell(DEVID, 'cat ' + JOIN(DEVICE_SUITE_TARGET, 'tct/opt/tct-testconfig/tct-testconfig.ini') + ' | grep tct')
+
+    if result and len(result) > 0:
+        print("info: Install testconfig successfully.")
+    else:
+        print("#ERROR#: Failed to install testconfig, please check %s" % RESRC_DIR)
+        return False
+
+    return True
+
+def install_behavior(profile_name):
+    print("info: Install behavior tool.")
+
+    if not profile_name in ['wearable', 'mobile', 'tv', 'ivi']:
+        print("#WARNING#: Invalid device profile value %s" % profile_name)
+        return False
+
+    if TIZENV.find('tizen_7.0') > -1:
+        RPMPKG = "tct-behavior-tests-7.0.zip"
+        opt_rpm_path = PKGS_DIR + "s" + os.sep + profile_name + os.sep + RPMPKG
+        local_rpm_path = PKGS_DIR + os.sep + profile_name + os.sep + RPMPKG
+
+        install_rpm = None
+        install_dest = None
+        install_cmd = None
+        if os.path.exists(opt_rpm_path):
+            install_rpm = opt_rpm_path
+            install_dest = PKGS_DIR + "s" + os.sep + profile_name + os.sep
+            install_cmd = PKGS_DIR + "s" + os.sep + profile_name + os.sep + \
+                    'opt' + os.sep + "tct-behavior-tests" + os.sep + "inst.py"
+        elif os.path.exists(local_rpm_path):
+            install_rpm = local_rpm_path
+            install_dest = PKGS_DIR + os.sep + profile_name + os.sep
+            install_cmd = PKGS_DIR + os.sep + profile_name + os.sep + \
+                    'opt' + os.sep + "tct-behavior-tests" + os.sep + "inst.py"
+
+        SdbManager.hostCommand("rm -rf %s" % install_dest + "opt/tct-behavior-tests")
+        SdbManager.hostCommand("unzip -uo %s -d %s" % (install_rpm, install_dest))
+        SdbManager.hostCommand("python %s -s %s" % (install_cmd, DEVID))
+
+        print("info: Check tizen-web-ui-fw. Please wait...")
+        check_uifw = SdbManager.sdbShell(DEVID, "ls /usr/share/ | grep tizen-web-ui-fw")
+        if check_uifw and len(check_uifw) > 0:
+            print("info: tizen-web-ui-fw has been installed on device.")
+        else:
+            SdbManager.sdbShell(DEVID, '"mkdir -p /usr/share/tizen-web-ui-fw/"')
+            SdbManager.sdbPush(DEVID, JOIN(RESRC_DIR, "tizen-web-ui-fw"), '/usr/share/tizen-web-ui-fw/')
+    else:
+        pass
+
+    return True
+
+
+
+def update_tctconf_file():
+    print("Updating TCT_CONFIG file")
+    tct_config_old = "/opt/tools/TCT_CONFIG"
+    tct_config_new = "/opt/tools/shell/tmp/%s/TCT_CONFIG"%DEVID
+
+    if os.path.exists(tct_config_new):
+        os.remove(tct_config_new)
+
+    config_content = ""
+    with open(tct_config_old, 'r') as f:
+        config_content = f.readlines()
+    f_new = open(tct_config_new, 'w')
+
+    tmp = ""
+    for line in config_content:
+        if line.find("DEVICE_PHYSICAL_STORAGE_30")!=-1:
+            tmp = getDevPhysicalStorage()
+            if tmp is None:
+                f_new.write(line)
+            else:
+                f_new.write("DEVICE_PHYSICAL_STORAGE_30="+tmp.strip()+"\n")
+        elif line.find("DEVICE_ADMIN_USER_APPS_ROOT_30")!=-1:
+            tmp = getDevAdminUserAppsRoot()
+            if tmp is None:
+                f_new.write(line)
+            else:
+                f_new.write("DEVICE_ADMIN_USER_APPS_ROOT_30="+tmp.strip()+"\n")
         elif line.find("DEVICE_STORAGE_30")!=-1:
             tmp = getDevStorage()
             if tmp is None:
                 f_new.write(line)
             else:
                 f_new.write("DEVICE_STORAGE_30="+tmp.strip()+"\n")
-        else:\r
-            f_new.write(line)\r
-    f_new.close()\r
-\r
-def getDevPhysicalStorage():\r
-    devphysicalstorage_cmd = "tzplatform-get -u owner TZ_USER_CONTENT"\r
-    print devphysicalstorage_cmd\r
-    ret = SdbManager.sdbShell(DEVID, devphysicalstorage_cmd)\r
-    print ret\r
-    if ret is None:\r
-        print "Cannot get info from cmd : %s" %devphysicalstorage_cmd\r
-        return None\r
-    else:\r
-        ret = ret.replace('/opt/usr/','/')\r
-        print "DEVICE_PHYSICAL_STORAGE_30 : %s" %(ret.split('=')[1])\r
-        return ret.split('=')[1]\r
-\r
-def getDevAdminUserAppsRoot():\r
-    devadminuserappsroot_cmd = "tzplatform-get TZ_SYS_RW_APP"\r
-    ret = SdbManager.sdbShell(DEVID, devadminuserappsroot_cmd)\r
-    if ret is None:\r
-        print "Cannot get info from cmd : %s" %devadminuserappsroot_cmd\r
-        return None\r
-    else:\r
-        print "DEVCIE_ADMIN_USER_APPS_ROOT_30 : %s" %(ret.split('=')[1])\r
-        return ret.split('=')[1]\r
-\r
+        else:
+            f_new.write(line)
+    f_new.close()
+
+def getDevPhysicalStorage():
+    devphysicalstorage_cmd = "tzplatform-get -u owner TZ_USER_CONTENT"
+    print(devphysicalstorage_cmd)
+    ret = SdbManager.sdbShell(DEVID, devphysicalstorage_cmd)
+    print(ret)
+    if ret is None:
+        print("Cannot get info from cmd : %s" %devphysicalstorage_cmd)
+        return None
+    else:
+        ret = ret.replace('/opt/usr/','/')
+        print("DEVICE_PHYSICAL_STORAGE_30 : %s" %(ret.split('=')[1]))
+        return ret.split('=')[1]
+
+def getDevAdminUserAppsRoot():
+    devadminuserappsroot_cmd = "tzplatform-get TZ_SYS_RW_APP"
+    ret = SdbManager.sdbShell(DEVID, devadminuserappsroot_cmd)
+    if ret is None:
+        print("Cannot get info from cmd : %s" %devadminuserappsroot_cmd)
+        return None
+    else:
+        print("DEVCIE_ADMIN_USER_APPS_ROOT_30 : %s" %(ret.split('=')[1]))
+        return ret.split('=')[1]
+
 def getDevStorage():
     devstorage_cmd = "tzplatform-get -u owner TZ_USER_CONTENT"
-    print devstorage_cmd
+    print(devstorage_cmd)
     ret = SdbManager.sdbShell(DEVID, devstorage_cmd)
-    print ret
+    print(ret)
     if ret is None:
-        print "Cannot get info from cmd : %s" %devstorage_cmd
+        print("Cannot get info from cmd : %s" %devstorage_cmd)
         return None
     else:
-        print "DEVICE_STORAGE_30 : %s" %(ret.split('=')[1])
+        print("DEVICE_STORAGE_30 : %s" %(ret.split('=')[1]))
         return ret.split('=')[1]
 
-def push_tctconf_file():\r
-    updated_tct_conf_local = "/opt/tools/shell/tmp/%s/TCT_CONFIG"%DEVID\r
-    remote = DEVICE_SUITE_TARGET_30\r
-    if not SdbManager.sdbPush(DEVID, updated_tct_conf_local, remote):\r
-        print "#ERROR#: TCT_CONFIG file push failed"\r
-        return False\r
-    return True\r
-\r
-\r
-def debug_trace(cmd, logfile):\r
-    global debug_flag, metux\r
-\r
-    wbuffile = file(logfile, "a+")\r
-    exit_code = None\r
-    proc = subprocess.Popen(args=cmd,\r
-            shell=True,\r
-            stdout=wbuffile,\r
-            stderr=None)\r
-    while True:\r
-        exit_code = proc.poll()\r
-        if exit_code is not None:\r
-            break\r
-        time.sleep(0.6)\r
-        metux.acquire()\r
-        proc_flag = debug_flag\r
-        metux.release()\r
-        if not proc_flag:\r
-            break\r
-    wbuffile.close()\r
-    SdbManager.killall(proc.pid)\r
-\r
-\r
-def start_debug(dlog_file):\r
-    global debug_flag, metux, dlog_thread\r
-    debug_flag = True\r
-    metux = threading.Lock()\r
-    clear_cmd = DLOG_CLEAR\r
-    SdbManager.sdbShell(DEVID, clear_cmd)\r
-\r
-    dlog_cmd = DLOG_UTIL % DEVID\r
-    dlog_thread = threading.Thread(target=debug_trace, args=(dlog_cmd, dlog_file))\r
-    dlog_thread.setDaemon(True)\r
-    dlog_thread.start()\r
-\r
-\r
-def stop_debug():\r
-    global debug_flag, metux\r
-    metux.acquire()\r
-    debug_flag = False\r
-    metux.release()\r
-    dlog_thread.join()\r
-\r
-\r
-def runProcess():\r
-    if options.purge:\r
-        print "[ Uninstall test resource on device. Please wait...]"\r
-        uninstall_testconfig()\r
-        uninstall_behavior()\r
-        remove_tinyweb()\r
-        kill_process("tinyweb")\r
-        kill_process("testkit-stub")\r
-        remove_stub()\r
-        print "Clean the tct packages in device successfully."\r
-\r
-    elif options.check:\r
-        check_resource_dir()\r
-        print "[ Check test resource on device. Please wait...]"\r
-        if options.process == 'tinyweb':\r
-            check_tinyweb()\r
-        elif options.process == 'testkit-stub':\r
-            check_stub()\r
-        elif options.process == 'testconfig':\r
-            check_testconfig()\r
-        else:\r
-            check_tinyweb()\r
-            check_stub()\r
-            check_testconfig()\r
-\r
-        print "Check finished."\r
-\r
-    elif options.bhtest:\r
-        check_resource_dir()\r
-\r
-        uninstall_behavior()\r
-        print "[ Install tct behavior tool on device. Please wait...]"\r
-        install_behavior(options.bhtest)\r
-        print "Installation of tct behavior on device completed."\r
-\r
-    else:\r
-        check_resource_dir()\r
-        print "[ Clean old test resource on device. Please wait...]"\r
-        if options.process == 'tinyweb':\r
-            kill_process("tinyweb")\r
-            remove_tinyweb()\r
-        elif options.process == 'testkit-stub':\r
-            kill_process("testkit-stub")\r
-            remove_stub()\r
-        elif options.process == 'testconfig':\r
-            uninstall_testconfig()\r
-        else:\r
-            remove_tinyweb()\r
-            kill_process("testkit-stub")\r
-            remove_stub()\r
-            uninstall_testconfig()\r
-\r
-        print "Clean the tct packages in device successfully."\r
-        print "[ Install test resource on device. Please wait...]"\r
-        if options.process == 'tinyweb':\r
-            install_tinyweb()\r
-            launch_tinyweb()\r
-        elif options.process == 'testkit-stub':\r
-            install_stub()\r
-        elif options.process == 'testconfig':\r
-            install_testconfig()\r
-        else:\r
-            install_testconfig()\r
-            install_stub()\r
-            install_tinyweb()\r
-            launch_tinyweb()\r
-\r
-\r
-        print "All of installation process on device completed."\r
-\r
-\r
-if __name__ == "__main__":\r
-\r
-    parser = OptionParser()\r
-    parser.add_option(\r
-        "--install", dest="install", action="store_true", default=False,\r
-        help="Install tct resources to TIZEN device,it can be omitted")\r
-    parser.add_option(\r
-        "--purge", dest="purge", action="store_true", default=False,\r
-        help="Clean up tct resources from TIZEN device")\r
-    parser.add_option(\r
-        "--check", dest="check", action="store_true", default=False,\r
-        help="Check test resource on device")\r
-    parser.add_option(\r
-        "--deviceid", dest="deviceid", action="store",\r
-        help="Set the device serial number")\r
-    parser.add_option(\r
-        "--procid", dest="process", action="store",\r
-        help="Set the process id for checking")\r
-    parser.add_option(\r
-        "--bhtest", dest="bhtest", action="store",\r
-        help="Install behavior test tool to device")\r
-\r
-    (options, args) = parser.parse_args()\r
-\r
-    devinst = DeviceManager.getInstance()\r
-    if options.deviceid:\r
-        if devinst.isDeviceAvailable(options.deviceid):\r
-            DEVID = options.deviceid\r
-        else:\r
-            sys.exit("#ERROR#: The '%s' device Id exists error" % options.deviceid)\r
-    else:\r
-        if devinst.getDeviceSize() > 1 or devinst.getDeviceSize() == 0:\r
-            sys.exit("#ERROR#: %s devices connected or device not connected" % str(devinst.getDeviceSize()))\r
-        else:\r
-            DEVID = devinst.getSdbDeviceList()[0].getDeviceId()\r
-\r
-    print "[========== start tct-config-device : %s ==========]" % DEVID\r
-    dev_temp_dir = '/opt/tools/shell/tmp/%s/' % DEVID\r
-    if not os.path.isdir(dev_temp_dir):\r
+def push_tctconf_file():
+    updated_tct_conf_local = "/opt/tools/shell/tmp/%s/TCT_CONFIG"%DEVID
+    remote = DEVICE_SUITE_TARGET_30
+    if not SdbManager.sdbPush(DEVID, updated_tct_conf_local, remote):
+        print("#ERROR#: TCT_CONFIG file push failed")
+        return False
+    return True
+
+
+def debug_trace(cmd, logfile):
+    global debug_flag, metux
+
+    wbuffile = file(logfile, "a+")
+    exit_code = None
+    proc = subprocess.Popen(args=cmd,
+            shell=True,
+            stdout=wbuffile,
+            stderr=None)
+    while True:
+        exit_code = proc.poll()
+        if exit_code is not None:
+            break
+        time.sleep(0.6)
+        metux.acquire()
+        proc_flag = debug_flag
+        metux.release()
+        if not proc_flag:
+            break
+    wbuffile.close()
+    SdbManager.killall(proc.pid)
+
+
+def start_debug(dlog_file):
+    global debug_flag, metux, dlog_thread
+    debug_flag = True
+    metux = threading.Lock()
+    clear_cmd = DLOG_CLEAR
+    SdbManager.sdbShell(DEVID, clear_cmd)
+
+    dlog_cmd = DLOG_UTIL % DEVID
+    dlog_thread = threading.Thread(target=debug_trace, args=(dlog_cmd, dlog_file))
+    dlog_thread.setDaemon(True)
+    dlog_thread.start()
+
+
+def stop_debug():
+    global debug_flag, metux
+    metux.acquire()
+    debug_flag = False
+    metux.release()
+    dlog_thread.join()
+
+
+def runProcess():
+    if options.purge:
+        print("[ Uninstall test resource on device. Please wait...]")
+        uninstall_testconfig()
+        uninstall_behavior()
+        remove_tinyweb()
+        kill_process("tinyweb")
+        kill_process("testkit-stub")
+        remove_stub()
+        print("Clean the tct packages in device successfully.")
+
+    elif options.check:
+        check_resource_dir()
+        print("[ Check test resource on device. Please wait...]")
+        if options.process == 'tinyweb':
+            check_tinyweb()
+        elif options.process == 'testkit-stub':
+            check_stub()
+        elif options.process == 'testconfig':
+            check_testconfig()
+        else:
+            check_tinyweb()
+            check_stub()
+            check_testconfig()
+
+        print("Check finished.")
+
+    elif options.bhtest:
+        check_resource_dir()
+
+        uninstall_behavior()
+        print("[ Install tct behavior tool on device. Please wait...]")
+        install_behavior(options.bhtest)
+        print("Installation of tct behavior on device completed.")
+
+    else:
+        check_resource_dir()
+        print("[ Clean old test resource on device. Please wait...]")
+        if options.process == 'tinyweb':
+            kill_process("tinyweb")
+            remove_tinyweb()
+        elif options.process == 'testkit-stub':
+            kill_process("testkit-stub")
+            remove_stub()
+        elif options.process == 'testconfig':
+            uninstall_testconfig()
+        else:
+            remove_tinyweb()
+            kill_process("testkit-stub")
+            remove_stub()
+            uninstall_testconfig()
+
+        print("Clean the tct packages in device successfully.")
+        print("[ Install test resource on device. Please wait...]")
+        if options.process == 'tinyweb':
+            install_tinyweb()
+            launch_tinyweb()
+        elif options.process == 'testkit-stub':
+            install_stub()
+        elif options.process == 'testconfig':
+            install_testconfig()
+        else:
+            install_testconfig()
+            install_stub()
+            install_tinyweb()
+            launch_tinyweb()
+
+
+        print("All of installation process on device completed.")
+
+
+if __name__ == "__main__":
+
+    parser = OptionParser()
+    parser.add_option(
+        "--install", dest="install", action="store_true", default=False,
+        help="Install tct resources to TIZEN device,it can be omitted")
+    parser.add_option(
+        "--purge", dest="purge", action="store_true", default=False,
+        help="Clean up tct resources from TIZEN device")
+    parser.add_option(
+        "--check", dest="check", action="store_true", default=False,
+        help="Check test resource on device")
+    parser.add_option(
+        "--deviceid", dest="deviceid", action="store",
+        help="Set the device serial number")
+    parser.add_option(
+        "--procid", dest="process", action="store",
+        help="Set the process id for checking")
+    parser.add_option(
+        "--bhtest", dest="bhtest", action="store",
+        help="Install behavior test tool to device")
+
+    (options, args) = parser.parse_args()
+
+    devinst = DeviceManager.getInstance()
+    if options.deviceid:
+        if devinst.isDeviceAvailable(options.deviceid):
+            DEVID = options.deviceid
+        else:
+            sys.exit("#ERROR#: The '%s' device Id exists error" % options.deviceid)
+    else:
+        if devinst.getDeviceSize() > 1 or devinst.getDeviceSize() == 0:
+            sys.exit("#ERROR#: %s devices connected or device not connected" % str(devinst.getDeviceSize()))
+        else:
+            DEVID = devinst.getSdbDeviceList()[0].getDeviceId()
+
+    print("[========== start tct-config-device : %s ==========]" % DEVID)
+    dev_temp_dir = '/opt/tools/shell/tmp/%s/' % DEVID
+    if not os.path.isdir(dev_temp_dir):
         os.makedirs(dev_temp_dir)
-    DLOG_SAVE_PATH = '/opt/tools/shell/tmp/%s/conf_dev_%s.dlog'\r
-    if options.process is None:\r
-        DLOG_SAVE_PATH = DLOG_SAVE_PATH % (DEVID, 'all')\r
-    else:\r
-        DLOG_SAVE_PATH = DLOG_SAVE_PATH % (DEVID, options.process)\r
-\r
-    #start_debug(DLOG_SAVE_PATH)\r
-\r
-    if not SdbManager.sdbRootOn(DEVID):\r
-        sys.exit(-1)\r
-\r
-    SdbManager.sdbSetDate(DEVID)\r
-\r
-    update_tctconf_file()\r
-    if not get_device_arch() or not push_tctconf_file():\r
-        sys.exit(0)\r
-\r
-    runProcess()\r
-    #stop_debug()\r
-    print "[========== end tct-config-device : %s ==========]" % DEVID\r
-\r
+    DLOG_SAVE_PATH = '/opt/tools/shell/tmp/%s/conf_dev_%s.dlog'
+    if options.process is None:
+        DLOG_SAVE_PATH = DLOG_SAVE_PATH % (DEVID, 'all')
+    else:
+        DLOG_SAVE_PATH = DLOG_SAVE_PATH % (DEVID, options.process)
+
+    #start_debug(DLOG_SAVE_PATH)
+
+    if not SdbManager.sdbRootOn(DEVID):
+        sys.exit(-1)
+
+    SdbManager.sdbSetDate(DEVID)
+
+    update_tctconf_file()
+    if not get_device_arch() or not push_tctconf_file():
+        sys.exit(0)
+
+    runProcess()
+    #stop_debug()
+    print("[========== end tct-config-device : %s ==========]" % DEVID)
+
index bfa213c..553e83d 100644 (file)
@@ -1,4 +1,4 @@
-# -*- coding:utf-8 -*-
+#!/usr/bin/env python3
 import os
 import sys
 import platform
@@ -45,8 +45,8 @@ class CpFile:
     def setCurrentPath(self):
         self.CURRENT_SOURCE_BASE_PATH = os.getcwd() + self.sep
         self.CURRENT_TARGET_BASE_PATH = self.TARGET_BASE_PATH
-        print("current source base path =" + self.CURRENT_SOURCE_BASE_PATH)
-        print("current target base path =" + self.CURRENT_TARGET_BASE_PATH)
+        print(("current source base path =" + self.CURRENT_SOURCE_BASE_PATH))
+        print(("current target base path =" + self.CURRENT_TARGET_BASE_PATH))
 
     def cpDoc(self):
         self.cpDir(self.CURRENT_SOURCE_BASE_PATH + self.SOURCE_DOC_PATH,
@@ -100,7 +100,7 @@ class CpFile:
 
     def cpFile(self, src, target):
         if (not os.path.isfile(src)):
-            print(src + " is not a file")
+            print((src + " is not a file"))
             return
         path = os.path.dirname(target)
         if (not os.path.isdir(path)):
@@ -114,39 +114,46 @@ class CpFile:
 
     def cpDir(self, src, target, name):
         if (os.path.isdir(src) and not os.path.exists(target)):
-            print("copy " + name + "  dir start")
+            print(("copy " + name + "  dir start"))
             shutil.copytree(src, target)
-            print("copy " + name + "  dir finish")
+            print(("copy " + name + "  dir finish"))
         else:
             if (not os.path.isdir(src)):
-                print("source " + name + " path is not a dir")
+                print(("source " + name + " path is not a dir"))
             if (os.path.exists(target)):
-                print ("target " + name + " path is exists")
+                print(("target " + name + " path is exists"))
                 try:
                     shutil.rmtree(target, onerror=self.del_rw)
-                except Exception, data:
-                    print Exception, ":", data
+                except Exception as data:
+                    print(Exception, ":", data)
 
-                print ("target " + name + " dir destroyed")
+                print(("target " + name + " dir destroyed"))
                 try:
                     shutil.copytree(src, target)
-                except Exception, data:
-                    print Exception, ":", data
-                print("copy " + name + "  dir finish")
+                except Exception as data:
+                    print(Exception, ":", data)
+                print(("copy " + name + "  dir finish"))
 
     def clear(self):
         self.setCurrentPath()
         try:
             shutil.rmtree(self.CURRENT_TARGET_BASE_PATH, onerror=self.del_rw)
-        except Exception, data:
-            print Exception, ":", data
+        except Exception as data:
+            print(Exception, ":", data)
 
     def makeResult(self):
+        mgr_folder = os.path.join(self.CURRENT_TARGET_BASE_PATH, \
+                self.tizenV + "/manager")
         mgr_result_folder = os.path.join(self.CURRENT_TARGET_BASE_PATH, \
                 self.tizenV + "/manager/result")
         shell_result_folder = os.path.join(self.CURRENT_TARGET_BASE_PATH, \
                 self.tizenV + "/shell/result")
 
+        if not os.path.isdir(mgr_folder):
+            os.makedirs(mgr_folder)
+            if (platform.system() != "Windows"):
+                os.chmod(mgr_folder, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
+
         if not os.path.isdir(mgr_result_folder):
             os.makedirs(mgr_result_folder)
         else:
@@ -186,7 +193,7 @@ parser.add_option("-u", "--upgrade", dest="upgrade", action="store_true", \
 (options, args) = parser.parse_args()
 
 if options.tizenV is None:
-    print "[ Error : input your tizen version ]"
+    print("[ Error : input your tizen version ]")
     sys.exit(1)
 
 if (options.install):
index f526c87..7223127 100644 (file)
@@ -1,4 +1,4 @@
-# -*- coding:utf-8 -*-
+#!/usr/bin/env python3
 import os
 import sys
 import shutil
@@ -88,7 +88,7 @@ def unpack_release_file(afile):
                 msg += "a directory."
             else:
                 msg += "something else."
-            print msg
+            print (msg)
         tar.extractall()
         tar.close()
 
index 74f77b0..8a49674 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 import os
 import re
 from .constants import Constants
@@ -109,12 +109,12 @@ def _read_xml_suiteInfo(test_file, tc_name):
         autocnt = manualcnt = 0
         test_xml_temp = etree.parse(test_file)
         tc_exist = False
-        for test_xml_temp_suite in test_xml_temp.getiterator('suite'):
+        for test_xml_temp_suite in test_xml_temp.iter('suite'):
             suite_name = test_xml_temp_suite.get('name')
             suite_launcher = test_xml_temp_suite.get('launcher')
             suite_category = test_xml_temp_suite.get('category')
             autocnt = manualcnt = 0
-            for tset in test_xml_temp_suite.getiterator('set'):
+            for tset in test_xml_temp_suite.iter('set'):
                 set_autocnt, set_manualcnt, tcCheck = \
                         _read_xml_tcInfo(tset, tc_name)
                 autocnt += set_autocnt
@@ -134,7 +134,7 @@ def _read_xml_suiteInfo(test_file, tc_name):
 def _read_xml_tcInfo(tset, tc_name):
     set_autocnt = set_manualcnt = 0
     tcCheck = False
-    for tcase in tset.getiterator('testcase'):
+    for tcase in tset.iter('testcase'):
         tcId = tcase.get('id')
         exetype = tcase.get('execution_type')
         if exetype == "auto":
index 399a67b..88969f1 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright (C) 2012 Intel Corporation
 # 
@@ -31,10 +31,10 @@ from logmanager import LOGGER
 
 #show all available suites
 def _show_available_suites(option, opt_str, value, parser):
-    print "Test Suites:...\n"
+    print("Test Suites:...\n")
     os.chdir("/opt/tct/")
     for t_version in glob.glob("tizen*"):
-        print "Tizen Version : %s" % t_version
+        print("Tizen Version : %s" % t_version)
         package_dir = os.path.join(os.path.abspath(t_version), 'packages')
         if not os.path.isdir(package_dir):
             continue
@@ -42,17 +42,17 @@ def _show_available_suites(option, opt_str, value, parser):
         for profile in glob.glob("*"):
             if profile == 'pkg_infos':
                 continue
-            print "      profile : %s" % profile
+            print("      profile : %s" % profile)
             os.chdir(os.path.abspath(profile))
             for files in glob.glob("*.zip"):
-                print "                " + files[:-4]
+                print("                " + files[:-4])
             os.chdir('../')
         os.chdir('../../')
     sys.exit(1)
 
 
 def _print_planfolder(option, opt_str, value, parser):
-    print "Plan folder: %s" % Constants.TCT_PLAN_FOLDER
+    print("Plan folder: %s" % Constants.TCT_PLAN_FOLDER)
     os.system("tree %s" % Constants.TCT_PLAN_FOLDER)
     sys.exit(1)
 
@@ -107,7 +107,7 @@ Note: \n\
           1) run command 'tct-plan-generator', it might not be able to locate related module, run command 'export PYTHONPATH=/usr/lib/python2.7/site-packages' to resolve this issue"
 
     def print_usage(self):
-        print self.USAGE
+        print(self.USAGE)
 
     def parse_options(self, argv):
         option_list = [
@@ -208,7 +208,7 @@ Note: \n\
                 (self.options.tizenversion[0] is not None):
             return self.options.tizenversion[0]
         else:
-            print "Error: Please specify Tizen version with [--tizen-version] option"
+            print("Error: Please specify Tizen version with [--tizen-version] option")
             sys.exit(1)
 
     def get_output(self):
index 28553c1..f7f048e 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright (C) 2012 Intel Corporation
 # This program is free software; you can redistribute it and/or
@@ -92,11 +92,11 @@ class PlanRunner:
 
                 os.chdir(repo)
                 for files in glob.glob("*" + match + "*"):
-                    print "Matched File name: %s" % str(os.path.abspath(files))
+                    print("Matched File name: %s" % str(os.path.abspath(files)))
                     if (unmatch is not None) and (re.search(unmatch, \
                             str(files))):
-                        print "File %s is skipped with unmatch regex %s" \
-                                % (str(files), unmatch)
+                        print("File %s is skipped with unmatch regex %s" \
+                                % (str(files), unmatch))
                     else:
                         raw_paths.append(os.path.join(repo, str(files)))
 
@@ -114,9 +114,9 @@ class PlanRunner:
                         launcher, category, auto, manual)
                 self.suites[suite.name] = suite
                 Constants.clean_unzip_file()
-        except Exception, e:
-            print "[ Error happen when reading the local repository," + \
-                    " error: %s ]\n" % e
+        except Exception as e:
+            print("[ Error happen when reading the local repository," + \
+                    " error: %s ]\n" % e)
 
     def _chooseProfile(self, path_suites):
         suite_profiles = {}
@@ -136,12 +136,12 @@ class PlanRunner:
                 suite_profiles[suiteName] = suiteProfile[0]
                 continue
 
-            print "\nMultiple profiles for [%s] \
+            print("\nMultiple profiles for [%s] \
                     :\n----------------------------------------------" \
-                    % suite_name
+                    % suite_name)
 
             for profile_i in suiteProfile:
-                print " - %s" % profile_i
+                print(" - %s" % profile_i)
 
             suite_profile = None
             while not suite_profile in suiteProfile:
@@ -184,11 +184,11 @@ class PlanRunner:
         autocnt = manualcnt = 0
         test_xml_temp = etree.parse(test_file)
 
-        for test_xml_temp_suite in test_xml_temp.getiterator('suite'):
+        for test_xml_temp_suite in test_xml_temp.iter('suite'):
             suite_launcher = test_xml_temp_suite.get('launcher')
             suite_category = test_xml_temp_suite.get('category')
             autocnt = manualcnt = 0
-            for tset in test_xml_temp_suite.getiterator('set'):
+            for tset in test_xml_temp_suite.iter('set'):
                 set_autocnt, set_manualcnt = self.__get_set_casecnt(tset)
                 autocnt += set_autocnt
                 manualcnt += set_manualcnt
@@ -197,7 +197,7 @@ class PlanRunner:
 
     def __get_set_casecnt(self, tset):
         set_autocnt = set_manualcnt = 0
-        for tcase in tset.getiterator('testcase'):
+        for tcase in tset.iter('testcase'):
             exetype = tcase.get('execution_type')
             if exetype == "auto":
                 set_autocnt += 1
index 0a10c1f..2044795 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 import subprocess
 import time
@@ -290,9 +290,9 @@ class SdbManager:
     @staticmethod
     def recoveryDevice(_tizenV, _deviceid):
         if _tizenV:
-            tinycmd = "python " + Constants.DEVICE_HEALTH_CMD % _tizenV + \
+            tinycmd = "python3 " + Constants.DEVICE_HEALTH_CMD % _tizenV + \
                     " --check --proc=tinyweb --deviceid=" + _deviceid
-            stubcmd = "python " + Constants.DEVICE_HEALTH_CMD % _tizenV + \
+            stubcmd = "python3 " + Constants.DEVICE_HEALTH_CMD % _tizenV + \
                     " --check --proc=testkit-stub --deviceid=" + _deviceid
             outLog, errLog = SdbManager.sdbCommand(tinycmd)
             if errLog: LOGGER.error(str(errLog))
index 6a05f3c..dcd4bc7 100644 (file)
@@ -1,4 +1,4 @@
-# -*- coding:utf-8 -*-
+#!/usr/bin/env python3
 import os
 import platform
 import shutil
@@ -288,25 +288,25 @@ class CpFile:
             if (not os.path.isdir(src)):
                 print("source " + name + " path is not a dir")
             if (os.path.exists(target)):
-                print ("target " + name + " path is exists")
+                print("target " + name + " path is exists")
                 try:
                     shutil.rmtree(target, onerror=self.del_rw)
-                except Exception, data:
-                    print Exception, ":", data
+                except Exception as data:
+                    print(Exception, ":", data)
 
-                print ("target " + name + " dir destroyed")
+                print("target " + name + " dir destroyed")
                 try:
                     shutil.copytree(src, target)
-                except Exception, data:
-                    print Exception, ":", data
+                except Exception as data:
+                    print(Exception, ":", data)
                 print("copy " + name + "  dir finish")
 
     def clear(self):
         self.setCurrentPath()
         try:
             shutil.rmtree(self.CURRENT_TARGET_BASE_PATH, onerror=self.del_rw)
-        except Exception, data:
-            print Exception, ":", data
+        except Exception as data:
+            print(Exception, ":", data)
 
     def cp(self):
         self.setCurrentPath()
index 040f490..fefcb86 100755 (executable)
@@ -1,5 +1,6 @@
 LOCATION='/home/owner/share'
 # Change the destination of the resource folder(absolute path).
+# Update for syntax issue(2022.06.02).
 DESTINATION_MOBILE='/home/owner/media'
 DESTINATION_TV='/home/owner/content'
 
@@ -23,15 +24,15 @@ DIR_LIST=(
 
 if [ "$1" == "-i" ]
 then
-    for value in "${FILE_LIST[@]}";do    
+    for value in "${FILE_LIST[@]}";do
         cp $LOCATION/$value $DESTINATION
     done
-    for value in "${DIR_LIST[@]}";do    
+    for value in "${DIR_LIST[@]}";do
         cp -R $LOCATION/$value $DESTINATION
     done
 elif [ "$1" == "-u" ]
 then
-    for value in "${FILE_LIST[@]}";do    
+    for value in "${FILE_LIST[@]}";do
         rm $DESTINATION/$value
     done
     for value in "${DIR_LIST[@]}";do
index 79f4cbd..43f0385 100755 (executable)
@@ -1,5 +1,6 @@
 LOCATION='/home/owner/share'
 # Change the destination of the resource folder(absolute path).
+# Update for syntax issue(2022.06.02).
 DESTINATION_MOBILE='/home/owner/media'
 DESTINATION_TV='/home/owner/content'
 
@@ -21,15 +22,15 @@ DIR_LIST=(
 
 if [ "$1" == "-i" ]
 then
-    for value in "${FILE_LIST[@]}";do    
+    for value in "${FILE_LIST[@]}";do
         cp $LOCATION/$value $DESTINATION
     done
-    for value in "${DIR_LIST[@]}";do    
+    for value in "${DIR_LIST[@]}";do
         cp -R $LOCATION/$value $DESTINATION
     done
 elif [ "$1" == "-u" ]
 then
-    for value in "${FILE_LIST[@]}";do    
+    for value in "${FILE_LIST[@]}";do
         rm $DESTINATION/$value
     done
     for value in "${DIR_LIST[@]}";do
index ad6202d..d6bc952 100755 (executable)
@@ -7,11 +7,11 @@ import time
 import sys
 import subprocess
 import string
-import ConfigParser
+import configparser
 from optparse import OptionParser, make_option
 
 TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
+tct_parser = configparser.ConfigParser()
 tct_parser.read(TCT_CONFIG_FILE)
 
 DEVICE_SUITE_TARGET_30 = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
@@ -32,14 +32,14 @@ RES_SRC_DIR = SRC_DIR + "/Documents/tct/"
 
 def doCMD(cmd):
     # Do not need handle timeout in this short script, let tool do it
-    print "-->> \"%s\"" % cmd
+    print ("-->> \"%s\"" % cmd)
     output = []
     cmd_return_code = 1
     cmd_proc = subprocess.Popen(
         cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
 
     while True:
-        output_line = cmd_proc.stdout.readline().strip("\r\n")
+        output_line = cmd_proc.stdout.readline().decode('utf-8').strip("\r\n")
         cmd_return_code = cmd_proc.poll()
         if output_line == '' and cmd_return_code != None:
             break
@@ -134,7 +134,7 @@ def instPKGs():
     for file in ['preconfigure.json', 'tests.xml', 'tct-testconfig.ini', 'portconfigure.json', 'TC_Config.txt']:
         if not doRemoteCopy(SCRIPT_DIR + '/' + file, "%s/%s" % (PKG_SRC_DIR, file)):
             action_status = False
-    print "#############################################################################################################################################"
+    print ("#############################################################################################################################################")
     doRemoteCopy(RES_DIR_PATH + '/' + 'capability.xml', "%s/%s" % (RES_SRC_DIR, 'capability.xml'))
     doRemoteCopy(RES_DIR_PATH + '/' + 'buildinfo.xml', "%s/%s" % (RES_SRC_DIR, 'buildinfo.xml'))
     #(return_code, output) = doRemoteCMD("touch %s/%s" % (RES_SRC_DIR, 'buildinfo.xml'))
@@ -158,8 +158,8 @@ def main():
             "-a", dest="user", action="store", help="User name")
         global PARAMETERS
         (PARAMETERS, args) = opts_parser.parse_args()
-    except Exception, e:
-        print "Got wrong option: %s, exit ..." % e
+    except Exception as e:
+        print ("Got wrong option: %s, exit ...") % e
         sys.exit(1)
 
     if not PARAMETERS.user:
@@ -178,7 +178,7 @@ def main():
         PARAMETERS.mode = "SSH"
 
     if not PARAMETERS.device:
-        print "No device provided"
+        print ("No device provided")
         sys.exit(1)
 
     user_info = getUSERID()
@@ -188,10 +188,10 @@ def main():
         userid = user_info[1][0]
         XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
     else:
-        print "[Error] cmd commands error : %s"%str(user_info[1])
+        print ("[Error] cmd commands error : %s"%str(user_info[1]))
         sys.exit(1)
     if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
-        print "-i and -u are conflict"
+        print ("-i and -u are conflict")
         sys.exit(1)
 
     if PARAMETERS.buninstpkg:
index 74aebe2..0fdfbc6 100755 (executable)
@@ -11,7 +11,7 @@ from sys import platform
 def is_binary(filename):
     with open(filename, 'rb') as f:
         for block in f:
-            if '\0' in block:
+            if b'\0' in block:
                 return True
     return False
 
@@ -35,8 +35,8 @@ if __name__ == "__main__":
 
 
     # pack tv package
-    os.system(LINUX_PERMISSION+' python pack.py '+'all')
-    os.system(LINUX_PERMISSION+' python pack.py '+'manual NUI')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'all')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'manual NUI')
 
     # Copy mobile package folder to tv package.
     # set tv_pkg_info.xml
@@ -48,12 +48,12 @@ if __name__ == "__main__":
 
 
     # pack wearable package
-    os.system(LINUX_PERMISSION+' python pack.py '+'all')
-    os.system(LINUX_PERMISSION+' python pack.py '+'auto ElmSharpWearable')
-    os.system(LINUX_PERMISSION+' python pack.py '+'manual ElmSharpWearable')
-    os.system(LINUX_PERMISSION+' python pack.py '+'auto NUI.Wearable')
-    os.system(LINUX_PERMISSION+' python pack.py '+'manual NUI.Wearable')
-    os.system(LINUX_PERMISSION+' python pack.py '+'auto WatchfaceComplication')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'all')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'auto ElmSharpWearable')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'manual ElmSharpWearable')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'auto NUI.Wearable')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'manual NUI.Wearable')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'auto WatchfaceComplication')
 
     # Copy mobile package folder to wearable package.
     # set wearable_pkg_info.xml
@@ -64,8 +64,8 @@ if __name__ == "__main__":
     os.rename('../../release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/package/mobile','../../release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/package/wearable')
 
     # pack tizeniot package
-    os.system(LINUX_PERMISSION + ' python pack.py ' + 'all')
-    os.system(LINUX_PERMISSION+' python pack.py '+'manual NUI')
+    os.system(LINUX_PERMISSION + ' python3 pack.py ' + 'all')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'manual NUI')
 
     # Copy mobile package folder to tizeniot package.
     # set tizeniot_pkg_info.xml
@@ -81,8 +81,8 @@ if __name__ == "__main__":
 
     # pack mobile package
     create_folder('../../release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/package/mobile')
-    os.system(LINUX_PERMISSION+' python pack.py '+'all')
-    os.system(LINUX_PERMISSION+' python pack.py '+'manual NUI')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'all')
+    os.system(LINUX_PERMISSION+' python3 pack.py '+'manual NUI')
 
 
 
@@ -115,7 +115,10 @@ if __name__ == "__main__":
         s = os.path.join(src, item)
         d = os.path.join(dst, item)
         if os.path.isdir(s):
-            shutil.copytree(s, d, symlinks=False, ignore=None)
+            try:
+                shutil.copytree(s, d, symlinks=False, ignore=None)
+            except OSError as e:
+                print("Error: %s - %s." % (e.filename, e.strerror))
         else:
             shutil.copy2(s, d)
 
@@ -135,12 +138,12 @@ if __name__ == "__main__":
         os.system('sudo chmod -R 777 '+ '../../release/csharp-tct_7.0_' + date_time)
 
     #changing file format
-    for root, dirs, files in os.walk(dst):
-        for file in files:
-            p=os.path.join(root,file)
-            if not(is_binary(os.path.abspath(p))):
-                text = open(os.path.abspath(p), 'rb').read().replace('\r\n','\n')
-                open(os.path.abspath(p), 'wb').write(text)
+    #for root, dirs, files in os.walk(dst):
+    #    for file in files:
+    #        p=os.path.join(root,file)
+    #        if not(is_binary(os.path.abspath(p))):
+    #           text = open(os.path.abspath(p), 'rb').read().replace('\r\n','\n')
+    #           open(os.path.abspath(p), 'wb').write(text)
 
     with tarfile.open('../../release/csharp-tct_7.0_'+date_time+'.tar.gz', "w:gz") as tar:
         tar.add(dst, arcname=os.path.basename(dst))
index 0435d33..a5f44ea 100755 (executable)
@@ -98,7 +98,8 @@ def folder_list(path):
 
 def create_folder(path):
     if not os.path.isdir(path):
-        os.mkdir(path,0777)
+        #os.mkdir(path,0777)
+        os.makedirs(path, exist_ok = True)
 
 def remove_folder(path):
     if os.path.isdir(path):
@@ -180,8 +181,10 @@ def pack(module , cnt):
 
 
     # Create bin/opt and package folder.
-    os.mkdir('bin/opt',0777)
-    os.mkdir('bin/opt/'+PACKAGE_NAME,0777)
+    #os.mkdir('bin/opt',0777)
+    #os.mkdir('bin/opt/'+PACKAGE_NAME,0777)
+    os.makedirs('bin/opt', exist_ok = True)
+    os.makedirs('bin/opt/'+PACKAGE_NAME, exist_ok = True)
 
     # create new test.xml file
     file_list = read_all_testfiles(PROJECT_PATH+PACKAGE_NAME+'/testcase/')
index 0282da3..4065194 100755 (executable)
@@ -4,19 +4,19 @@ TCT_VERSION='7.0'
 
 # tct-common path
 # {repository_path}/tct-common
-TCT_COMMON='/home/tizen/ReleaseIOT/TCT/tct-common'
+TCT_COMMON='/home/tizen/ShareFolder/tct-tool/tct-common/tct-common'
 
 # tct-mgr path
 # {repository_path}/tct-mgr
-TCT_MGR='/home/tizen/ReleaseIOT/TCT/tct-mgr'
+TCT_MGR='/home/tizen/ShareFolder/tct-tool/tct-mgr/tct-mgr'
 
 # tct-shell path
 # {repository_path}/tct-shell
-TCT_SHELL='/home/tizen/ReleaseIOT/TCT/tct-shell'
+TCT_SHELL='/home/tizen/ShareFolder/tct-tool/tct-shell/tct-shell'
 
 # tct path
 # {repository_path}/api/release/chsarp-tct_7.0_dotnet
-TCT_PATH='/home/tizen/ReleaseIOT/TCT/TCT_7.0/api/release/csharp-tct_7.0_dotnet'
+TCT_PATH='/home/tizen/ShareFolder/4.Fx_Win/TCT_7.0/api/release/csharp-tct_7.0_dotnet'
 
 echo "Getting latest tct-common, tct-mgr & tct-shell in spin repository."
 cd $TCT_COMMON
@@ -32,7 +32,7 @@ git reset --hard
 git pull
 
 echo "Updating resource folder"
-rsync -avz --exclude=tct-testconfig --exclude=tct-testconfig-3.0.zip $TCT_COMMON/tools/tct_"$TCT_VERSION"/resource/ $TCT_PATH/csharp-tct_"$TCT_VERSION"_dotnet/resource/
+rsync -avz --exclude=tct-testconfig-3.0.zip $TCT_COMMON/tools/tct_"$TCT_VERSION"/resource/ $TCT_PATH/csharp-tct_"$TCT_VERSION"_dotnet/resource/
 
 # remove tizen-web-ui-fw and tinyweb folder
 rm -rf $TCT_PATH/csharp-tct_"$TCT_VERSION"_dotnet/resource/tizen-web-ui-fw/
@@ -61,4 +61,4 @@ sudo chmod -R 777 $TCT_PATH/tct-tools_r4_rc1/
 cd $TCT_PATH
 cd ../../tool/script
 
-sudo python auto_binary.py
+sudo python3 auto_binary.py
\ No newline at end of file
index d96fd5f..744abf4 100755 (executable)
@@ -9,6 +9,7 @@ import zipfile
 from xml.etree.ElementTree import Element, SubElement, dump, parse, ElementTree
 from pkginfo_gen import PKGInfoGenerator
 from tcxml import read_tc_list, read_all_testfiles, indent, write_xml
+from pathlib import Path
 
 PREFIX = 'Tizen.'
 SUFFIX = '.Tests'
@@ -110,11 +111,22 @@ def folder_list(path):
 
 def create_folder(path):
     if not os.path.isdir(path):
-        os.mkdir(path,0777)
+        os.makedirs(path, exist_ok = True)
+               #os.mkdir(path,0o777)
 
 def remove_folder(path):
+    #print("Path:"+path)
     if os.path.isdir(path):
-        shutil.rmtree(path)
+        #print("Vao day khong 1")
+        for sub in Path(path).iterdir():
+            #print("Vao day khong 2")
+            if not sub.is_dir():
+                #print("AAAAAAAAAAAAAAAAAA:"+str(sub))
+                sub.unlink()
+            else:
+                #print("Vao day khong 3")
+                remove_folder(str(sub))
+        Path(path).rmdir()
 
 def copy_helper_application(folder_path , dest):
     create_folder(dest)
@@ -195,8 +207,10 @@ def pack(module , cnt):
 
 
     # Create bin/opt and package folder.
-    os.mkdir('bin/opt',0777)
-    os.mkdir('bin/opt/'+PACKAGE_NAME,0777)
+    os.makedirs('bin/opt', exist_ok = True)
+    os.makedirs('bin/opt/'+PACKAGE_NAME, exist_ok = True)
+    #Path("bin/opt").mkdir(parents=True, exist_ok=True)
+    #Path('bin/opt/'+PACKAGE_NAME).mkdir(parents=True, exist_ok=True)
 
     # create new test.xml file
     file_list = read_all_testfiles(PROJECT_PATH+PACKAGE_NAME+'/testcase/')
index c67e90d..e7d9ce7 100755 (executable)
@@ -4,12 +4,28 @@ import sys
 import zipfile
 import shutil
 import platform
+import pathlib
+import shutil
+from pathlib import Path
 
 FILE_PATH = '../../release/csharp-tct_7.0_dotnet/csharp-tct_7.0_dotnet/package/pkg_infos/mobile_pkg_info.xml'
 
 OKGREEN = '\033[92m'
 ENDC = '\033[0m'
 
+
+def del_folder(path):
+    for sub in Path(path).iterdir():
+        if sub.is_dir():
+            # Delete folder if it is a folder
+            del_folder(sub)
+        else:
+            # Delete file if it is a file:
+            sub.unlink()
+
+    # This removes the top-level folder:
+    Path(path).rmdir()
+
 class PKGInfoGenerator:
     # If option is 'all', all package generate.
     module = ''
@@ -17,7 +33,7 @@ class PKGInfoGenerator:
         self.module = module
 
     def print_log(self, string):
-        print OKGREEN + string + ENDC
+        print (OKGREEN + string + ENDC)
 
     def generate_pkg_info(self):
         self.init_file()
@@ -90,7 +106,8 @@ class PKGInfoGenerator:
 
                 self.set_testsuite_tag(project_name, tc_number, auto_manual)
                 # Remove Unzip folder
-                shutil.rmtree(dest)
+                #shutil.rmtree(dest)
+                del_folder(dest)
 
     def set_testsuite_tag(self, project_name, tc_number, auto_manual):
         if self.module == 'all' :
index 31210db..36bc382 100755 (executable)
@@ -7,7 +7,7 @@ import time
 import sys
 import subprocess
 from optparse import OptionParser, make_option\r
-import ConfigParser
+import configparser
 
 
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -17,14 +17,14 @@ ADB_CMD = "adb"
 
 def doCMD(cmd):
     # Do not need handle timeout in this short script, let tool do it
-    print "-->> \"%s\"" % cmd
+    print ("-->> \"%s\"" % cmd)
     output = []
     cmd_return_code = 1
     cmd_proc = subprocess.Popen(
         cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
 
     while True:
-        output_line = cmd_proc.stdout.readline().strip("\r\n")
+        output_line = cmd_proc.stdout.readline().decode('utf-8').strip("\r\n")
         cmd_return_code = cmd_proc.poll()
         if output_line == '' and cmd_return_code != None:
             break
@@ -77,8 +77,8 @@ def main():
             "-u", dest="buninstpkg", action="store_true", help="Uninstall package")
         global PARAMETERS
         (PARAMETERS, args) = opts_parser.parse_args()
-    except Exception, e:
-        print "Got wrong option: %s, exit ..." % e
+    except Exception as e:
+        print ("Got wrong option: %s, exit ..." % e)
         sys.exit(1)
 
     if not PARAMETERS.device:
@@ -89,11 +89,11 @@ def main():
                 break
 
     if not PARAMETERS.device:
-        print "No device found"
+        print ("No device found")
         sys.exit(1)
 
     if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
-        print "-i and -u are conflict"
+        print ("-i and -u are conflict")
         sys.exit(1)
 
     if PARAMETERS.buninstpkg:
index fc1b497..4c0388a 100755 (executable)
@@ -8,7 +8,7 @@ import sys
 import subprocess
 import string
 from optparse import OptionParser, make_option\r
-import ConfigParser
+import configparser
 
 
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -16,7 +16,7 @@ PKG_NAME = os.path.basename(SCRIPT_DIR)
 PARAMETERS = None
 #XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
 TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
+tct_parser = configparser.ConfigParser()
 tct_parser.read(TCT_CONFIG_FILE)
 SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
 PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
@@ -24,14 +24,14 @@ PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
 
 def doCMD(cmd):
     # Do not need handle timeout in this short script, let tool do it
-    print "-->> \"%s\"" % cmd
+    print ("-->> \"%s\"" % cmd)
     output = []
     cmd_return_code = 1
     cmd_proc = subprocess.Popen(
         cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
 
     while True:
-        output_line = cmd_proc.stdout.readline().strip("\r\n")
+        output_line = cmd_proc.stdout.readline().decode('utf-8').strip("\r\n")
         cmd_return_code = cmd_proc.poll()
         if output_line == '' and cmd_return_code != None:
             break
@@ -145,8 +145,8 @@ def main():
             "-a", dest="user", action="store", help="User name")
         global PARAMETERS
         (PARAMETERS, args) = opts_parser.parse_args()
-    except Exception, e:
-        print "Got wrong option: %s, exit ..." % e
+    except Exception as e:
+        print ("Got wrong option: %s, exit ..." % e)
         sys.exit(1)
 
     if not PARAMETERS.user:
@@ -165,7 +165,7 @@ def main():
         PARAMETERS.mode = "SSH"
 
     if not PARAMETERS.device:
-        print "No device provided"
+        print ("No device provided")
         sys.exit(1)
 
     user_info = getUSERID()
@@ -175,10 +175,10 @@ def main():
         userid = user_info[1][0]
         XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
     else:
-        print "[Error] cmd commands error : %s"%str(user_info[1])
+        print ("[Error] cmd commands error : %s"%str(user_info[1]))
         sys.exit(1)
     if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
-        print "-i and -u are conflict"
+        print ("-i and -u are conflict")
         sys.exit(1)
 
     if PARAMETERS.buninstpkg:
index 211d24c..c3cb4b5 100755 (executable)
@@ -8,7 +8,7 @@ import sys
 import subprocess
 import string
 from optparse import OptionParser, make_option\r
-import ConfigParser
+import configparser
 
 
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -16,7 +16,7 @@ PKG_NAME = os.path.basename(SCRIPT_DIR)
 PARAMETERS = None
 #XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
 TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
+tct_parser = configparser.ConfigParser()
 tct_parser.read(TCT_CONFIG_FILE)
 SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
 PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
@@ -24,14 +24,14 @@ PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
 
 def doCMD(cmd):
     # Do not need handle timeout in this short script, let tool do it
-    print "-->> \"%s\"" % cmd
+    print ("-->> \"%s\"" % cmd)
     output = []
     cmd_return_code = 1
     cmd_proc = subprocess.Popen(
         cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
 
     while True:
-        output_line = cmd_proc.stdout.readline().strip("\r\n")
+        output_line = cmd_proc.stdout.readline().decode('utf-8').strip("\r\n")
         cmd_return_code = cmd_proc.poll()
         if output_line == '' and cmd_return_code != None:
             break
@@ -183,8 +183,8 @@ def main():
             "-a", dest="user", action="store", help="User name")
         global PARAMETERS
         (PARAMETERS, args) = opts_parser.parse_args()
-    except Exception, e:
-        print "Got wrong option: %s, exit ..." % e
+    except Exception as e:
+        print ("Got wrong option: %s, exit ..." % e)
         sys.exit(1)
 
     if not PARAMETERS.user:
@@ -203,7 +203,7 @@ def main():
         PARAMETERS.mode = "SSH"
 
     if not PARAMETERS.device:
-        print "No device provided"
+        print ("No device provided")
         sys.exit(1)
 
     user_info = getUSERID()
@@ -213,10 +213,10 @@ def main():
         userid = user_info[1][0]
         XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
     else:
-        print "[Error] cmd commands error : %s"%str(user_info[1])
+        print ("[Error] cmd commands error : %s"%str(user_info[1]))
         sys.exit(1)
     if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
-        print "-i and -u are conflict"
+        print ("-i and -u are conflict")
         sys.exit(1)
 
     if PARAMETERS.buninstpkg:
index e67cd36..c9e7a20 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2014 Intel Corporation.
 #
@@ -405,10 +405,10 @@ def packXPK(build_json=None, app_src=None, app_dest=None, app_name=None):
         os.chdir(orig_dir)
         return False
     if key_file:
-        pack_cmd = "python make_xpk.py %s %s -o %s" % (
+        pack_cmd = "python3 make_xpk.py %s %s -o %s" % (
             app_src, key_file, os.path.join(app_dest, "%s.xpk" % app_name))
     else:
-        pack_cmd = "python make_xpk.py %s key.file -o %s" % (
+        pack_cmd = "python3 make_xpk.py %s key.file -o %s" % (
             app_src, os.path.join(app_dest, "%s.xpk" % app_name))
     if not doCMD(pack_cmd, DEFAULT_CMD_TIMEOUT):
         os.chdir(orig_dir)
@@ -504,7 +504,7 @@ def packAPK(build_json=None, app_src=None, app_dest=None, app_name=None):
         icon_opt = "--icon=%s/icon.png" % app_src
 
     if safelyGetValue(build_json, "apk-type") == "MANIFEST":
-        pack_cmd = "python make_apk.py --package=org.xwalk.%s " \
+        pack_cmd = "python3 make_apk.py --package=org.xwalk.%s " \
             "--manifest=%s/manifest.json  %s %s %s %s %s" % (
                 app_name, app_src, mode_opt, arch_opt,
                 ext_opt, cmd_opt, common_opts)
@@ -513,12 +513,12 @@ def packAPK(build_json=None, app_src=None, app_dest=None, app_name=None):
             LOG.error(
                 "Fail to find the key \"apk-url-opt\" for hosted APP packing")
             return False
-        pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s %s " \
+        pack_cmd = "python3 make_apk.py --package=org.xwalk.%s --name=%s %s " \
                    "%s %s %s %s %s" % (
                        app_name, app_name, mode_opt, arch_opt, ext_opt,
                        cmd_opt, url_opt, common_opts)
     else:
-        pack_cmd = "python make_apk.py --package=org.xwalk.%s --name=%s " \
+        pack_cmd = "python3 make_apk.py --package=org.xwalk.%s --name=%s " \
                    "--app-root=%s --app-local-path=index.html %s %s " \
                    "%s %s %s %s" % (
                        app_name, app_name, app_src, icon_opt, mode_opt,
@@ -938,7 +938,7 @@ def main():
         sys.exit(1)
 
     if BUILD_PARAMETERS.bversion:
-        print "Version: %s" % TOOL_VERSION
+        print ("Version: %s" % TOOL_VERSION)
         sys.exit(0)
 
     if not BUILD_PARAMETERS.srcdir:
index 593f6d6..c6be0d8 100755 (executable)
@@ -7,7 +7,7 @@ import sys
 import subprocess
 import string
 from optparse import OptionParser, make_option
-import ConfigParser
+import configparser
 
 PKG_NAMES = ["REPLACE"]
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -15,7 +15,7 @@ PKG_NAME = os.path.basename(SCRIPT_DIR)
 PARAMETERS = None
 #XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/5000/dbus/user_bus_socket"
 TCT_CONFIG_FILE = "/opt/tools/TCT_CONFIG"
-tct_parser = ConfigParser.ConfigParser()
+tct_parser = configparser.ConfigParser()
 tct_parser.read(TCT_CONFIG_FILE)
 SRC_DIR = tct_parser.get('DEVICE', 'DEVICE_SUITE_TARGET_30')
 PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
@@ -23,14 +23,14 @@ PKG_SRC_DIR = "%s/tct/opt/%s" % (SRC_DIR, PKG_NAME)
 
 def doCMD(cmd):
     # Do not need handle timeout in this short script, let tool do it
-    print "-->> \"%s\"" % cmd
+    print ("-->> \"%s\"" % cmd)
     output = []
     cmd_return_code = 1
     cmd_proc = subprocess.Popen(
         cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
 
     while True:
-        output_line = cmd_proc.stdout.readline().strip("\r\n")
+        output_line = cmd_proc.stdout.readline().decode('utf-8').strip("\r\n")
         cmd_return_code = cmd_proc.poll()
         if output_line == '' and cmd_return_code != None:
             break
@@ -121,7 +121,7 @@ def uninstPKGs():
     doRemoteCMD("rm -rf /home/owner/share/res")
 
     for root, dirs, files in os.walk(SCRIPT_DIR):
-        print "uninstPKGs ################################"
+        print ("uninstPKGs ################################")
         for file in files:
             print ("file : %s" % (file))
             if file.endswith(".wgt"):
@@ -358,8 +358,8 @@ def main():
             "-a", dest="user", action="store", help="User name")
         global PARAMETERS
         (PARAMETERS, args) = opts_parser.parse_args()
-    except Exception, e:
-        print "Got wrong option: %s, exit ..." % e
+    except Exception as e:
+        print ("Got wrong option: %s, exit ..." % e)
         sys.exit(1)
 
     if not PARAMETERS.user:
@@ -378,7 +378,7 @@ def main():
         PARAMETERS.mode = "SSH"
 
     if not PARAMETERS.device:
-        print "No device provided"
+        print ("No device provided")
         sys.exit(1)
 
     user_info = getUSERID()
@@ -388,10 +388,10 @@ def main():
         userid = user_info[1][0]
         XW_ENV = "export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%s/dbus/user_bus_socket"%str(userid)
     else:
-        print "[Error] cmd commands error : %s"%str(user_info[1])
+        print ("[Error] cmd commands error : %s"%str(user_info[1]))
         sys.exit(1)
     if PARAMETERS.binstpkg and PARAMETERS.buninstpkg:
-        print "-i and -u are conflict"
+        print ("-i and -u are conflict")
         sys.exit(1)
 
     if PARAMETERS.buninstpkg: