Coverage for delete/delete.py : 62 -> 99%
Bug: 202820293
Test: . run_test.sh
Change-Id: I7c94f1883cf5342fc470a2068a59210f36657259
diff --git a/delete/delete_test.py b/delete/delete_test.py
index 01282f3..d216669 100644
--- a/delete/delete_test.py
+++ b/delete/delete_test.py
@@ -20,9 +20,13 @@
from acloud import errors
from acloud.delete import delete
+from acloud.internal.lib import cvd_compute_client_multi_stage
from acloud.internal.lib import driver_test_lib
from acloud.internal.lib import oxygen_client
+from acloud.internal.lib import utils
from acloud.list import list as list_instances
+from acloud.public import config
+from acloud.public import device_driver
from acloud.public import report
@@ -52,6 +56,10 @@
mock_lock.SetInUse.assert_called_once_with(False)
mock_lock.Unlock.assert_called_once()
+ mock_lock.Lock.return_value = False
+ delete.DeleteLocalCuttlefishInstance(instance_object, delete_report)
+ self.assertEqual(delete_report.status, "FAIL")
+
def testDeleteLocalCuttlefishInstanceFailure(self):
"""Test DeleteLocalCuttlefishInstance with command failure."""
instance_object = mock.MagicMock()
@@ -99,6 +107,10 @@
mock_lock.SetInUse.assert_called_once_with(False)
mock_lock.Unlock.assert_called_once()
+ mock_lock.Lock.return_value = False
+ delete.DeleteLocalGoldfishInstance(mock_instance, delete_report)
+ self.assertEqual(delete_report.status, "FAIL")
+
def testDeleteLocalGoldfishInstanceFailure(self):
"""Test DeleteLocalGoldfishInstance with adb command failure."""
mock_adb_tools = mock.Mock()
@@ -143,6 +155,10 @@
mock_lock.SetInUse.assert_called_once_with(False)
mock_lock.Unlock.assert_called_once()
+ mock_lock.Lock.return_value = False
+ delete.ResetLocalInstanceLockByName("unittest", delete_report)
+ self.assertEqual(delete_report.status, "FAIL")
+
def testResetLocalInstanceLockByNameFailure(self):
"""test ResetLocalInstanceLockByName with an invalid name."""
self.Patch(list_instances, "GetLocalInstanceLockByName",
@@ -296,6 +312,136 @@
delete._ReleaseOxygenDevice(cfg, instances, ip)
mock_release.assert_called_once()
+ mock_release.side_effect = subprocess.CalledProcessError(
+ 0, "fake_cmd",
+ "Error received while trying to release device: error_msg")
+ delete_report = delete._ReleaseOxygenDevice(cfg, instances, ip)
+ self.assertEqual(delete_report.errors, ["error_msg"])
+
+ mock_release.side_effect = subprocess.CalledProcessError(
+ 0, "fake_cmd",
+ "error")
+ delete_report = delete._ReleaseOxygenDevice(cfg, instances, ip)
+ self.assertEqual(delete_report.status, "FAIL")
+
+ def testDeleteInstances(self):
+ """test DeleteInstances."""
+ fake_ins = mock.MagicMock()
+ fake_ins.islocal = False
+ fake_ins.avd_type = "cuttlefish"
+ fake_ins.vnc_port = None
+
+ fake_ins2 = mock.MagicMock()
+ fake_ins2.islocal = True
+ fake_ins2.avd_type = "cuttlefish"
+ fake_ins2.vnc_port = None
+
+ fake_ins3 = mock.MagicMock()
+ fake_ins3.islocal = True
+ fake_ins3.avd_type = "goldfish"
+ fake_ins3.vnc_port = None
+
+ fake_ins4 = mock.MagicMock()
+ fake_ins4.islocal = True
+ fake_ins4.avd_type = "unknown"
+ fake_ins4.vnc_port = 12345
+
+ self.Patch(delete, "DeleteLocalGoldfishInstance")
+ self.Patch(delete, "DeleteLocalCuttlefishInstance")
+ self.Patch(delete, "DeleteRemoteInstances")
+ self.Patch(utils, "CleanupSSVncviewer")
+
+ fake_instances_to_delete = []
+ delete.DeleteInstances(None, fake_instances_to_delete)
+ delete.DeleteRemoteInstances.assert_not_called()
+
+ fake_instances_to_delete = [
+ fake_ins, fake_ins2, fake_ins3, fake_ins4]
+ delete.DeleteInstances(None, fake_instances_to_delete)
+ delete.DeleteRemoteInstances.assert_called_once()
+ delete.DeleteLocalGoldfishInstance.assert_called_once()
+ delete.DeleteLocalCuttlefishInstance.assert_called_once()
+ utils.CleanupSSVncviewer.assert_called_once()
+
+ def testDeleteRemoteInstances(self):
+ """test DeleteRemoteInstances."""
+ fake_cfg = mock.MagicMock()
+ fake_cfg.SupportRemoteInstance = mock.MagicMock()
+ fake_cfg.SupportRemoteInstance.return_value = True
+ fake_instances_to_delete = ["fake_ins"]
+ delete_report = report.Report(command="delete")
+ self.Patch(device_driver, "DeleteAndroidVirtualDevices",
+ return_value=delete_report)
+ delete.DeleteRemoteInstances(fake_cfg, fake_instances_to_delete)
+ device_driver.DeleteAndroidVirtualDevices.assert_called_once()
+
+ fake_cfg.SupportRemoteInstance.return_value = False
+ self.assertRaises(errors.ConfigError,
+ delete.DeleteRemoteInstances,
+ fake_cfg, fake_instances_to_delete)
+
+ def testRun(self):
+ """test Run."""
+ args = mock.MagicMock()
+ args.oxygen = False
+ args.instance_names = None
+ args.remote_host = None
+ args.local_only = True
+ args.adb_port = None
+ args.all = True
+
+ self.Patch(delete, "_ReleaseOxygenDevice")
+ self.Patch(delete, "DeleteInstanceByNames")
+ self.Patch(cvd_compute_client_multi_stage.CvdComputeClient,
+ "ParseRemoteHostAddress")
+ self.Patch(delete, "CleanUpRemoteHost")
+ fake_cfg = mock.MagicMock()
+ fake_cfg.SupportRemoteInstance = mock.MagicMock()
+ self.Patch(config, "GetAcloudConfig", return_value=fake_cfg)
+ self.Patch(list_instances, "GetLocalInstances",
+ return_value=[])
+ self.Patch(list_instances, "GetRemoteInstances",
+ return_value=["remote_instances"])
+ self.Patch(list_instances, "FilterInstancesByAdbPort",
+ return_value=["filter_by_port_instance"])
+ self.Patch(list_instances, "ChooseInstancesFromList",
+ return_value=["choice_instance"])
+ self.Patch(delete, "DeleteInstances")
+
+ delete.Run(args)
+ delete.DeleteInstances.assert_called_with(fake_cfg, [])
+
+ list_instances.GetLocalInstances.return_value = ["local_instances"]
+ delete.Run(args)
+ delete.DeleteInstances.assert_called_with(fake_cfg, ["local_instances"])
+
+ args.all = False
+ delete.Run(args)
+ delete.DeleteInstances.assert_called_with(fake_cfg, ["choice_instance"])
+
+ args.adb_port = "12345"
+ delete.Run(args)
+ delete.DeleteInstances.assert_called_with(fake_cfg, ["filter_by_port_instance"])
+
+ args.local_only = False
+ args.all = True
+ args.adb_port = None
+ delete.Run(args)
+ delete.DeleteInstances.assert_called_with(
+ fake_cfg, ["local_instances", "remote_instances"])
+
+ args.remote_host = True
+ delete.Run(args)
+ delete.CleanUpRemoteHost.assert_called_once()
+
+ args.instance_names = ["fake_ins_name"]
+ delete.Run(args)
+ delete.DeleteInstanceByNames.assert_called_once()
+
+ args.oxygen = True
+ delete.Run(args)
+ delete._ReleaseOxygenDevice.assert_called_once()
+
if __name__ == "__main__":
unittest.main()