1cc290419Sopenharmony_ci#!/usr/bin/env python3 2cc290419Sopenharmony_ci# -*- coding: utf-8 -*- 3cc290419Sopenharmony_ci# Copyright (C) 2024 Huawei Device Co., Ltd. 4cc290419Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 5cc290419Sopenharmony_ci# you may not use this file except in compliance with the License. 6cc290419Sopenharmony_ci# You may obtain a copy of the License at 7cc290419Sopenharmony_ci# 8cc290419Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 9cc290419Sopenharmony_ci# 10cc290419Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 11cc290419Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 12cc290419Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cc290419Sopenharmony_ci# See the License for the specific language governing permissions and 14cc290419Sopenharmony_ci# limitations under the License. 15cc290419Sopenharmony_ci# 运行环境: python 3.10+, pytest, pytest-repeat, pytest-testreport 16cc290419Sopenharmony_ci# 准备文件:package.zip 17cc290419Sopenharmony_ci# pip install pytest pytest-testreport pytest-repeat 18cc290419Sopenharmony_ci# python hdc_normal_test.py 19cc290419Sopenharmony_ci 20cc290419Sopenharmony_ci 21cc290419Sopenharmony_ciimport argparse 22cc290419Sopenharmony_ciimport time 23cc290419Sopenharmony_ciimport os 24cc290419Sopenharmony_ci 25cc290419Sopenharmony_ciimport pytest 26cc290419Sopenharmony_ci 27cc290419Sopenharmony_cifrom dev_hdc_test import GP 28cc290419Sopenharmony_cifrom dev_hdc_test import check_library_installation, check_hdc_version, check_cmd_time 29cc290419Sopenharmony_cifrom dev_hdc_test import check_hdc_cmd, check_hdc_targets, get_local_path, get_remote_path, run_command_with_timeout 30cc290419Sopenharmony_cifrom dev_hdc_test import check_app_install, check_app_uninstall, prepare_source, pytest_run, update_source, check_rate, get_shell_result 31cc290419Sopenharmony_cifrom dev_hdc_test import make_multiprocess_file, rmdir 32cc290419Sopenharmony_cifrom dev_hdc_test import check_app_install_multi, check_app_uninstall_multi 33cc290419Sopenharmony_cifrom dev_hdc_test import check_rom, check_shell 34cc290419Sopenharmony_ci 35cc290419Sopenharmony_ci 36cc290419Sopenharmony_cidef test_list_targets(): 37cc290419Sopenharmony_ci assert check_hdc_targets() 38cc290419Sopenharmony_ci assert check_hdc_cmd("shell rm -rf data/local/tmp/it_*") 39cc290419Sopenharmony_ci assert check_hdc_cmd("shell mkdir data/local/tmp/it_send_dir") 40cc290419Sopenharmony_ci 41cc290419Sopenharmony_ci 42cc290419Sopenharmony_ci@pytest.mark.repeat(5) 43cc290419Sopenharmony_cidef test_empty_file(): 44cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('empty')} {get_remote_path('it_empty')}") 45cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('it_empty')} {get_local_path('empty_recv')}") 46cc290419Sopenharmony_ci 47cc290419Sopenharmony_ci 48cc290419Sopenharmony_ci@pytest.mark.repeat(5) 49cc290419Sopenharmony_cidef test_empty_dir(): 50cc290419Sopenharmony_ci assert check_shell(f"file send {get_local_path('empty_dir')} {get_remote_path('it_empty_dir')}", "the source folder is empty") 51cc290419Sopenharmony_ci assert check_hdc_cmd("shell mkdir data/local/tmp/it_empty_dir_recv") 52cc290419Sopenharmony_ci assert check_shell(f"file recv {get_remote_path('it_empty_dir_recv')} {get_local_path('empty_dir_recv')}", "the source folder is empty") 53cc290419Sopenharmony_ci 54cc290419Sopenharmony_ci 55cc290419Sopenharmony_ci@pytest.mark.repeat(5) 56cc290419Sopenharmony_cidef test_long_path(): 57cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('deep_test_dir')} {get_remote_path('it_send_dir')}") 58cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('it_send_dir/deep_test_dir')} {get_local_path('recv_test_dir')}") 59cc290419Sopenharmony_ci 60cc290419Sopenharmony_ci 61cc290419Sopenharmony_ci@pytest.mark.repeat(5) 62cc290419Sopenharmony_cidef test_small_file(): 63cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('small')} {get_remote_path('it_small')}") 64cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('it_small')} {get_local_path('small_recv')}") 65cc290419Sopenharmony_ci 66cc290419Sopenharmony_ci 67cc290419Sopenharmony_ci@pytest.mark.repeat(1) 68cc290419Sopenharmony_cidef test_node_file(): 69cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('../../../sys/power/state')} {get_local_path('state')}") 70cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('../../../sys/firmware/fdt')} {get_local_path('fdt')}") 71cc290419Sopenharmony_ci 72cc290419Sopenharmony_ci 73cc290419Sopenharmony_ci@pytest.mark.repeat(1) 74cc290419Sopenharmony_cidef test_medium_file(): 75cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('medium')} {get_remote_path('it_medium')}") 76cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('it_medium')} {get_local_path('medium_recv')}") 77cc290419Sopenharmony_ci 78cc290419Sopenharmony_ci 79cc290419Sopenharmony_ci@pytest.mark.repeat(1) 80cc290419Sopenharmony_cidef test_large_file(): 81cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('large')} {get_remote_path('it_large')}") 82cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('it_large')} {get_local_path('large_recv')}") 83cc290419Sopenharmony_ci 84cc290419Sopenharmony_ci 85cc290419Sopenharmony_ci@pytest.mark.repeat(1) 86cc290419Sopenharmony_cidef test_running_file(): 87cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv /system/bin/hdcd {get_local_path('running_recv')}") 88cc290419Sopenharmony_ci 89cc290419Sopenharmony_ci 90cc290419Sopenharmony_ci@pytest.mark.repeat(1) 91cc290419Sopenharmony_cidef test_rate(): 92cc290419Sopenharmony_ci assert check_rate(f"file send {get_local_path('large')} {get_remote_path('it_large')}", 18000) 93cc290419Sopenharmony_ci assert check_rate(f"file recv {get_remote_path('it_large')} {get_local_path('large_recv')}", 18000) 94cc290419Sopenharmony_ci 95cc290419Sopenharmony_ci 96cc290419Sopenharmony_ci@pytest.mark.repeat(1) 97cc290419Sopenharmony_cidef test_file_error(): 98cc290419Sopenharmony_ci assert check_hdc_cmd("target mount") 99cc290419Sopenharmony_ci assert check_shell( 100cc290419Sopenharmony_ci f"file send {get_local_path('small')} system/bin/hdcd", 101cc290419Sopenharmony_ci "busy" 102cc290419Sopenharmony_ci ) 103cc290419Sopenharmony_ci assert check_shell( 104cc290419Sopenharmony_ci f"file recv", 105cc290419Sopenharmony_ci "[Fail]There is no local and remote path" 106cc290419Sopenharmony_ci ) 107cc290419Sopenharmony_ci assert check_shell( 108cc290419Sopenharmony_ci f"file send", 109cc290419Sopenharmony_ci "[Fail]There is no local and remote path" 110cc290419Sopenharmony_ci ) 111cc290419Sopenharmony_ci assert check_hdc_cmd(f"shell rm -rf {get_remote_path('../../../large')}") 112cc290419Sopenharmony_ci assert check_hdc_cmd(f"shell param set persist.hdc.control.file false") 113cc290419Sopenharmony_ci assert check_shell( 114cc290419Sopenharmony_ci f"file send {get_local_path('small')} {get_remote_path('it_small_false')}", 115cc290419Sopenharmony_ci "debugging is not allowed" 116cc290419Sopenharmony_ci ) 117cc290419Sopenharmony_ci assert check_hdc_cmd(f"shell param set persist.hdc.control.file true") 118cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('small')} {get_remote_path('it_small_true')}") 119cc290419Sopenharmony_ci 120cc290419Sopenharmony_ci 121cc290419Sopenharmony_ci@pytest.mark.repeat(5) 122cc290419Sopenharmony_cidef test_recv_dir(): 123cc290419Sopenharmony_ci if os.path.exists(get_local_path('it_problem_dir')): 124cc290419Sopenharmony_ci rmdir(get_local_path('it_problem_dir')) 125cc290419Sopenharmony_ci assert check_hdc_cmd(f"shell rm -rf {get_remote_path('it_problem_dir')}") 126cc290419Sopenharmony_ci assert check_hdc_cmd(f"shell rm -rf {get_remote_path('problem_dir')}") 127cc290419Sopenharmony_ci assert make_multiprocess_file(get_local_path('problem_dir'), get_remote_path(''), 'send', 1, "dir") 128cc290419Sopenharmony_ci assert check_hdc_cmd(f"shell mv {get_remote_path('problem_dir')} {get_remote_path('it_problem_dir')}") 129cc290419Sopenharmony_ci assert make_multiprocess_file(get_local_path(''), get_remote_path('it_problem_dir'), 'recv', 1, "dir") 130cc290419Sopenharmony_ci 131cc290419Sopenharmony_ci 132cc290419Sopenharmony_ci@pytest.mark.repeat(5) 133cc290419Sopenharmony_cidef test_hap_install(): 134cc290419Sopenharmony_ci assert check_hdc_cmd(f"install -r {get_local_path('entry-default-signed-debug.hap')}", 135cc290419Sopenharmony_ci bundle="com.hmos.diagnosis") 136cc290419Sopenharmony_ci 137cc290419Sopenharmony_ci 138cc290419Sopenharmony_ci@pytest.mark.repeat(5) 139cc290419Sopenharmony_cidef test_install_hap(): 140cc290419Sopenharmony_ci package_hap = "entry-default-signed-debug.hap" 141cc290419Sopenharmony_ci app_name_default = "com.hmos.diagnosis" 142cc290419Sopenharmony_ci 143cc290419Sopenharmony_ci # default 144cc290419Sopenharmony_ci assert check_app_install(package_hap, app_name_default) 145cc290419Sopenharmony_ci assert check_app_uninstall(app_name_default) 146cc290419Sopenharmony_ci 147cc290419Sopenharmony_ci # -r 148cc290419Sopenharmony_ci assert check_app_install(package_hap, app_name_default, "-r") 149cc290419Sopenharmony_ci assert check_app_uninstall(app_name_default) 150cc290419Sopenharmony_ci 151cc290419Sopenharmony_ci # -k 152cc290419Sopenharmony_ci assert check_app_install(package_hap, app_name_default, "-r") 153cc290419Sopenharmony_ci assert check_app_uninstall(app_name_default, "-k") 154cc290419Sopenharmony_ci 155cc290419Sopenharmony_ci # -s 156cc290419Sopenharmony_ci assert check_app_install(package_hap, app_name_default, "-s") 157cc290419Sopenharmony_ci 158cc290419Sopenharmony_ci 159cc290419Sopenharmony_ci@pytest.mark.repeat(5) 160cc290419Sopenharmony_cidef test_install_hsp(): 161cc290419Sopenharmony_ci package_hsp = "libA_v10001.hsp" 162cc290419Sopenharmony_ci hsp_name_default = "com.example.liba" 163cc290419Sopenharmony_ci 164cc290419Sopenharmony_ci assert check_app_install(package_hsp, hsp_name_default, "-s") 165cc290419Sopenharmony_ci assert check_app_uninstall(hsp_name_default, "-s") 166cc290419Sopenharmony_ci assert check_app_install(package_hsp, hsp_name_default) 167cc290419Sopenharmony_ci 168cc290419Sopenharmony_ci 169cc290419Sopenharmony_ci@pytest.mark.repeat(5) 170cc290419Sopenharmony_cidef test_install_multi_hap(): 171cc290419Sopenharmony_ci # default multi hap 172cc290419Sopenharmony_ci tables = { 173cc290419Sopenharmony_ci "entry-default-signed-debug.hap" : "com.hmos.diagnosis", 174cc290419Sopenharmony_ci "ActsAudioRecorderJsTest.hap" : "ohos.acts.multimedia.audio.audiorecorder" 175cc290419Sopenharmony_ci } 176cc290419Sopenharmony_ci assert check_app_install_multi(tables) 177cc290419Sopenharmony_ci assert check_app_uninstall_multi(tables) 178cc290419Sopenharmony_ci assert check_app_install_multi(tables, "-s") 179cc290419Sopenharmony_ci 180cc290419Sopenharmony_ci # default multi hap -r -k 181cc290419Sopenharmony_ci tables = { 182cc290419Sopenharmony_ci "entry-default-signed-debug.hap" : "com.hmos.diagnosis", 183cc290419Sopenharmony_ci "ActsAudioRecorderJsTest.hap" : "ohos.acts.multimedia.audio.audiorecorder" 184cc290419Sopenharmony_ci } 185cc290419Sopenharmony_ci assert check_app_install_multi(tables, "-r") 186cc290419Sopenharmony_ci assert check_app_uninstall_multi(tables, "-k") 187cc290419Sopenharmony_ci 188cc290419Sopenharmony_ci 189cc290419Sopenharmony_ci@pytest.mark.repeat(5) 190cc290419Sopenharmony_cidef test_install_multi_hsp(): 191cc290419Sopenharmony_ci # default multi hsp -s 192cc290419Sopenharmony_ci tables = { 193cc290419Sopenharmony_ci "libA_v10001.hsp" : "com.example.liba", 194cc290419Sopenharmony_ci "libB_v10001.hsp" : "com.example.libb", 195cc290419Sopenharmony_ci } 196cc290419Sopenharmony_ci assert check_app_install_multi(tables, "-s") 197cc290419Sopenharmony_ci assert check_app_uninstall_multi(tables, "-s") 198cc290419Sopenharmony_ci assert check_app_install_multi(tables) 199cc290419Sopenharmony_ci 200cc290419Sopenharmony_ci 201cc290419Sopenharmony_ci@pytest.mark.repeat(5) 202cc290419Sopenharmony_cidef test_install_hsp_and_hap(): 203cc290419Sopenharmony_ci #default multi hsp and hsp 204cc290419Sopenharmony_ci tables = { 205cc290419Sopenharmony_ci "libA_v10001.hsp" : "com.example.liba", 206cc290419Sopenharmony_ci "entry-default-signed-debug.hap" : "com.hmos.diagnosis", 207cc290419Sopenharmony_ci } 208cc290419Sopenharmony_ci assert check_app_install_multi(tables) 209cc290419Sopenharmony_ci assert check_app_install_multi(tables, "-s") 210cc290419Sopenharmony_ci 211cc290419Sopenharmony_ci 212cc290419Sopenharmony_ci@pytest.mark.repeat(5) 213cc290419Sopenharmony_cidef test_install_dir(): 214cc290419Sopenharmony_ci package_haps_dir = "app_dir" 215cc290419Sopenharmony_ci app_name_default = "com.hmos.diagnosis" 216cc290419Sopenharmony_ci assert check_app_install(package_haps_dir, app_name_default) 217cc290419Sopenharmony_ci assert check_app_uninstall(app_name_default) 218cc290419Sopenharmony_ci 219cc290419Sopenharmony_ci 220cc290419Sopenharmony_cidef test_server_kill(): 221cc290419Sopenharmony_ci assert check_hdc_cmd("kill", "Kill server finish") 222cc290419Sopenharmony_ci assert check_hdc_cmd("start server", "") 223cc290419Sopenharmony_ci 224cc290419Sopenharmony_ci 225cc290419Sopenharmony_cidef test_target_cmd(): 226cc290419Sopenharmony_ci assert check_hdc_targets() 227cc290419Sopenharmony_ci time.sleep(3) 228cc290419Sopenharmony_ci check_hdc_cmd("target boot") 229cc290419Sopenharmony_ci start_time = time.time() 230cc290419Sopenharmony_ci run_command_with_timeout("hdc wait", 60) # reboot takes up to 60 seconds 231cc290419Sopenharmony_ci end_time = time.time() 232cc290419Sopenharmony_ci print(f"command exec time {end_time - start_time}") 233cc290419Sopenharmony_ci assert (end_time - start_time) > 5 # Reboot takes at least 5 seconds 234cc290419Sopenharmony_ci 235cc290419Sopenharmony_ci 236cc290419Sopenharmony_ci@pytest.mark.repeat(1) 237cc290419Sopenharmony_cidef test_file_switch_off(): 238cc290419Sopenharmony_ci assert check_hdc_cmd("shell param set persist.hdc.control.file false") 239cc290419Sopenharmony_ci assert check_shell(f"shell param get persist.hdc.control.file", "false") 240cc290419Sopenharmony_ci assert check_shell(f"file send {get_local_path('small')} {get_remote_path('it_small')}", 241cc290419Sopenharmony_ci "debugging is not allowed") 242cc290419Sopenharmony_ci assert check_shell(f"file recv {get_remote_path('it_small')} {get_local_path('small_recv')}", 243cc290419Sopenharmony_ci "debugging is not allowed") 244cc290419Sopenharmony_ci 245cc290419Sopenharmony_ci 246cc290419Sopenharmony_ci@pytest.mark.repeat(1) 247cc290419Sopenharmony_cidef test_file_switch_on(): 248cc290419Sopenharmony_ci assert check_hdc_cmd("shell param set persist.hdc.control.file true") 249cc290419Sopenharmony_ci assert check_shell(f"shell param get persist.hdc.control.file", "true") 250cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('small')} {get_remote_path('it_small')}") 251cc290419Sopenharmony_ci assert check_hdc_cmd(f"file recv {get_remote_path('it_small')} {get_local_path('small_recv')}") 252cc290419Sopenharmony_ci 253cc290419Sopenharmony_ci 254cc290419Sopenharmony_cidef test_target_mount(): 255cc290419Sopenharmony_ci assert (check_hdc_cmd("target mount", "Mount finish" or "[Fail]Operate need running as root")) 256cc290419Sopenharmony_ci remount_vendor = get_shell_result(f'shell "mount |grep /vendor |head -1"') 257cc290419Sopenharmony_ci print(remount_vendor) 258cc290419Sopenharmony_ci assert "rw" in remount_vendor 259cc290419Sopenharmony_ci remount_system = get_shell_result(f'shell "cat /proc/mounts | grep /system |head -1"') 260cc290419Sopenharmony_ci print(remount_system) 261cc290419Sopenharmony_ci assert "rw" in remount_system 262cc290419Sopenharmony_ci 263cc290419Sopenharmony_ci 264cc290419Sopenharmony_cidef test_tmode_port(): 265cc290419Sopenharmony_ci assert (check_hdc_cmd("tmode port", "Set device run mode successful")) 266cc290419Sopenharmony_ci time.sleep(5) 267cc290419Sopenharmony_ci assert (check_hdc_cmd("tmode port 12345")) 268cc290419Sopenharmony_ci time.sleep(5) 269cc290419Sopenharmony_ci netstat_port = get_shell_result(f'shell "netstat -anp | grep 12345"') 270cc290419Sopenharmony_ci print(netstat_port) 271cc290419Sopenharmony_ci assert "LISTEN" in netstat_port 272cc290419Sopenharmony_ci assert "hdcd" in netstat_port 273cc290419Sopenharmony_ci 274cc290419Sopenharmony_ci 275cc290419Sopenharmony_cidef test_target_key(): 276cc290419Sopenharmony_ci device_key = get_shell_result(f"list targets").split("\r\n")[0] 277cc290419Sopenharmony_ci hdcd_pid = get_shell_result(f"-t {device_key} shell pgrep -x hdcd").split("\r\n")[0] 278cc290419Sopenharmony_ci assert hdcd_pid.isdigit() 279cc290419Sopenharmony_ci 280cc290419Sopenharmony_ci 281cc290419Sopenharmony_cidef test_version_cmd(): 282cc290419Sopenharmony_ci version = "Ver: 2.0.0a" 283cc290419Sopenharmony_ci assert check_hdc_version("-v", version) 284cc290419Sopenharmony_ci assert check_hdc_version("version", version) 285cc290419Sopenharmony_ci assert check_hdc_version("checkserver", version) 286cc290419Sopenharmony_ci 287cc290419Sopenharmony_ci 288cc290419Sopenharmony_cidef test_fport_cmd(): 289cc290419Sopenharmony_ci fport_list = [] 290cc290419Sopenharmony_ci rport_list = [] 291cc290419Sopenharmony_ci start_port = 10000 292cc290419Sopenharmony_ci end_port = 10020 293cc290419Sopenharmony_ci for i in range(start_port, end_port): 294cc290419Sopenharmony_ci fport = f"tcp:{i+100} tcp:{i+200}" 295cc290419Sopenharmony_ci rport = f"tcp:{i+300} tcp:{i+400}" 296cc290419Sopenharmony_ci localabs = f"tcp:{i+500} localabstract:{f'helloworld.com.app.{i+600}'}" 297cc290419Sopenharmony_ci fport_list.append(fport) 298cc290419Sopenharmony_ci rport_list.append(rport) 299cc290419Sopenharmony_ci fport_list.append(localabs) 300cc290419Sopenharmony_ci 301cc290419Sopenharmony_ci for fport in fport_list: 302cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport {fport}", "Forwardport result:OK") 303cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport {fport}", "TCP Port listen failed at") 304cc290419Sopenharmony_ci assert check_hdc_cmd("fport ls", fport) 305cc290419Sopenharmony_ci 306cc290419Sopenharmony_ci for fport in fport_list: 307cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport rm {fport}", "success") 308cc290419Sopenharmony_ci assert not check_hdc_cmd("fport ls", fport) 309cc290419Sopenharmony_ci 310cc290419Sopenharmony_ci for rport in rport_list: 311cc290419Sopenharmony_ci assert check_hdc_cmd(f"rport {rport}", "Forwardport result:OK") 312cc290419Sopenharmony_ci assert check_hdc_cmd(f"rport {rport}", "TCP Port listen failed at") 313cc290419Sopenharmony_ci assert check_hdc_cmd("rport ls", rport) or check_hdc_cmd("fport ls", rport) 314cc290419Sopenharmony_ci 315cc290419Sopenharmony_ci for rport in rport_list: 316cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport rm {rport}", "success") 317cc290419Sopenharmony_ci assert not check_hdc_cmd("rport ls", fport) and not check_hdc_cmd("fport ls", fport) 318cc290419Sopenharmony_ci 319cc290419Sopenharmony_ci task_str1 = "tcp:33333 tcp:33333" 320cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport {task_str1}", "Forwardport result:OK") 321cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport rm {task_str1}", "success") 322cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport {task_str1}", "Forwardport result:OK") 323cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport rm {task_str1}", "success") 324cc290419Sopenharmony_ci 325cc290419Sopenharmony_ci task_str2 = "tcp:44444 tcp:44444" 326cc290419Sopenharmony_ci assert check_hdc_cmd(f"rport {task_str2}", "Forwardport result:OK") 327cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport rm {task_str2}", "success") 328cc290419Sopenharmony_ci assert check_hdc_cmd(f"rport {task_str2}", "Forwardport result:OK") 329cc290419Sopenharmony_ci assert check_hdc_cmd(f"fport rm {task_str2}", "success") 330cc290419Sopenharmony_ci 331cc290419Sopenharmony_ci 332cc290419Sopenharmony_cidef test_shell_cmd_timecost(): 333cc290419Sopenharmony_ci assert check_cmd_time( 334cc290419Sopenharmony_ci cmd="shell \"ps -ef | grep hdcd\"", 335cc290419Sopenharmony_ci pattern="hdcd", 336cc290419Sopenharmony_ci duration=None, 337cc290419Sopenharmony_ci times=10) 338cc290419Sopenharmony_ci 339cc290419Sopenharmony_ci 340cc290419Sopenharmony_cidef test_shell_huge_cat(): 341cc290419Sopenharmony_ci assert check_hdc_cmd(f"file send {get_local_path('word_100M.txt')} {get_remote_path('it_word_100M.txt')}") 342cc290419Sopenharmony_ci assert check_cmd_time( 343cc290419Sopenharmony_ci cmd=f"shell cat {get_remote_path('it_word_100M.txt')}", 344cc290419Sopenharmony_ci pattern=None, 345cc290419Sopenharmony_ci duration=10000, # 10 seconds 346cc290419Sopenharmony_ci times=10) 347cc290419Sopenharmony_ci 348cc290419Sopenharmony_ci 349cc290419Sopenharmony_cidef test_hdcd_rom(): 350cc290419Sopenharmony_ci baseline = 2200 # 2200KB 351cc290419Sopenharmony_ci assert check_rom(baseline) 352cc290419Sopenharmony_ci 353cc290419Sopenharmony_ci 354cc290419Sopenharmony_cidef test_smode_r(): 355cc290419Sopenharmony_ci assert check_hdc_cmd(f'smode -r') 356cc290419Sopenharmony_ci run_command_with_timeout("hdc wait", 5) 357cc290419Sopenharmony_ci time.sleep(1) 358cc290419Sopenharmony_ci assert check_shell(f"shell id", "context=u:r:sh:s0") 359cc290419Sopenharmony_ci 360cc290419Sopenharmony_ci 361cc290419Sopenharmony_cidef test_smode(): 362cc290419Sopenharmony_ci assert check_hdc_cmd(f'smode') 363cc290419Sopenharmony_ci run_command_with_timeout("hdc wait", 5) 364cc290419Sopenharmony_ci time.sleep(1) 365cc290419Sopenharmony_ci assert check_shell(f"shell id", "context=u:r:su:s0") 366cc290419Sopenharmony_ci assert not check_hdc_cmd("ls /data/log/faultlog/faultlogger | grep hdcd", "hdcd") 367cc290419Sopenharmony_ci 368cc290419Sopenharmony_ci 369cc290419Sopenharmony_cidef setup_class(): 370cc290419Sopenharmony_ci print("setting up env ...") 371cc290419Sopenharmony_ci check_hdc_cmd("shell rm -rf data/local/tmp/it_*") 372cc290419Sopenharmony_ci GP.load() 373cc290419Sopenharmony_ci 374cc290419Sopenharmony_ci 375cc290419Sopenharmony_cidef teardown_class(): 376cc290419Sopenharmony_ci pass 377cc290419Sopenharmony_ci 378cc290419Sopenharmony_ci 379cc290419Sopenharmony_cidef run_main(): 380cc290419Sopenharmony_ci if check_library_installation("pytest"): 381cc290419Sopenharmony_ci exit(1) 382cc290419Sopenharmony_ci 383cc290419Sopenharmony_ci if check_library_installation("pytest-testreport"): 384cc290419Sopenharmony_ci exit(1) 385cc290419Sopenharmony_ci 386cc290419Sopenharmony_ci if check_library_installation("pytest-repeat"): 387cc290419Sopenharmony_ci exit(1) 388cc290419Sopenharmony_ci 389cc290419Sopenharmony_ci GP.init() 390cc290419Sopenharmony_ci 391cc290419Sopenharmony_ci prepare_source() 392cc290419Sopenharmony_ci update_source() 393cc290419Sopenharmony_ci 394cc290419Sopenharmony_ci choice_default = "" 395cc290419Sopenharmony_ci parser = argparse.ArgumentParser() 396cc290419Sopenharmony_ci parser.add_argument('--count', type=int, default=1, 397cc290419Sopenharmony_ci help='test times') 398cc290419Sopenharmony_ci parser.add_argument('--verbose', '-v', default=__file__, 399cc290419Sopenharmony_ci help='filename') 400cc290419Sopenharmony_ci parser.add_argument('--desc', '-d', default='Test for function.', 401cc290419Sopenharmony_ci help='Add description on report') 402cc290419Sopenharmony_ci args = parser.parse_args() 403cc290419Sopenharmony_ci 404cc290419Sopenharmony_ci pytest_run(args) 405cc290419Sopenharmony_ci 406cc290419Sopenharmony_ci 407cc290419Sopenharmony_ciif __name__ == "__main__": 408cc290419Sopenharmony_ci run_main() 409