def test_run_container(channel, img, gpu): with TempDir() as tmp: args = Arguments( channel, img, tmp, None, False, "", gpu, True, False, False, "us-docker.pkg.dev/android-emulator-268719/images", False, False, ) emu_docker.accept_licenses(args) devices = emu_docker.create_docker_image(args) assert devices for device in devices: port = find_free_port() # Launch this thing. container = device.launch({"5555/tcp": port}) # Now we are going to insepct this thing. api_client = device.get_api_client() status = api_client.inspect_container(container.id) state = status["State"] assert state["Status"] == "running" # Acceptable states: # starting --> We are still launching # healthy --> Yay, we booted! Good to go.. health = state["Health"]["Status"] while health == "starting": health = api_client.inspect_container( container.id)["State"]["Health"]["Status"] assert health == "healthy" # Good, good.. From an internal perspective things look great. # Can we connect with adb from outside the container? adb = find_adb() # Erase knowledge of existing devices. subprocess.check_output([adb, "kill-server"]) name = "localhost:{}".format(port) subprocess.check_output([adb, "connect", name]) # Boot complete should be true.. res = subprocess.check_output( [adb, "-s", name, "shell", "getprop", "dev.bootcomplete"]) assert "1" in str(res) api_client.stop(container.id)
def test_run_container(channel, img): assert not "linux" in sys.platform assert docker.from_env().ping() with TempDir() as tmp: args = Arguments(channel, img, tmp, None, False, "") device = emu_docker.create_docker_image(args) port = find_free_port() # Launch this thing. device.launch(device.identity, port) # Now we are going to insepct this thing. api_client = device.get_api_client() status = api_client.inspect_container(device.container.id) state = status["State"] assert state["Status"] == "running" # Acceptable states: # starting --> We are still launching # healthy --> Yay, we booted! Good to go.. health = state["Health"]["Status"] while health == "starting": health = api_client.inspect_container( device.container.id)["State"]["Health"]["Status"] assert health == "healthy" # Good, good.. From an internal perspective things look great. # Can we connect with adb from outside the container? adb = find_adb() # Erase knowledge of existing devices. subprocess.check_output([adb, "kill-server"]) name = "localhost:{}".format(port) subprocess.check_output([adb, "connect", name]) # Boot complete should be true.. res = subprocess.check_output( [adb, "-s", name, "shell", "getprop", "dev.bootcomplete"]) assert "1" in str(res) api_client.stop(device.container.id)