fix NullPointerException in RemoteAndroidVirtualDevice.getDeviceDescriptor

I saw the following exception when running a test.

  java.lang.NullPointerException: Cannot invoke "com.android.tradefed.command.remote.DeviceDescriptor.getSerial()" because "descriptor" is null
      at com.android.tradefed.device.cloud.RemoteAndroidVirtualDevice.getDeviceDescriptor(RemoteAndroidVirtualDevice.java:76)
      at com.android.tradefed.device.NativeDevice.getDeviceDescriptor(NativeDevice.java:5414)
      at com.android.tradefed.device.connection.AdbSshConnection.restoreSnapshotGce(AdbSshConnection.java:807)
      at com.android.tradefed.device.internal.DeviceSnapshotFeature.restoreSnapshotGce(DeviceSnapshotFeature.java:238)
      at com.android.tradefed.device.internal.DeviceSnapshotFeature.restoreSnapshot(DeviceSnapshotFeature.java:190)
      at com.android.tradefed.device.internal.DeviceSnapshotFeature.execute(DeviceSnapshotFeature.java:109)
      at com.android.tradefed.service.TradefedFeatureServer.createResponse(TradefedFeatureServer.java:186)
      at com.android.tradefed.service.TradefedFeatureServer.triggerFeature(TradefedFeatureServer.java:115)
      at com.proto.tradefed.feature.TradefedInformationGrpc$MethodHandlers.invoke(TradefedInformationGrpc.java:228)
      at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182)
      at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:346)
      at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:860)
      at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
      at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
      at java.base/java.lang.Thread.run(Thread.java:833)

Test: m tradefed
Change-Id: I1f431db6736c5ea9048c7fcac90ac116f47c7a37
1 file changed
tree: d92b1df7d304c7ac2bb67976ba71861ae8dbc267
  1. aoa_helper/
  2. atest_proto/
  3. clearcut_client/
  4. common_util/
  5. device_build_interfaces/
  6. external_dependencies/
  7. global_configuration/
  8. invocation_interfaces/
  9. isolation/
  10. javatests/
  11. lite/
  12. proto/
  13. reference_tests/
  14. remote/
  15. res/
  16. src/
  17. test_framework/
  18. test_observatory/
  19. test_result_interfaces/
  20. tools/
  21. util_apps/
  22. .classpath
  23. .gitignore
  24. .project
  25. Android.bp
  26. Android.mk
  27. aosp_sha.sh
  28. atest_tradefed.sh
  29. CleanSpec.mk
  30. error_prone_rules.mk
  31. MANIFEST.mf
  32. MULTIUSER_OWNERS
  33. OWNERS
  34. PREUPLOAD.cfg
  35. pylintrc
  36. README.md
  37. run_tf_cmd.sh
  38. script_help.sh
  39. TEST_MAPPING
  40. tradefed.sh
  41. tradefed_win.bat
README.md

Trade Federation (TF / Tradefed)

TF is a test harness used to drive Android automated testing. It runs on test hosts and monitors the connected devices, handling test scheduling & execution and device management.

Other test harnesses like Compatibility Test Suite (CTS) and Vendor Test Suite (VTS) use TF as a basis and extend it for their particular needs.

Building TF:

  • source build/envsetup.sh
  • tapas tradefed-all
  • make -j8

Getting Code Reviewed

1. Create your change in Gerrit
2. Add the reviewer named "Tradefed Codereview" (email: tradefed-codereview@tradefederation.google.com.iam.gserviceaccount.com)
3. Review the code review guidance at go/tf-guidelines and go/tradefed-code-reviews
4. GWSQ should add a couple of people from the team to review your code and give feedback.

More information

More information at: https://source.android.com/docs/core/tests/tradefed/

See more details about Tradefed Architecture at: https://source.android.com/docs/core/tests/tradefed/architecture

If you are a tests writer you should start looking in the test_framework/ component which contains everything needed to write a tests in Tradefed.