我想对 adb(android debug bridge) shell 进行压力测试。(在这方面 adb shell 只是 Android 手机提供的命令行工具)。
我从 python 创建一个子进程,并在这个子进程中执行“adb shell”命令。有一些命令必须提供给这个子进程,我通过子进程的标准输入提供这些命令。
一切似乎都很好,但是当我进行压力测试时。大约 100 次迭代后,我给标准输入的命令没有到达子进程。如果我在单独的终端中运行命令,它运行良好。但问题出在这个标准输入上。
谁能告诉我我做错了什么。下面是代码示例
class ADB():
def __init__(self):
self.proc = subprocess.Popen('adb shell', stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,bufsize=0)
def provideAMcommand(self, testParam):
try:
cmd1 = "am startservice -n com.test.myapp/.ADBSupport -e \"" + "command" + "\" \"" + "test" + "\""
cmd2 = " -e \"" + "param" + "\"" + " " + testParam
print cmd1+cmd2
sys.stdout.flush()
self.proc.stdin.write(cmd1 + cmd2 + "\n")
except:
raise Exception("Phone is not Connected to Desktop or ADB is not available \n")