Общие сведения

ВступлениеПодготовка к запускуАрхитектура платформы TestoПорядок запускаПолитика запуска тестов

Обучающие материалы по Testo для Hyper-V

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Доступ в Интернет из виртуальной машиныЧасть 4. Гостевые дополненияЧасть 5. ПараметрыЧасть 6. КешированиеЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. Циклы

Обучающие материалы по Testo для QEMU

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Гостевые дополненияЧасть 4. ПараметрыЧасть 5. КешированиеЧасть 6. Доступ в Интернет из виртуальной машиныЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. ЦиклыЧасть 16. Макросы с объявлениями

Спецификация языка

Общая структура скриптовых файловБазовые конструкции языкаOбъявление виртуальной машиныОбъявление виртуального флеш-накопителяОбъявление виртуальной сетиПараметрыОбъявление тестовМакросыДействия с виртуальными машинамиДействия с мышкойПоиск изображений на экранеДействия с виртуальными флеш-накопителямиУсловияЦиклыСписок идентификаторов клавиш

Запросы на языке Javascript

Общая концепция построения JS-селекторовВстроенные глобальные функции JavascriptИсключенияКласс TextTensorКласс ImgTensorКласс Point

Объявление виртуального флеш-накопителя

Вступление

Флеш-накопители и работа с ними недоступны для Hyper-V

Виртуальные флеш-накопители чаще всего используются в двух случаях:

  1. Передача данных между виртуальными машинами.
  2. Передача данных между виртуальной машиной и хостом.

Для того, чтобы подключить виртуальную флешку к виртуальной машине (для копирования данных, например), используются действия (un)plug flash в командах виртуальных машин. Для того, чтобы организовать передачу файлов между хостом и виртуальной флешкой, используются действия copyto и copyfrom в командах виртуальных флешек.

Существует возможность сразу скопировать данные с хоста на флешку на этапе её создания. Для этого служит необязательный атрибут folder.

Для ознакомления с работой виртуальных флешек рекомендуется пройти соответствующий туториал.

Формат объявления виртуальных флешек

Для объявления виртуальных флеш-накопителей используется директива flash. Формат директивы выглядит следующим образом:

flash <name> {
  <attr1>: <value1>
  <attr2>: <value1>
  <attr3>: <value1>
  ...
}

Объявление виртуального флеш-накопителя само по себе не ведет к его созданию. Реальное создание произойдет при запуске теста, в котором участвует этот флеш-накопитель.

Объявлять виртуальные флеш-накопители можно и внутри макросов. Подробнее про это можно прочитать здесь.

Виртуальный флеш-накопитель, как и виртуальная машина, требует наличия уникального среди всех виртуальных ресурсов (машины, флешки, сети) имени name. Имя name может быть задано как с помощью идентификатора, так и с помощью строки. В случае, если указывается строка, значение выражения внутри строки должно быть приводимым к идентификатору. Внутри строки можно использовать обращение к параметрам. Имя виртуальной флешки должно быть уникальным среди всех виртуальных сущностей (т.е. виртуальных машин, виртуальных флешек и виртуальных сетей).

Объявление виртуальных флеш-накопителей во многом схоже с объявлением виртуальных машин, но список атрибутов здесь другой:

Обязательные атрибуты

  • size - Тип: спецификатор количества памяти или строка. Размер флешки. В случае, если указывается строка, значение выражения внутри строки должно быть приводимым к спецификатору количества памяти. Внутри строки можно использовать обращение к параметрам.
  • fs - Тип: строка. Тип файловой системы, которая будет использоваться в флеш-накопителе. В настоящий момент поддерживается значения. Внутри строки можно использовать обращение к параметрам. ntfs, fat, vfat, ext3, ext4.

Необязательные атрибуты

  • folder - Тип: строка. Путь к папке в хостовой машине, которую необходимо скопировать на флешку при ее создании. Внутри строки можно использовать обращение к параметрам.

С помощью атрибута folder можно сразу после создания флешки скопировать на неё папку из файловой системы хостовой машины. Копируется только содержимое папки, которое помещается в корневую директорию (/) созданной флешки. Сама папка не копируется. Можно представить себе folder как точку монтирования файловой системы созданной флешки.

Ниже представлены примеры объявления флеш-накопителя:

flash example_flash {
  fs: "ntfs"
  size: 32Mb
  folder: "./some_folder"
}
flash "${flash_name}" {
  fs: "ntfs"
  size: "${size_amount}"
  folder: "./some_folder"
}

Во втором объявлении имя флешки будет зависеть от значения параметра flash_name. Размер флешки также зависит от параметра size_amount, значение которого должено успешно преобразовываться в спецификатор количества памяти. В случае неверного значение сгенерируется ошибка

При работе с виртуальными флеш-накопителями в CentOS вместе с поставляемым по-умолчанию libguestfs недоступно использование виртуальных флеш-накопителей с файловой системой NTFS. Для устранения этого ограничения необходимо скомпилировать libguestfs из исходных кодов с поддержкой NTFS

Кешируемость виртуальных флеш-накопителей

В платформе Testo предусмотрен механизм определения актуальности конфигурации флеш-накопителей. Если с момента последнего запуска конфигурация флеш-накопителя существенно изменилась, то флеш-накопитель необходимо пересоздать, а все тесты, в которых он участвует - прогнать заново. Это одна из проверок, которая определяет актуальность кеша теста.

Ниже приведен список вопросов, которые платформа Testo считает существенными при определении закешированности конфигурации виртуального флеш-накопителя:

  • Изменились ли значения атрибутов fs, size и folder с момента последнего удачного запуска тестов?
  • Изменилось ли содержимое папки, указанной в атрибуте folder, с момента последнего удачного запуска тестов?

Если ответ хотя бы на один из этих вопросов - положительный, то кеш считается неактуальным и флеш-накопитель необходимо создать заново.

Целостность кеша папки folder высчитывается следующим образом. Для всех файлов внутри папки folder (и, рекурсивно, всех подпапок) высчитывается контрольная сумма одним из двух способов. Если размер файла меньше 1 Мегабайта (можно изменить с помощью аргумента командной строки content_cksum_maxsize), то контрольная сумма высчитывается на основе содержимого файла. Иначе - на основе времени последнего изменения файла. Затем к контрольной сумме содержимого добавляется имя файла. Все контрольные суммы всех файлов суммируются и получается контрольная сумма папки folder. Если контрольная сумма поменялась с момента последнего удачного запуска тестов - то кеш папки считается недействительным и всю флешку необходимо создавать заново.