virt-v2v-test-harness(1)

НАЗВА
virt-v2v-test-harness — використовується для тестування virt-v2v на прикладах з реального життя

КОРОТКИЙ ОПИС
 open V2v_test_harness

 let test = "rhel_45_i386_fv"
 let test_plan = {
   default_plan with
     boot_plan = Boot_to_screenshot (test ^ "-login.ppm")
 }

 let () = run ~test ~test_plan ()

ОПИС
virt-v2v(1) перетворює фізичні машини зі сторонніх гіпервізорів для запуску під керуванням libvirt, OpenStack, oVirt, Red Hat Virtualisation (RHV) або одним із інших призначень.

Virt-v2v-test-harness — невеличка бібліотека (назва модуля: "V2v_test_harness"), яка використовується virt-v2v для обробки набору тестів, які містять справжні віртуальні машини.

Це працює як комплекс тестування: вибирається тест, запускається virt-v2v для нього (у недеструктивний спосіб), потім виконується тестове завантаження результату. Програма переконується, що тест було успішно перетворено, він успішно завантажується і досягає у роботі певного етапу (такого як на еталонному знімку). Програма також може перевірити, чи було під час перетворення створено, змінено або вилучено очікувані файли у гостьовій системі.

  ОТРИМАННЯ ПРИКЛАДІВ ДЛЯ ТЕСТУВАННЯ
Оскільки тести є насправді віртуальними машинами, ми поділили їх на дві групи: тести, які поширюються вільно, і тести, які є пропрієтарними. Перші є образами, подібними до образів Fedora або CentOS, які є вільним програмним забезпеченням. Другі — образи, які подібні до образів Windows або Red Hat Enterprise Linux.

Вільно доступні і поширювати тести можна отримати тут: http://git.annexia.org/?p=virt-v2v-test-cases-free.git ще не є доступними

Пропрієтарні тести можна отримати зі сторінки http://git.annexia.org/?p=virt-v2v-test-cases-nonfree.git У тестах не міститься самих образів пропрієтарних систем, які з причин ліцензування не є загальнодоступними.

Тести є образами дисків із дуже великими розмірами — від 250 МБ до десятків гігабайт кожен. Це означає, що поширення тестів може бути дуже тривалим і вимогливим до ресурсів завданням. Ми використовуємо для поширення образів тестів git-annex(1).

  ВИМОГИ
Для тестування рекомендуємо використовувати бездіяльну машину. Для виконання тестів вам знадобиться доволі багато вільного місця на диску, більше 100 ГБ. Крім того, на тестовій машині має бути багато оперативної пам'яті, принаймні 16 ГБ.

  ОТРИМАННЯ КОМПЛЕКСУ ДЛЯ ТЕСТУВАННЯ
Для запуску тестів вам знадобиться комплекс тестів virt-v2v.

Модуль OCaml називається "V2v_test_harness".

Найпростішим способом є зібрати libguestfs з початкових кодів (Зауваження: не встановлювати її). Тестовий комплекс зберігатиметься у "libguestfs/v2v/test-harness"

Крім того, комплекс тестів можна встановити як модуль OCaml.

  ВИКОНАННЯ ТЕСТУВАННЯ
Щойно ви отримаєте вільно розповсюджувані тести зі сховища, віддайте такі команди:

 ./configure [--with-test-harness=/шлях/до/libguestfs/v2v/test-harness]
 make
 make check -k

Рекомендуємо скористатися параметром -k, щоб тестування не зупинялося після першої ж помилки.

  ПАРАЛЕЛЬНЕ ТЕСТУВАННЯ
Запустити тести паралельно можна за допомогою такої команди:

 make check -k -j<N>

(наприклад -j2, щоб запустити 2 тести паралельно). Будьте обережні із паралельним запуском надто великої кількості тестів — це може спричинити помилки, які не пов'язано із помилковою роботою бібліотеки.

  ТЕСТУВАННЯ ОСНОВНОЇ ГІЛКИ РОЗРОБКИ VIRT-V2V
Використання "make check" призведе до використання виконуваного файла "virt-v2v", який зберігається у одному з каталогів зі змінної середовища $PATH.

Якщо вами було зібрано libguestfs з початкових кодів і ви хочете перевірити зібрану версію virt-v2v, скористайтеся скриптом libguestfs "run" (зберігається у каталозі збирання верхнього рівня у каталозі із початковими кодами libguestfs). Приклад:

 ../libguestfs/run make check -k

НАПИСАННЯ НОВИХ ПРИКЛАДІВ ДЛЯ ТЕСТУВАННЯ
Якщо ви цікавитеся написанням тестів, пропонуємо вам розпочати із отримання вільно розповсюджуваних тестів або, принаймні, ознайомлення з ними у мережі.

Крім того, у вас має бути комплекс для тестування virt-v2v — див. "ОТРИМАННЯ КОМПЛЕКСУ ДЛЯ ТЕСТУВАННЯ" вище.

  ФАЙЛИ КОЖНОГО З ПРИКЛАДІВ ДЛЯ ТЕСТУВАННЯ
