PharmEasyEngg / lampo

Lampo is developed to run appium mobile automation scripts on mobile devices connected to remote machines. It also aims at allowing users to interact with remotely connected devices for manual testing.
Other
42 stars 6 forks source link

Getting 400 Bad Request in Allocate device API. #1

Open WasiqB opened 3 years ago

WasiqB commented 3 years ago

Description

After starting the device manager and slave instance, I am able to see running simulators but when I use allocate end-point to start Appium session, I get 400 - Bad Request Error even when using same request sample given in README.

Following are the details about the request and response:

Request

> curl -L -iX POST "http://localhost:5353/remote-device-manager/appium/allocate?timeout=120" \
 --header "content-type: application/json" \
 --header "x-device-request-id: bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b" \
 --header "x-request-user: Wasiq" \
 --header "x-forwarded-for: localhost" \
 --data '{
     "is_android": "false",
     "is_real_device": "",
     "brand": "",
     "version": "",
     "device_name": "iPhone 12 Pro",
     "clear_user_data": false,
     "app_package": null
 }'

Response

HTTP/1.1 400 
Content-Type: application/json
Transfer-Encoding: chunked
Date: Tue, 26 Jan 2021 11:42:26 GMT
Connection: close

{"error":"request id 'bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b' for user 'Wasiq' from 'localhost' ::: unable to allocate device for request 'DeviceRequest(isAndroid=false, isRealDevice=, brand=, version=, deviceName=iPhone 12 Pro, clearUserData=false, appPackage=null)' even after '120 seconds'"}% 

Device Manager Logs

2021-01-26 17:10:25.992  INFO 43172 --- [remote-master-1] c.l.master.service.AllocationService     : request id 'bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b' for user 'Wasiq' from 'localhost' ::: device allocate request 'DeviceRequest(isAndroid=false, isRealDevice=, brand=, version=, deviceName=iPhone 12 Pro, clearUserData=false, appPackage=null)' with timeout of 120 seconds
2021-01-26 17:12:26.011 ERROR 43172 --- [nio-5353-exec-6] c.l.m.s.DeviceManagerExceptionHandler    : request id 'bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b' for user 'Wasiq' from 'localhost' ::: unable to allocate device for request 'DeviceRequest(isAndroid=false, isRealDevice=, brand=, version=, deviceName=iPhone 12 Pro, clearUserData=false, appPackage=null)' even after '120 seconds'

Slave Logs

2021-01-26 17:10:26.196  INFO 45226 --- [nio-5252-exec-4] c.l.slave.service.AppiumSessionService   : creating appium session for request 'AppiumSessionRequest(deviceId=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, cleanUserData=false, appPackage=)' with request id 'bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b'
2021-01-26 17:10:26.205  INFO 45226 --- [nio-5252-exec-4] c.l.slave.service.AppiumSessionService   : starting appium session for request => {device_id=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, is_android=false, request-id=bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b}
2021-01-26 17:10:27.348  INFO 45226 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : ********* bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b ::: stopping appium process of device 'E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB' *********
2021-01-26 17:10:29.494  INFO 45226 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : ********* bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b ::: stopping appium process of device 'E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB' *********
2021-01-26 17:10:30.498  INFO 45226 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : ********* bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b ::: starting appium process for device 'E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB' *********
2021-01-26 17:10:31.186  INFO 45226 --- [   scheduling-1] c.l.slave.service.DeviceSyncProcessor    : ***** 1185 ms taken to send data DeviceUpdateRequest(ip=192.168.0.102, androidRealDevices=[], androidEmulators=[], iosRealDevices=[], iosSimulators=[IOSDeviceProperty(deviceId=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, sdkVersion=14.1, manufacturer=Apple, isAndroid=false, isRealDevice=false)]) *****
2021-01-26 17:10:31.597  INFO 45226 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : starting appium session
2021-01-26 17:10:46.202  INFO 45226 --- [   scheduling-1] c.l.slave.service.DeviceSyncProcessor    : ***** 1197 ms taken to send data DeviceUpdateRequest(ip=192.168.0.102, androidRealDevices=[], androidEmulators=[], iosRealDevices=[], iosSimulators=[IOSDeviceProperty(deviceId=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, sdkVersion=14.1, manufacturer=Apple, isAndroid=false, isRealDevice=false)]) *****
2021-01-26 17:11:01.334  INFO 45226 --- [   scheduling-1] c.l.slave.service.DeviceSyncProcessor    : ***** 1211 ms taken to send data DeviceUpdateRequest(ip=192.168.0.102, androidRealDevices=[], androidEmulators=[], iosRealDevices=[], iosSimulators=[IOSDeviceProperty(deviceId=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, sdkVersion=14.1, manufacturer=Apple, isAndroid=false, isRealDevice=false)]) *****
2021-01-26 17:11:16.179  INFO 45226 --- [   scheduling-1] c.l.slave.service.DeviceSyncProcessor    : ***** 1178 ms taken to send data DeviceUpdateRequest(ip=192.168.0.102, androidRealDevices=[], androidEmulators=[], iosRealDevices=[], iosSimulators=[IOSDeviceProperty(deviceId=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, sdkVersion=14.1, manufacturer=Apple, isAndroid=false, isRealDevice=false)]) *****
2021-01-26 17:11:31.182  INFO 45226 --- [   scheduling-1] c.l.slave.service.DeviceSyncProcessor    : ***** 1181 ms taken to send data DeviceUpdateRequest(ip=192.168.0.102, androidRealDevices=[], androidEmulators=[], iosRealDevices=[], iosSimulators=[IOSDeviceProperty(deviceId=E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB, sdkVersion=14.1, manufacturer=Apple, isAndroid=false, isRealDevice=false)]) *****
2021-01-26 17:11:31.806 ERROR 45226 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : listening on port '4736' timed out after '60 seconds'
2021-01-26 17:11:32.809 ERROR 45226 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : ********* bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b ::: unable to start appium process for device 'E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB' *********
com.lampo.slave.model.DeviceManagerException: unable to start appium service for device 'E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB'
    at com.lampo.slave.service.AppiumSessionService.createAppiumSession(AppiumSessionService.java:142)
    at com.lampo.slave.controller.AppiumController.createAppiumSession(AppiumController.java:85)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:832)
