Poco icon indicating copy to clipboard operation
Poco copied to clipboard

RpcTimeoutError

Open magicedy opened this issue 6 years ago • 9 comments

描述问题bug 几台设备(OPPO R2017/R6007/A31/R3, VIVO Y51A)在测试过程中都遇到RpcTimeoutError报错 1.同一个app下,UI少的界面没问题,UI稍多的界面就会报错 2.同一个UI稍多的界面,用AirtestIDE或者直接poco脚本(简单一句dump)都会报错,用PocoHierarchyViewer怎样刷新都没问题

PS: 把打印打开,看到是socket recv timeout,是safetcp那块有问题? PS2: 单独打了一个Demo包,已发客服大锅,用VIVO Y51A(文档上看到兼容设备列表有)应该能复现的,看到,主界面dump就会报错,打开第一个Graph界面就不会报错

报错信息

======================================================================
ERROR: runTest (app.widgets.code_runner.ide_launcher.AirtestIDECase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "airtest\cli\runner.py", line 66, in runTest
  File "site-packages\six.py", line 693, in reraise
  File "airtest\cli\runner.py", line 62, in runTest
  File "C:\Users\Administrator\AppData\Local\Temp\AirtestIDE\Scripts\untitled.air\untitled.py", line 4, in <module>
    print(poco.agent.hierarchy.dump())
  File "poco\freezeui\hierarchy.py", line 68, in dump
  File "poco\utils\simplerpc\utils.py", line 13, in new_func
  File "poco\utils\simplerpc\simplerpc.py", line 78, in wait
poco.utils.simplerpc.simplerpc.RpcTimeoutError: <poco.utils.simplerpc.simplerpc.Callback object at 0x000000000D8689E8>(rid=548523b2-54d3-4f8d-bbbf-28aaed86418e)

分别是PS2中两个界面打印的日志

====[POCO] HandleTcpClientAccepted 1
====[POCO] HandleTcpClientAccepted 2
====[POCO] HandleTcpClientAccepted 3
====[POCO] TCP client 127.0.0.1:43482 has connected.
====[POCO] ContinueReadBuffer
====[POCO] HandleDatagramReceived 1
====[POCO] HandleDatagramReceived 2
====[POCO] HandleTcpClientAccepted 4
====[POCO] HandleDatagramReceived numberOfReadBytes 104
====[POCO] HandleDatagramReceived 4
====[POCO] Client : 127.0.0.1:43482 --> 104
====[POCO] ContinueReadBuffer
====[POCO] Update  msgs.Count = 1
====[POCO] Update msg = {"method": "Dump", "params": [true], "jsonrpc": "2.0", "id": "76cf54a8-cd37-4ecb-baa3-89e10d5bfa4a"}
====[POCO] Update response = {"jsonrpc":"2.0","id":"76cf54a8-cd37-4ecb-baa3-89e10d5bfa4a","result":{"name":"<Root>","payload":{"name":"<Root>","type":"Root","visible":true,"pos":[0.0,0.0],"size":[0.0,0.0],"scale":[1.0,1.0],"anchorPoint":[0.5,0.5],"zOrders":{"local":0,"global":0}},"children":[{"name":"[FairyGUI.Timers]","payload":{"name":"[FairyGUI.Timers]","type":"GameObject","visible":true,"pos":[0.0,0.0],"size":[0.0,0.0],"scale":[1.0,1.0],"anchorPoint":[0.0,0.0],"zOrders":{"local":0,"global":0},"clickable":false,"components":["Transform","TimersEngine"],"_ilayer":0,"layer":"Default","_instanceId":-86}},{"name":"Stage","payload":{"name":"Stage","type":"Stage","visible":true,"pos":[0.0,0.0],"size":[0.0,0.0],"scale":[1.0,1.0],"anchorPoint":[0.0,0.0],"zOrders":{"local":0,"global":0},"clickable":false,"components":["Transform","DisplayObjectInfo","StageEngine","UIContentScaler","AudioSource"],"_ilayer":5,"layer":"UI","_instanceId":-72},"children":[{"name":"GRoot","payload":{"name":"GRoot","type":"Root","visible
====[POCO] Update send
====[POCO] Tcp Send datagram.Length = 32926
====[POCO] HandleDatagramReceived 1
====[POCO] HandleDatagramReceived 2
====[POCO] HandleDatagramReceived numberOfReadBytes 0
====[POCO] TCP client 127.0.0.1:43482 has disconnected.
====[POCO] HandleDatagramReceived 3
====[POCO] HandleTcpClientAccepted 1
====[POCO] HandleTcpClientAccepted 2
====[POCO] HandleTcpClientAccepted 3
====[POCO] TCP client 127.0.0.1:43483 has connected.
====[POCO] ContinueReadBuffer
====[POCO] HandleTcpClientAccepted 4
====[POCO] HandleDatagramReceived 1
====[POCO] HandleDatagramReceived 2
====[POCO] HandleDatagramReceived numberOfReadBytes 104
====[POCO] HandleDatagramReceived 4
====[POCO] Client : 127.0.0.1:43483 --> 104
====[POCO] ContinueReadBuffer
====[POCO] Update  msgs.Count = 1
====[POCO] Update msg = {"method": "Dump", "params": [true], "jsonrpc": "2.0", "id": "23ca68e0-bfb1-4b39-9706-e797c9842661"}
====[POCO] Update response = {"jsonrpc":"2.0","id":"23ca68e0-bfb1-4b39-9706-e797c9842661","result":{"name":"<Root>","payload":{"name":"<Root>","type":"Root","visible":true,"pos":[0.0,0.0],"size":[0.0,0.0],"scale":[1.0,1.0],"anchorPoint":[0.5,0.5],"zOrders":{"local":0,"global":0}},"children":[{"name":"[FairyGUI.TweenManager]","payload":{"name":"[FairyGUI.TweenManager]","type":"GameObject","visible":true,"pos":[0.0,0.0],"size":[0.0,0.0],"scale":[1.0,1.0],"anchorPoint":[0.0,0.0],"zOrders":{"local":0,"global":0},"clickable":false,"components":["Transform","TweenEngine"],"_ilayer":0,"layer":"Default","_instanceId":-1544}},{"name":"[FairyGUI.Timers]","payload":{"name":"[FairyGUI.Timers]","type":"GameObject","visible":true,"pos":[0.0,0.0],"size":[0.0,0.0],"scale":[1.0,1.0],"anchorPoint":[0.0,0.0],"zOrders":{"local":0,"global":0},"clickable":false,"components":["Transform","TimersEngine"],"_ilayer":0,"layer":"Default","_instanceId":-86}},{"name":"Stage","payload":{"name":"Stage","type":"Stage","visible":true,"pos":[
====[POCO] Update send
====[POCO] Tcp Send datagram.Length = 9432
====[POCO] HandleDatagramReceived 1
====[POCO] HandleDatagramReceived 2
====[POCO] HandleDatagramReceived numberOfReadBytes 0
====[POCO] TCP client 127.0.0.1:43483 has disconnected.
====[POCO] HandleDatagramReceived 3

复现代码

# -*- encoding=utf8 -*-
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()
print(poco.agent.hierarchy.dump())

python 版本: python3.6.5

poco 版本: 1.0.70 AirtestIDE版本: v1.1.0

设备:

  • 型号: OPPO R2017/R6007/A31/R3, VIVO Y51A

magicedy avatar Nov 24 '18 07:11 magicedy

@magicedy 我用了vivo Y51A的设备照你说的方式来运行,很多遍都没有出错,而且我这里是远程连接运行,一直没有报错。我们内部使用确实会偶尔出现poco不稳定断开连接的情况,以我经验来看一般来说跟设备状态相关,你可以试试将设备重启一下再试试?

zzldjkzxf avatar Nov 26 '18 07:11 zzldjkzxf

请问下你们给的样例App中UI稍多的界面是哪个?

adolli avatar Nov 26 '18 07:11 adolli

@adolli 就是第一个界面 @zzldjkzxf 重启过手机还是不行

不过刚刚发现换了一台电脑又没问题。。这个还和电脑有关系吗,不过有问题的电脑之前是import cv2有问题,后来换成opencv-contrib-python==3.2.0.7才可以,不知道有没有关系,还是说电脑配置太低?

但问题是测了其它5,6台手机(nexus 4,一加3T,小米mix2,荣耀7x,小米Note,魅族note5)都没遇到这个问题,真奇怪。那还有什么办法去解决那台电脑的这个报错问题吗

magicedy avatar Nov 26 '18 08:11 magicedy

你那个有问题的电脑的什么操作系统?也有可能是主板usb供电不稳定

adolli avatar Nov 27 '18 02:11 adolli

win 7 sp1台式机,i3-3240,8G内存,intel hd 2500,插的后面板usb,应该不是供电问题吧,问题是ui少的界面是正常的,还有用PocoHierarchyViewer也一直正常

magicedy avatar Nov 27 '18 04:11 magicedy

这样看就跟传输量有关了,传输量大容易断,需要进一步看com.netease.poco.pocoservice的logcat输出了。

adolli avatar Dec 02 '18 06:12 adolli

今天我在使用mumu模拟器跑测试时,也频繁碰到这个。我的测试内容是:“打开游戏”->"登录“->做加好友的操作”->“关闭游戏” `如此循环。打开/关闭游戏瞬间的数据量会比较大。 log如下:

`ERROR: runTest (main.CustomCase)

Traceback (most recent call last): File "D:\Python3.7\lib\site-packages\airtest\cli\runner.py", line 66, in runTest six.reraise(*sys.exc_info()) File "D:\Python3.7\lib\site-packages\six.py", line 693, in reraise raise value File "D:\Python3.7\lib\site-packages\airtest\cli\runner.py", line 62, in runTest exec(compile(code.encode("utf-8"), pyfilepath, 'exec'), self.scope) File "E:\TestSVN\QA\RO3D\airtest\AddFriends.air\AddFriends.py", line 74, in Login(i) File "E:\TestSVN\QA\RO3D\airtest\AddFriends.air\AddFriends.py", line 35, in Login poco("ButtonNextStep").click() File "D:\Python3.7\lib\site-packages\poco\proxy.py", line 23, in wrapped return func(proxy, *args, **kwargs) File "D:\Python3.7\lib\site-packages\poco\proxy.py", line 283, in click pos_in_percentage = self.get_position(focus) File "D:\Python3.7\lib\site-packages\poco\proxy.py", line 563, in get_position pos = self.attr('pos') File "D:\Python3.7\lib\site-packages\poco\proxy.py", line 39, in wrapped return func(self, *args, **kwargs) File "D:\Python3.7\lib\site-packages\poco\proxy.py", line 684, in attr nodes = self._do_query(multiple=False) File "D:\Python3.7\lib\site-packages\poco\proxy.py", line 819, in _do_query self._nodes = self.poco.agent.hierarchy.select(self.query, multiple) File "D:\Python3.7\lib\site-packages\poco\freezeui\hierarchy.py", line 89, in select return self.selector.select(query, multiple) File "D:\Python3.7\lib\site-packages\poco\sdk\Selector.py", line 77, in select return self.selectImpl(cond, multiple, self.getRoot(), 9999, True, True) File "D:\Python3.7\lib\site-packages\poco\sdk\Selector.py", line 70, in getRoot return self.dumper.getRoot() File "D:\Python3.7\lib\site-packages\poco\freezeui\hierarchy.py", line 35, in getRoot root = Node(self.dumpHierarchy()) File "D:\Python3.7\lib\site-packages\poco\utils\simplerpc\utils.py", line 13, in new_func ret, err = cb.wait(timeout=30) File "D:\Python3.7\lib\site-packages\poco\utils\simplerpc\simplerpc.py", line 78, in wait raise RpcTimeoutError(self) poco.utils.simplerpc.simplerpc.RpcTimeoutError: <poco.utils.simplerpc.simplerpc.Callback object at 0x00A76D70>(rid=4d014a7c-7721-45b4-bd40-7b071e6b33d1)`

saint228 avatar Apr 01 '19 08:04 saint228

我用airtestIDE运行的时候正常,但是换成命令行运行的时候,就报这个错误 [04:35:20][DEBUG]<airtest.utils.nbsp> [minitouch_server]b'Note: device /dev/input/mice is not supported by libevdev' [04:35:20][DEBUG]<airtest.utils.nbsp> [minitouch_server]b'Note: device /dev/input/mouse0 is not supported by libevdev' [04:35:20][DEBUG]<airtest.utils.nbsp> [minitouch_server]b'Note: device /dev/input/event2 was outscored by /dev/input/event1 (21973 >= 21816)' [04:35:20][DEBUG]<airtest.utils.nbsp> [minitouch_server]b'Type B touch device atmel_mxt_ts (719x1279 with 16 contacts) detected on /dev/input/event1 (score 21973)' [04:35:20][DEBUG]<airtest.utils.nbsp> [minitouch_server]b'Note: hard-limiting maximum number of contacts to 10' [04:35:20][DEBUG]<airtest.utils.nbsp> [minitouch_server]b'Connection established' [04:35:20][DEBUG]<airtest.core.android.minitouch> minitouch header:b'v 1\n^ 10 719 1279 255\n$ 19025\n'

ERROR: runTest (airtest.cli.runner.AirtestCase)

Traceback (most recent call last): File "g:\python\python37-32\lib\site-packages\airtest\cli\runner.py", line 65, in runTest six.reraise(*sys.exc_info()) File "g:\python\python37-32\lib\site-packages\six.py", line 693, in reraise raise value File "g:\python\python37-32\lib\site-packages\airtest\cli\runner.py", line 61, in runTest exec(compile(code.encode("utf-8"), pyfilepath, 'exec'), self.scope) File "D:\workSpace\game1\pocoTest\install.air\install.py", line 213, in mask=poco.wait_for_any([mask]); File "g:\python\python37-32\lib\site-packages\poco\pocofw.py", line 128, in wait_for_any if obj.exists(): File "g:\python\python37-32\lib\site-packages\poco\proxy.py", line 72, in wrapped return func(proxy, *args, **kwargs) File "g:\python\python37-32\lib\site-packages\poco\proxy.py", line 774, in exists return self.attr('visible') File "g:\python\python37-32\lib\site-packages\poco\proxy.py", line 39, in wrapped return func(self, *args, **kwargs) File "g:\python\python37-32\lib\site-packages\poco\proxy.py", line 734, in attr nodes = self._do_query(multiple=False) File "g:\python\python37-32\lib\site-packages\poco\proxy.py", line 872, in _do_query self._nodes = self.poco.agent.hierarchy.select(self.query, multiple) File "g:\python\python37-32\lib\site-packages\poco\freezeui\hierarchy.py", line 90, in select return self.selector.select(query, multiple) File "g:\python\python37-32\lib\site-packages\poco\sdk\Selector.py", line 78, in select return self.selectImpl(cond, multiple, self.getRoot(), 9999, True, True) File "g:\python\python37-32\lib\site-packages\poco\sdk\Selector.py", line 71, in getRoot return self.dumper.getRoot() File "g:\python\python37-32\lib\site-packages\poco\freezeui\hierarchy.py", line 35, in getRoot root = Node(self.dumpHierarchy()) File "g:\python\python37-32\lib\site-packages\poco\utils\simplerpc\utils.py", line 13, in new_func ret, err = cb.wait(timeout=30) File "g:\python\python37-32\lib\site-packages\poco\utils\simplerpc\simplerpc.py", line 78, in wait raise RpcTimeoutError(self) poco.utils.simplerpc.simplerpc.RpcTimeoutError: <poco.utils.simplerpc.simplerpc.Callback object at 0x0B3EBF90> (rid=bb7518fb-d39b-44b3-8f5e-61aef7f1131e) (connection="tcp://127.0.0.1:19360")

这个是咋回事呢?

zhjzhjxzhl avatar Apr 26 '19 08:04 zhjzhjxzhl

poco.utils.simplerpc.simplerpc.RpcTimeoutError感觉是个顽疾,,,也不知道有没有优化的一天,,,

lazydao avatar Nov 10 '20 06:11 lazydao