virt-v2v-test-harness(1) | Virtualization Support | 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 тести паралельно). Будьте обережні із паралельним запуском надто великої кількості тестів — це може спричинити помилки, які не пов'язано із помилковою роботою бібліотеки.
Використання "make check" призведе до використання виконуваного файла "virt-v2v", який зберігається у одному з каталогів зі змінної середовища $PATH.
Якщо вами було зібрано libguestfs з початкових кодів і ви хочете перевірити зібрану версію virt-v2v, скористайтеся скриптом libguestfs "run" (зберігається у каталозі збирання верхнього рівня у каталозі із початковими кодами libguestfs). Приклад:
../libguestfs/run make check -k
Якщо ви цікавитеся написанням тестів, пропонуємо вам розпочати із отримання вільно розповсюджуваних тестів або, принаймні, ознайомлення з ними у мережі.
Крім того, у вас має бути комплекс для тестування virt-v2v — див. "ОТРИМАННЯ КОМПЛЕКСУ ДЛЯ ТЕСТУВАННЯ" вище.
Кожен із прикладів для тестування складається з таких компонентів:
Ви можете не надавати «відомі правильні» знімки екрана, надати один або декілька таких знімків, які відповідають проміжним крокам завантаження гостьової системи. Корисно робити такі знімки на етапах, коли гостьова система виконує якісь тривалі дії. Це надасть комплексу тестування дані, за допомогою яких він зможе визначити, чи слід дозволяти гостьовій системі продовжувати завантаження.
Ви можете не вказувати «остаточний» знімок екрана або вказати один такий знімок. Це часто знімок вікна входу до системи, який вказує на те, що гостьову систему було успішно завантажено.
Знімки вікон створюються за допомогою virsh(1). Порівняння знімків вікон із еталонними знімками виконується за допомогою програми compare(1) з комплекту ImageMagick.
Файл тестування (*.ml) використовується для керування комплексом тестування. Його мінімальна версія виглядає десь так:
open V2v_test_harness let test = "short_name" let () = run ~test ()
Це має проінструктувати комплекс тестування про те, що слід:
Вище наведено надто спрощене тестування. Реалістичнішим варіантом був ви варіант із перевіркою того, чи гостьова система досягла остаточного етапу завантаження (за знімком), наприклад сторінки входу до системи. Для реалізації такої перевірки вам слід вказати параметр "~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.
Під час виконання тестування може бути створено такі файли:
Форматом знімків екрана є Portable Pixmap (PPM).
Формат образу диска — qcow2.
Зауваження: щоб визначити поточне значення $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.
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:
2019-02-07 | libguestfs-1.40.2 |