Кожен із прикладів для тестування складається з таких компонентів:

тест.img.xz
    Образ диска віртуальної машини до перетворення. Зазвичай, його має бути перетворено у простий формат (raw) і стиснуто за допомогою xz.

тест.ova
    Крім того, можна скористатися OVA, експортованим з VMware.

test.xml
    XML libvirt, який використовується як вхідні дані virt-v2v. Див. обговорення щодо -i libvirtxml на сторінці підручника щодо virt-v2v(1).

test.ppm
    Необов'язковий знімок екрана або знімки екрана.

    Ви можете не надавати «відомі правильні» знімки екрана, надати один або декілька таких знімків, які відповідають проміжним крокам завантаження гостьової системи. Корисно робити такі знімки на етапах, коли гостьова система виконує якісь тривалі дії. Це надасть комплексу тестування дані, за допомогою яких він зможе визначити, чи слід дозволяти гостьовій системі продовжувати завантаження.

    Ви можете не вказувати «остаточний» знімок екрана або вказати один такий знімок. Це часто знімок вікна входу до системи, який вказує на те, що гостьову систему було успішно завантажено.

    Знімки вікон створюються за допомогою virsh(1). Порівняння знімків вікон із еталонними знімками виконується за допомогою програми compare(1) з комплекту ImageMagick.

test.ml
    Сам приклад для тестування — див. нижче.

  НАПИСАННЯ ТЕСТУ
Файл тестування (*.ml) використовується для керування комплексом тестування. Його мінімальна версія виглядає десь так:

 open V2v_test_harness

 let test = "short_name"

 let () = run ~test ()

Це має проінструктувати комплекс тестування про те, що слід:

•   Розпакувати short_name.img.xz

•   Запустити "virt-v2v -i libvirtxml short_name.xml [...]"

•   Завантажити отриману гостьову систему і перевірити, чи виконує вона запис на свій диск і чи стає після цього диск бездіяльним.

Вище наведено надто спрощене тестування. Реалістичнішим варіантом був ви варіант із перевіркою того, чи гостьова система досягла остаточного етапу завантаження (за знімком), наприклад сторінки входу до системи. Для реалізації такої перевірки вам слід вказати параметр "~test_plan":

 open V2v_test_harness

 let test = "short_name"
 let test_plan = {
   default_plan with
     boot_plan = Boot_to_screenshot (test ^ ".ppm")
 }

 let () = run ~test ~test_plan ()

Ще надійніший варіант тестування можна створити, якщо виконуватиметься тестування після перетворення і після завантаження із перевіркою образу диска (за допомогою libguestfs) з метою переконатися, що у образі диска у очікуваний спосіб створюються, змінюються та вилучаються файли. Щоб дізнатися більше про те, як цього досягти, ознайомтеся із вмістом файла V2v_test_harness.mli.

  ФАЙЛИ, ЯКІ СТВОРЮЮТЬСЯ ПІД ЧАС ВИКОНАННЯ ТЕСТУВАННЯ
Під час виконання тестування може бути створено такі файли:

test-yyyymmdd-hhmmss.scrn
    Знімки графічної консолі гостьової операційної системи. Такі знімки корисні для написання тестів або діагностики помилок під час тестування.

    Форматом знімків екрана є Portable Pixmap (PPM).

test.img
    Нестиснений початковий образ диска (до перетворення).

test-converted-sda
test-converted.xml
    Результат перетворення, тобто стан після виконання virt-v2v, але перед тестовим завантаженням гостьової системи. Див. сторінку підручника щодо virt-v2v(1), щоб ознайомитися із описом параметра -o local.

    Формат образу диска — qcow2.

test-booted-sda
    Образ диска після тестового завантаження. Це файл qcow2, у якому з метою заощадження місця на диску використовується як диск резервної пам'яті файл test-converted-sda.

ФАЙЛИ

$ocamllibdir/v2v_test_harness/v2v_test_harness.mli
    Інтерфейс тестування бібліотеки. Ознайомтеся, що дізнатися більше про можливості програмування.

"$ocamllibdir/v2v_test_harness/META"
    Файл META findlib, який надає вам змогу користуватися бібліотекою з ocamlfind(1).

Зауваження: щоб визначити поточне значення $ocamllibdir, віддайте команду "ocamlc -where"

ТАКОЖ ПЕРЕГЛЯНЬТЕ
virt-v2v(1), virt-p2v(1), guestfs(3), virsh(1), compare(1), git-annex(1), http://libguestfs.org/.

АВТОРИ
Richard W.M. Jones http://people.redhat.com/~rjones/

АВТОРСЬКІ ПРАВА
Copyright (C) 2014-2019 Red Hat Inc.

LICENSE

BUGS
To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

•   The version of libguestfs.

•   Where you got libguestfs (eg. which Linux distro, compiled from source, etc)

•   Describe the bug accurately and give a way to reproduce it.

•   Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.