Closed vdelendik closed 6 months ago
this line doesn't cover above use-case https://github.com/zebrunner/appium/blob/e9036ee2ee16e2bff24f1d8625fd14acfe7a0db5/files/healthcheck#L18
@azarouski, as only identify and fix let's test together as adb reconnect
seems recreate only appium and made stf containre unhealthy
To test this bug you need to try to connect with device in different states
You can use public.ecr.aws/zebrunner/appium:2.0.12-beta2
image for testing
positive scenario works great. closing...
reopening as this offline state we have to detect as part of healthcheck too. we have a problem with commands order here: https://github.com/zebrunner/appium/blob/4b0adf1aac1b35e4bd0d5b1e8fe384a721d9786c/files/healthcheck#L17
let's move device state detection onto the top, i case of offline try to reconnect. if not -> kill appium node process. Idea to exit with error code 0
device state detection fix was in registering stderr in the state variable here: https://github.com/zebrunner/appium/blob/1c73e8e5887d19ff7f506fff745e34fe2d3076b7/device_connect.sh#L86
state=$(adb get-state)
->
state=$(adb get-state 2>&1)
changes are available for testing in appium:2.0.14
because I already applied changes on one of the prod as a hot fix
reopening to verify as on startup so as part of healtcheck. feature might be implemented by moving get state into independent shell script: https://github.com/zebrunner/appium/blob/74b280207419623fbbec79a58a37ba46ea15dbf5/device_connect.sh#L85
in this case we can launch it as part of adb connect ...
for wireless and for single device connected via usb.
@azarouski, that's a key state for the usbreset usage:
03-18 11:30:06.908 78 78 I adb : auth.cpp:416 adb_auth_init...
03-18 11:30:06.908 78 78 I adb : auth.cpp:152 loaded new key from '/root/.android/adbkey' with fingerprint B96B964CE463E3F56A992E030BA6DCD75264EA79C9665262EC121240BD0B9B92
03-18 11:30:06.908 78 78 I adb : auth.cpp:391 adb_auth_inotify_init...
03-18 11:30:06.908 78 85 I adb : transport.cpp:335 R..UN: read thread spawning
03-18 11:30:06.908 78 86 I adb : transport.cpp:307 R..UN: write thread spawning
03-18 11:30:06.908 78 85 I adb : transport.cpp:339 R..UN: read failed: Success
03-18 11:30:06.908 78 85 I adb : transport.cpp:1253 R..UN: connection terminated: read failed
03-18 11:30:06.908 78 78 I adb : adb.cpp:176 R..UN: already offline
03-18 11:30:06.908 78 78 I adb : transport.cpp:936 destroying transport R..UN
03-18 11:30:06.908 78 78 I adb : transport.cpp:407 BlockingConnectionAdapter(R..UN): stopping
03-18 11:30:06.908 78 86 E adb : transport_usb.cpp:166 remote usb: 1 - write terminated: Connection timed out
03-18 11:30:06.908 78 78 I adb : transport.cpp:425 BlockingConnectionAdapter(R..UN): stopped
03-18 11:30:06.908 78 78 I adb : transport.cpp:294 BlockingConnectionAdapter(R..UN): destructing
03-18 11:30:06.908 78 78 I adb : transport.cpp:400 BlockingConnectionAdapter(R..UN): already stopped
03-18 11:30:07.908 78 89 I adb : transport.cpp:335 R..UN: read thread spawning
03-18 11:30:07.908 78 90 I adb : transport.cpp:307 R..UN: write thread spawning
03-18 11:30:07.908 78 89 I adb : transport.cpp:339 R..UN: read failed: Success
03-18 11:30:07.908 78 89 I adb : transport.cpp:1253 R..UN: connection terminated: read failed
03-18 11:30:07.908 78 78 I adb : adb.cpp:176 R..UN: already offline
03-18 11:30:07.908 78 78 I adb : transport.cpp:936 destroying transport R..UN
03-18 11:30:07.908 78 78 I adb : transport.cpp:407 BlockingConnectionAdapter(R..UN): stopping
03-18 11:30:07.908 78 90 E adb : transport_usb.cpp:166 remote usb: 1 - write terminated: Connection timed out
03-18 11:30:07.908 78 78 I adb : transport.cpp:425 BlockingConnectionAdapter(R..UN): stopped
03-18 11:30:07.908 78 78 I adb : transport.cpp:294 BlockingConnectionAdapter(R..UN): destructing
03-18 11:30:07.908 78 78 I adb : transport.cpp:400 BlockingConnectionAdapter(R..UN): already stopped
**state: error: no devices/emulators found**
it means we have device connected via usb because container exists but it is not visible by adb... tested successfully on different instances
Please, use 2.0.15-beta1
image for testing
verified successfully on one of the production env/device.
we have to review offline state detection as it seems broken and as result we don't try with reconnect