2021-01-26 17:11:32.814 ERROR 45226 --- [nio-5252-exec-4] c.l.s.s.DeviceManagerExceptionHandler    : unable to start appium service for device 'E2F4CE15-CBAF-4F6E-9510-7CC6265B5ABB'
sarathpharmeasy commented 3 years ago

@WasiqB Thanks for reporting. Looking into this issue and we'll fix it in 2 days.

sarathpharmeasy commented 3 years ago

@WasiqB Can you please share the name of the device that gets displayed like the below?

image

WasiqB commented 3 years ago

@sarathpurushothaman , This is the screenshot of listed devices in the dashboard.

Screenshot 2021-01-23 at 4 14 27 PM
sarath21 commented 3 years ago

Hi @WasiqB Were you able to allocate/unallocate the connected redmi device and android emulator successfully? I tried to replicate the issue and I couldn't do it. Please find the attached devices that I tried. I used the same request that you have added in the description.

Screenshot 2021-02-12 at 10 49 37 PM

Also, can you please try with the following request once and let me know if it works.

curl -L -iX POST "http://localhost:5353/remote-device-manager/appium/allocate?timeout=120" \
 --header "content-type: application/json" \
 --header "x-device-request-id: bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b" \
 --header "x-request-user: Wasiq" \
 --header "x-forwarded-for: localhost" \
 --data '{
     "is_android": "false",
     "is_real_device": "",
     "brand": "",
     "version": "",
     "device_name": "iPhone",
     "clear_user_data": false,
     "app_package": null
 }'

and

curl -L -iX POST "http://localhost:5353/remote-device-manager/appium/allocate?timeout=120" \
 --header "content-type: application/json" \
 --header "x-device-request-id: bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b" \
 --header "x-request-user: Wasiq" \
 --header "x-forwarded-for: localhost" \
 --data '{
     "is_android": "false",
     "is_real_device": "",
     "brand": "",
     "version": "",
     "device_name": "iPhone 12",
     "clear_user_data": false,
     "app_package": null
 }'
WasiqB commented 3 years ago

Description

I tried what you suggested but still got same Error. So I created a Postman request manually.

Postman screenshot

image

Response

{
  "error": "request id 'bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b' for user 'Wasiq' from 'localhost' ::: unable to allocate device for request 'DeviceRequest(isAndroid=false, isRealDevice=false, brand=Apple, version=14.4, deviceName=iPhone 12 Pro, clearUserData=false, appPackage=null)' even after '60 seconds'"
}

Slave logs

2021-04-10 19:18:01.311  INFO 80424 --- [   scheduling-1] c.l.slave.service.DeviceSyncProcessor    : ***** 1307 ms taken to send data DeviceUpdateRequest(ip=192.168.0.103, androidRealDevices=[], androidEmulators=[], iosRealDevices=[], iosSimulators=[IOSDeviceProperty(deviceId=51FF7D1C-3805-4C4F-9E86-DF7DDC4AC856, sdkVersion=14.4, manufacturer=Apple, isAndroid=false, isRealDevice=false)]) *****
2021-04-10 19:18:02.003 ERROR 80424 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : listening on port '4736' timed out after '60 seconds'
2021-04-10 19:18:03.004 ERROR 80424 --- [nio-5252-exec-4] c.l.s.utils.AppiumLocalService$Builder   : ********* bc530bf2-aafb-4e5f-a3bf-20db63cf2e6b ::: unable to start appium process for device '51FF7D1C-3805-4C4F-9E86-DF7DDC4AC856' *********
com.lampo.slave.model.DeviceManagerException: unable to start appium service for device '51FF7D1C-3805-4C4F-9E86-DF7DDC4AC856'
    at com.lampo.slave.service.AppiumSessionService.createAppiumSession(AppiumSessionService.java:142)
    at com.lampo.slave.controller.AppiumController.createAppiumSession(AppiumController.java:85)

Dashboard screenshot

image