5. Введение
Задача или Что хотелось получить?
1.Автоматическая установка новой сборки (в том числе и для кластера)
2.Регистрация (ввод лицензии)
3.Проверка базового функционала
4.Максимальная автоматизация
5.Лог, отчеты
Что уже есть?
1.что-то собралось
2.“что-то” снабжено XML-RPC интерфейсом (wiki)
3.brand new style server (16 cores, 24 GB, 5Tb)
Идея: new server + private cloud + … (we’ll see…)
9. OpenStack, сервис метаданных
Помимо основной задачи, nova-
network предоставляет доступ к
сервису метаданных!
Соответствующий сервис внутри
виртуальной машины
запускается автоматически!
11. Требования к системе АВТОТЕСТОВ:
работа с OpenStack (запуск/остановка инстанций, сценарий, …)
поддержка локальной и удаленной работы с OpenStack
работа с инстанциями (Linux/Windows)
формализация тестов (единый формат)
возможность продолжения тестов с произвольного места
читабельные логи
12. Robot Framework
http://code.google.com/p/robotframework/
Первая версия разработана в Nokia Siemens Networks
в 2005, первый open-source релиз появился в 2008.
Ключевые особенности:
• keyword-based подход
• простой синтаксис тестов (TXT, TSV, HTML)
• поддержка тегов
• встроенные отчеты
• встроенные библиотеки (List, Dictionary, …)
• пользовательские библиотеки (Python/Java)
• поддержка плагинов (Selenium, SSH,…)
15. Robot Framework
Robot Framework поддерживает пользовательские библиотеки
Python/Java. Python библиотеку можно оформит как простой
модуль или в виде класса.
Публичные методы класса становятся доступны через “ключевые
слова”, а экземпляр класса создается автоматически.
Значит нужно писать:
• библиотеку для работы с OpenStack
• библиотеку для работы с самим продуктом (XML-RPC)
• может еще что-нибудь
16. Cloud Helper, работа с OpenStack
сommands.ini
«Обертка» над EC2 API для работы с
OpenStack . Шаблоны команд задаются в
INI файле. Поддерживает локальную и
удаленную работу с OpenStack (SSH),
работу со сценариями user-data.
Обходит «проблемы» OpenStack.
17. Работа с инстанциями
Требования:
• работа в асинхронном режиме (пакетное выполнения задач)
• корректная обработка потери связи с виртуальной машиной
• корректная обработка таймаутов
Варианты решений:
Socket server/client (собственный велосипед…)
XML RPC (стандартный протокол)
AMQP?
И есть либы для
Python!
18. Брокер RabbitMQ
Erlang – реализация брокера сообщений для протокола AMQP
(Advanced Message Queuing Protocol).
Основные понятия AMQP:
Сообщение (message) — единица передаваемых данных, его
содержание никак не интерпретируется сервером, к сообщению могут
быть прицеплены структурированные заголовки.
Точка обмена (exchange) — в неё отправляются сообщения. Точка
обмена распределяет сообщения в одну или несколько очередей.
Очередь (queue) — здесь хранятся сообщения до тех пор, пока не будет
забраны клиентом. Клиент всегда забирает сообщения из одной или
нескольких очередей.
19. Celery: Distributed Task Queue
Python Framework для распределенного выполнения задач.
Возможности:
• Поддержка синхронного и асинхронного выполнения заданий
• Выполнение заданий по расписанию (в том числе - периодических)
• Распределенное выполнение (может быть запущен на нескольких
серверах)
• Ограничение количества заданий в единицу времени (rate limit)
• Маршрутизация заданий (кому - что)
• Мониторинг выполнения заданий
• Поддержка нескольких брокеров сообщений (RabbitMQ,…)
22. Message Helper, работа задачами
Message Helper – выполнение команд в
виртуальных машинах, через Celery, с
RabbitMQ в качестве брокера
сообщений.
Важно! Код агента Celery должен
быть доступен и самим агентам и
машине, с которой выполняются
тесты.
28. Выводы
Что понравилось?
• Легкость составления тестов (test suites)
• Читабельность тестов
• Запуск с командной строки
• Поддержка тегов
• Внутреннее API Robot Framework (scalars, lists, dictionaries, cycles,…), удобно
Что не понравилось?
• Если прервать выполнение теста, лог посмотреть нельзя (RIDE?)
• Внутреннее API достаточно специфично (нужна привычка)
• При создании библиотек неизбежно тестирование классическими методами
• После завершения работы агентов в виртуальных машинах в RabbitMQ остается
«мусор» в виде не используемых очередей и точек обмена
29. Продолжаем тестирование…
Ну вот и у нас есть ICAP-сервер!
2 – REQMOD
5 – RESPMOD
Нужно: веб-сервер с управляемым контентом, клиент, прокси (Squid)
Срок выпуска версии: ВЧЕРА!
33. Шаг N+1: если сломалось
Если тест провалился, это выглядит так:
34. Вместо выводов:
1. Создана работающая система автотестов
2. Выпущена первая версия UserGate Web Filter
3. Наработки переданы тестировщикам
IMHO
• Система Robot Framework интересна, перспективна, но не идеальна
• Успешность применения RF зависит от постоянства использования
• PyTest, теперь вместо unittest