Skip to content

andrusha97/grape-tester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grape-tester

Это скрипт для тестирования связки  elliptics + cocaine + grape.

Общая схема работы

Есть одна главная машина и несколько машин для нод с elliptics'ом. Скрипт устанавливает с помощью apt некоторый список пакетов на главную машину и на ноды с elliptics'ом. Для главной машины и для нод списки пакетов отдельные. Затем скрипт запускает на нодах еллиптикс. На первой в списке ноде он собирает и аплоадит в cocaine тестовое приложение. Далее скрипт тестирует правильность работы тестового приложения, обращаясь к нему с главной машины, завершает демоны elliptics'а на нодах и загружает в текущую директорию файлы со всех нод.

Файлы

  • main_tester.py - самый главный скрипт. Он работает на главной машине и запускать надо именно его. Выполните main_tester.py --help для справки.
  • node_tester.py - скрипт, который работает на нодах. Трогать его не стоит.
  • main_config.py - конфиг для главной машины.
  • node_config.py - конфиг для нод с elliptics'ом. Да, оба конфига - это модули на питоне.
  • ssh.py - всякие штуки для работы через ssh.
  • common/ - всякие служебные модули, которые используют и main_tester.py, и node_tester.py.
  • node_files.tar - конфигурация нод (см. ниже), которую я предлагаю использовать.

На нодах папка working_dir из node_config.py имеет такую структуру:

  • node_tester.py
  • node_config.py
  • common/
  • files/ (обработанная node_files/)

Базовая установка

Просто скопируйте папку со скриптом на главную машину, с которой будет осуществляться тестирование.

Распакуйте архив node_files.tar в папку со скриптом main_tester.py.

Скрипт выполняет некоторые команды на серверах от суперпользователя. Поэтому у пользователя, под которым скрипт работает на нодах, должны быть права на использование sudo без пароля.

Так же у скрипта должен быть доступ на ноды по ssh без пароля. Поэтому на нодах нужно настроить аутентификацию по ключу. Файл с приватным ключом можно указать скрипту через параметр -k, можно вписать в main_config.py (переменная ssh_key) или просто ничего не делать, если ssh его и так найдет (если это ~/.ssh/id_rsa или он прописан в ~/.ssh/config и т.п.).

Адреса нод с элептиксом нужно вписать в main_config.py (переменная nodes).

Запускать main_tester.py можно от любого пользователя, а пользователя на нодах нужно вписать в main_config.py (переменная ssh_user).

Тестирование включает в себя проверку установки эллиптикса и кокаина из пакетов. Поэтому впишите в переменную packages в main_config.py список пакетов, которые необходимо установить на главной машине (вообще-то на главной машине нужен только клиент для эллиптикса), а в packages в node_config.py - пакеты, которые нужно установить на нодах (эллиптикс, кокаин, грейп и т.п.).

Эдвансед конфигурейшон

В архиве node_files.tar находится готовая конфигурация для нод. Если она вас не устраивает, то можно сделать свою.

Конфигурация - это просто какая-то папка, которая будет скопирована на ноды под именем [working_dir]/files/. Предполагается, что в этой папке находятся конфиги кокаина и эллиптикса и все папки и файлы, необходимые для их работы. В этой же папке должен находиться исходный код тестового приложения, которое скрипт соберет и загрузит в кокаин.

В этой конфигурации можно использовать шаблоны. Шаблон - это файл с расширением .tmpl. Перед отправкой конфигурации на ноды скрипт обработает все шаблоны и уберет у них расширение .tmpl. Суть шаблонов в том, что в них можно писать текст типа <{code}>, где code - выражение на питоне. Вместо этого текста в реальный файл будет подставлен результат выполнения этого выражения. В таком коде доступны модули main_config и node_config и переменные node (адрес ноды, на которую отправится конфиг) и node_id (целочисленный идентификатор ноды, по факту просто номер ноды в списке в main_config.py). Например, можно написать в шаблоне конфига <{node_config.working_dir}> и вместо этой конструкции в конфиге будет рабочая директория скрипта.

Если вы не изменяли это в конфиге, то скрипт будет искать конфигурацию в папке node_files, которая должна лежать рядом с main_tester.py. Если у вас есть своя нестандартная конфигурация для нод, то нужно вписать путь к ней в main_config.py в переменную node_files.

В node_config.py нужно указать пути к некоторым файлам, которые нужны для работы node_tester.py. Эти файлы - часть конфигурации ноды. Конфиги уже настроены на использование конфигурации из node_files.tar. Если у вас своя конфигурация, то настройте соответствующим образом node_config.py.

ВНИМАНИЕ: Изменять порт, который слушает эллиптикс нельзя, потому что это захардкожено в скрипте.

Использование

Теперь можно запустить main_tester.py и потестировать grape.

После того, как скрипт отработает, в текущей директории появится директория nodes/ и файл tester.log. В tester.log будет лог работы main_tester.py (просто продублированный вывод скрипта). В папке nodes/ будут папочки 0/, 1/ и т.д. - это папочки с файлами с нод. Имя каждой папочки - это позиция ноды в списке в конфиге. В каждой такой папке можно найти файлы, которые были отправленны на ноду (nodes/0/to_deploy/), файлы, которые были загруженны с ноды (nodes/0/files/) и лог работы скрипта на ноде (nodes/0/tester.log). Отправленные и загруженные файлы сильно дублируются, но в загруженных есть всякие логи и другие полезные для отладки файлы.

При запуске скрипт предварительно очистит папочку nodes/ и рабочие директории скрипта на нодах. Так что сохраните логи, если они вам нужны!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages