aboutsummaryrefslogtreecommitdiff
path: root/create/local_image_local_instance_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'create/local_image_local_instance_test.py')
-rw-r--r--create/local_image_local_instance_test.py112
1 files changed, 64 insertions, 48 deletions
diff --git a/create/local_image_local_instance_test.py b/create/local_image_local_instance_test.py
index 22dfcf5b..7baf9711 100644
--- a/create/local_image_local_instance_test.py
+++ b/create/local_image_local_instance_test.py
@@ -15,6 +15,7 @@
# limitations under the License.
"""Tests for LocalImageLocalInstance."""
+import builtins
import os
import subprocess
import tempfile
@@ -36,37 +37,37 @@ class LocalImageLocalInstanceTest(driver_test_lib.BaseDriverTest):
LAUNCH_CVD_CMD_WITH_DISK = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -cpus fake -x_res fake -y_res fake -dpi fake -memory_mb fake -blank_data_image_mb fake -data_policy always_create -start_vnc_server=true
+bin/cvd start -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -cpus fake -x_res fake -y_res fake -dpi fake -memory_mb fake -blank_data_image_mb fake -data_policy always_create -start_vnc_server=true
EOF"""
LAUNCH_CVD_CMD_NO_DISK = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -cpus fake -x_res fake -y_res fake -dpi fake -memory_mb fake -start_vnc_server=true
+bin/cvd start -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -cpus fake -x_res fake -y_res fake -dpi fake -memory_mb fake -start_vnc_server=true
EOF"""
LAUNCH_CVD_CMD_NO_DISK_WITH_GPU = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -cpus fake -x_res fake -y_res fake -dpi fake -memory_mb fake -start_vnc_server=true
+bin/cvd start -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -cpus fake -x_res fake -y_res fake -dpi fake -memory_mb fake -start_vnc_server=true
EOF"""
LAUNCH_CVD_CMD_WITH_WEBRTC = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=auto -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_webrtc=true
+bin/cvd start -daemon -config=auto -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_webrtc=true
EOF"""
LAUNCH_CVD_CMD_WITH_MIXED_IMAGES = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_vnc_server=true -super_image=fake_super_image -boot_image=fake_boot_image
+bin/cvd start -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_vnc_server=true -super_image=fake_super_image -boot_image=fake_boot_image -vendor_boot_image=fake_vendor_boot_image
EOF"""
LAUNCH_CVD_CMD_WITH_ARGS = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_vnc_server=true -setupwizard_mode=REQUIRED
+bin/cvd start -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_vnc_server=true -setupwizard_mode=REQUIRED
EOF"""
LAUNCH_CVD_CMD_WITH_OPENWRT = """sg group1 <<EOF
sg group2
-launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_vnc_server=true -console=true
+bin/launch_cvd -daemon -config=phone -system_image_dir fake_image_dir -instance_dir fake_cvd_dir -undefok=report_anonymous_usage_stats,config -report_anonymous_usage_stats=y -start_vnc_server=true -console=true
EOF"""
_EXPECTED_DEVICES_IN_REPORT = [
@@ -117,7 +118,8 @@ EOF"""
"""Test _CreateAVD."""
mock_utils.IsSupportedPlatform.return_value = True
mock_get_image.return_value = local_image_local_instance.ArtifactPaths(
- "/image/path", "/host/bin/path", "host/usr/path", None, None, None, None)
+ "/image/path", "/host/bin/path", "host/usr/path",
+ None, None, None, None, None)
mock_check_running_cvd.return_value = True
mock_avd_spec = mock.Mock()
mock_lock = mock.Mock()
@@ -198,7 +200,8 @@ EOF"""
"/instances/cvd/config")
artifact_paths = local_image_local_instance.ArtifactPaths(
"/image/path", "/host/bin/path", "/host/usr/path", "/misc/info/path",
- "/ota/tools/dir", "/system/image/path", "/boot/image/path")
+ "/ota/tools/dir", "/system/image/path", "/boot/image/path",
+ "/vendor_boot/image/path")
mock_ota_tools_object = mock.Mock()
mock_ota_tools.OtaTools.return_value = mock_ota_tools_object
mock_avd_spec = mock.Mock(
@@ -287,24 +290,29 @@ EOF"""
mock_avd_spec)
mock_ota_tools.FindOtaToolsDir.assert_not_called()
- self.assertEqual(paths, (image_dir, cvd_dir, cvd_dir, None, None, None, None))
+ self.assertEqual(paths, (image_dir, cvd_dir, cvd_dir,
+ None, None, None, None, None))
@mock.patch("acloud.create.local_image_local_instance.ota_tools")
- def testGetImageFromBuildEnvironment(self, mock_ota_tools):
+ @mock.patch("acloud.create.local_image_local_instance.cvd_utils")
+ def testGetImageFromBuildEnvironment(self, mock_cvd_utils, mock_ota_tools):
"""Test GetImageArtifactsPath with files in build environment."""
+ boot_image_path = "/mock/boot.img"
+ vendor_boot_image_path = "/mock/vendor_boot.img"
+ mock_cvd_utils.FindBootImages.return_value = (boot_image_path,
+ vendor_boot_image_path)
+
with tempfile.TemporaryDirectory() as temp_dir:
image_dir = os.path.join(temp_dir, "image")
cvd_dir = os.path.join(temp_dir, "cvd-host_package")
mock_ota_tools.FindOtaToolsDir.return_value = cvd_dir
extra_image_dir = os.path.join(temp_dir, "extra_image")
system_image_path = os.path.join(extra_image_dir, "system.img")
- boot_image_path = os.path.join(extra_image_dir, "boot.img")
misc_info_path = os.path.join(image_dir, "misc_info.txt")
self._CreateEmptyFile(os.path.join(image_dir, "vbmeta.img"))
self._CreateEmptyFile(os.path.join(cvd_dir, "bin", "launch_cvd"))
self._CreateEmptyFile(os.path.join(cvd_dir, "usr/share/webrtc/certs", "server.crt"))
self._CreateEmptyFile(system_image_path)
- self._CreateEmptyFile(boot_image_path)
self._CreateEmptyFile(os.path.join(extra_image_dir,
"boot-debug.img"))
self._CreateEmptyFile(misc_info_path)
@@ -324,29 +332,33 @@ EOF"""
mock_avd_spec)
mock_ota_tools.FindOtaToolsDir.assert_called_with([cvd_dir, "/cvd"])
+ mock_cvd_utils.FindBootImages.asssert_called_with(extra_image_dir)
self.assertEqual(paths,
(image_dir, cvd_dir, cvd_dir, misc_info_path, cvd_dir,
- system_image_path, boot_image_path))
+ system_image_path, boot_image_path,
+ vendor_boot_image_path))
@mock.patch("acloud.create.local_image_local_instance.ota_tools")
- def testGetImageFromTargetFiles(self, mock_ota_tools):
+ @mock.patch("acloud.create.local_image_local_instance.cvd_utils")
+ def testGetImageFromTargetFiles(self, mock_cvd_utils, mock_ota_tools):
"""Test GetImageArtifactsPath with extracted target files."""
ota_tools_dir = "/mock_ota_tools"
mock_ota_tools.FindOtaToolsDir.return_value = ota_tools_dir
+ boot_image_path = "/mock/boot.img"
+ mock_cvd_utils.FindBootImages.return_value = (boot_image_path, None)
with tempfile.TemporaryDirectory() as temp_dir:
image_dir = os.path.join(temp_dir, "image")
cvd_dir = os.path.join(temp_dir, "cvd-host_package")
system_image_path = os.path.join(temp_dir, "system", "test.img")
misc_info_path = os.path.join(image_dir, "META", "misc_info.txt")
- boot_image_path = os.path.join(temp_dir, "boot", "test.img")
+
self._CreateEmptyFile(os.path.join(image_dir, "IMAGES",
"vbmeta.img"))
self._CreateEmptyFile(os.path.join(cvd_dir, "bin", "launch_cvd"))
self._CreateEmptyFile(os.path.join(cvd_dir, "usr/share/webrtc/certs", "server.crt"))
self._CreateEmptyFile(system_image_path)
self._CreateEmptyFile(misc_info_path)
- self._CreateEmptyFile(boot_image_path)
mock_avd_spec = mock.Mock(
local_image_dir=image_dir,
@@ -362,10 +374,11 @@ EOF"""
mock_ota_tools.FindOtaToolsDir.assert_called_with(
[ota_tools_dir, cvd_dir])
+ mock_cvd_utils.FindBootImages.assert_called_with(boot_image_path)
self.assertEqual(paths,
(os.path.join(image_dir, "IMAGES"), cvd_dir, cvd_dir,
misc_info_path, ota_tools_dir, system_image_path,
- boot_image_path))
+ boot_image_path, None))
@mock.patch.object(utils, "CheckUserInGroups")
def testPrepareLaunchCVDCmd(self, mock_usergroups):
@@ -374,50 +387,61 @@ EOF"""
hw_property = {"cpu": "fake", "x_res": "fake", "y_res": "fake",
"dpi":"fake", "memory": "fake", "disk": "fake"}
constants.LIST_CF_USER_GROUPS = ["group1", "group2"]
+ mock_artifact_paths = mock.Mock(
+ spec=[],
+ image_dir="fake_image_dir",
+ host_bins="",
+ host_artifacts="host_artifacts",
+ misc_info=None,
+ ota_tools_dir=None,
+ system_image=None,
+ boot_image=None,
+ vendor_boot_image=None)
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, hw_property, True, "fake_image_dir",
- "fake_cvd_dir", False, True, None, None, None, "phone")
+ hw_property, True, mock_artifact_paths, "fake_cvd_dir", False,
+ True, None, None, "phone")
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_WITH_DISK)
# "disk" doesn't exist in hw_property.
hw_property = {"cpu": "fake", "x_res": "fake", "y_res": "fake",
"dpi": "fake", "memory": "fake"}
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, hw_property, True, "fake_image_dir",
- "fake_cvd_dir", False, True, None, None, None, "phone")
+ hw_property, True, mock_artifact_paths, "fake_cvd_dir", False,
+ True, None, None, "phone")
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_NO_DISK)
# "gpu" is enabled with "default"
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, hw_property, True, "fake_image_dir",
- "fake_cvd_dir", False, True, None, None, None, "phone")
+ hw_property, True, mock_artifact_paths, "fake_cvd_dir", False,
+ True, None, None, "phone")
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_NO_DISK_WITH_GPU)
# Following test with hw_property is None.
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, None, True, "fake_image_dir",
- "fake_cvd_dir", True, False, None, None, None, "auto")
+ None, True, mock_artifact_paths, "fake_cvd_dir", True, False,
+ None, None, "auto")
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_WITH_WEBRTC)
+ mock_artifact_paths.boot_image = "fake_boot_image"
+ mock_artifact_paths.vendor_boot_image = "fake_vendor_boot_image"
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, None, True, "fake_image_dir",
- "fake_cvd_dir", False, True, "fake_super_image", "fake_boot_image",
- None, "phone")
+ None, True, mock_artifact_paths, "fake_cvd_dir", False, True,
+ "fake_super_image", None, "phone")
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_WITH_MIXED_IMAGES)
+ mock_artifact_paths.boot_image = None
+ mock_artifact_paths.vendor_boot_image = None
# Add args into launch command with "-setupwizard_mode=REQUIRED"
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, None, True, "fake_image_dir",
- "fake_cvd_dir", False, True, None, None,
- "-setupwizard_mode=REQUIRED", "phone")
+ None, True, mock_artifact_paths, "fake_cvd_dir", False, True,
+ None, "-setupwizard_mode=REQUIRED", "phone")
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_WITH_ARGS)
- # Test with "openwrt" is enabled.
+ # Test with "openwrt" and "use_launch_cvd" are enabled.
launch_cmd = self.local_image_local_instance.PrepareLaunchCVDCmd(
- constants.CMD_LAUNCH_CVD, None, True, "fake_image_dir",
- "fake_cvd_dir", False, True, None, None, None,
- "phone", openwrt=True)
+ None, True, mock_artifact_paths, "fake_cvd_dir", False, True,
+ None, None, "phone", openwrt=True, use_launch_cvd=True)
self.assertEqual(launch_cmd, self.LAUNCH_CVD_CMD_WITH_OPENWRT)
@mock.patch.object(utils, "GetUserAnswerYes")
@@ -444,6 +468,7 @@ EOF"""
@mock.patch.dict("os.environ", clear=True)
def testLaunchCVD(self, mock_popen):
"""test _LaunchCvd should call subprocess.Popen with the env."""
+ self.Patch(builtins, "open", mock.mock_open())
local_instance_id = 3
launch_cvd_cmd = "launch_cvd"
host_bins_path = "host_bins_path"
@@ -466,23 +491,15 @@ EOF"""
cvd_home_dir,
timeout)
- mock_popen.assert_called_once_with(launch_cvd_cmd,
- shell=True,
- env=cvd_env,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- text=True,
- cwd=host_bins_path)
+ mock_popen.assert_called_once()
mock_proc.communicate.assert_called_once_with(timeout=timeout)
@mock.patch("acloud.create.local_image_local_instance.subprocess.Popen")
def testLaunchCVDFailure(self, mock_popen):
"""test _LaunchCvd with subprocess errors."""
+ self.Patch(builtins, "open", mock.mock_open())
mock_proc = mock.Mock(returncode=9)
mock_popen.return_value = mock_proc
- mock_proc.communicate.side_effect = [
- ("stdout", "first line" + ("\n" * 10) + "last line\n")
- ]
with self.assertRaises(errors.LaunchCVDFail) as launch_cvd_failure:
self.local_image_local_instance._LaunchCvd("launch_cvd",
3,
@@ -491,13 +508,12 @@ EOF"""
"cvd_home_dir",
100)
self.assertIn("returned 9", str(launch_cvd_failure.exception))
- self.assertNotIn("first line", str(launch_cvd_failure.exception))
- self.assertIn("last line", str(launch_cvd_failure.exception))
@mock.patch("acloud.create.local_image_local_instance.list_instance")
@mock.patch("acloud.create.local_image_local_instance.subprocess.Popen")
def testLaunchCVDTimeout(self, mock_popen, mock_list_instance):
"""test _LaunchCvd with subprocess timeout."""
+ self.Patch(builtins, "open", mock.mock_open())
mock_proc = mock.Mock(returncode=255)
mock_popen.return_value = mock_proc
mock_proc.communicate.side_effect = [