def test_mount_when_drive_locked_raise_exception(self): tape_drive = self.create_tape_drive() tape_drive.locked = True tape_drive.save(update_fields=['locked']) storage_medium = self.create_storage_medium(tape_drive) with self.assertRaises(TapeDriveLockedError): mount_tape_medium_into_drive(tape_drive.pk, storage_medium.pk, 120)
def MountTape(self, medium_id, drive_id=None, timeout=120): if drive_id is None: drive = TapeDrive.objects.filter( status=20, storage_medium__isnull=True, io_queue_entry__isnull=True, locked=False, ).order_by('num_of_mounts').first() if drive is None: raise ValueError('No tape drive available') drive_id = drive.pk mount_tape_medium_into_drive(drive_id, medium_id, timeout)
def test_mount_when_mount_tape_raise_exception(self, mock_mount_tape): mock_mount_tape.side_effect = BaseException tape_drive = self.create_tape_drive() storage_medium = self.create_storage_medium(tape_drive) with self.assertRaises(BaseException): mount_tape_medium_into_drive(tape_drive.pk, storage_medium.pk, 120) # Refresh from DB storage_medium.refresh_from_db() storage_medium.tape_slot.refresh_from_db() tape_drive.refresh_from_db() mock_mount_tape.assert_called_once_with("robot_device", 12, 2) self.assertEqual(tape_drive.locked, False) self.assertEqual(storage_medium.status, 100) self.assertEqual(tape_drive.locked, False) self.assertEqual(tape_drive.status, 100) self.assertEqual(storage_medium.tape_slot.status, 100)
def test_mount_success(self, mount_tape, wait_to_come_online, write_medium_label_to_drive): tape_drive = self.create_tape_drive() storage_medium = self.create_storage_medium(tape_drive) before = timezone.now() mount_tape_medium_into_drive(tape_drive.pk, storage_medium.pk, 121) after = timezone.now() # Refresh from DB storage_medium.refresh_from_db() storage_medium.tape_slot.refresh_from_db() tape_drive.refresh_from_db() mount_tape.assert_called_once_with("robot_device", 12, 2) wait_to_come_online.assert_called_once_with("unique_char", 121) self.assertEqual(tape_drive.num_of_mounts, 1) self.assertEqual(tape_drive.locked, True) self.assertTrue(before <= tape_drive.last_change <= after) self.assertEqual(storage_medium.num_of_mounts, 1) self.assertEqual(storage_medium.tape_drive_id, tape_drive.pk)
def run(self, medium=None, drive=None, timeout=120): mount_tape_medium_into_drive(drive, medium, timeout)