Запуск тестов OpenStack Keystone в Docker контейнере на Mac

от автора

Ниже описано как запускать Keystone тесты в Docker контейнере на OS X и зачем это мне понадобилось.

Я иногда пишу небольшие патчи в Openstack, в основном в Keystone. Делаю это на моем лаптопе с OS X. В 2009 я перешел с Linux на Mac, т.к. на последнем разрабатывать было не менее удобно, а заниматься всем остальным — гораздо удобнее. К сожалению, последнее время первое утверждение часто оказывается ложным. Например, Apple начала очень медленно обновлять системные open source библиотеки, от чего пострадали тесты Keystone — сначала из-за старого OpenSSL, а потом и python-ldap. Об этом, например, пишет Keystone PTL Morgan Fainberg. Начинает он оптимистичным

NOTICE: OS X based testing/running of Keystone will likely be deprecated

Можно с этим бороться, но удовольствие уже не то.

Сначала я перешел в VM с Ubuntu, что сняло все проблемы с запуском тестов, но настраивать и поддерживать еще одну среду разработки — задача, которой хотелось бы избежать. Запускать же VM только из-за тестов — расточительство. Кроме того, мелкие различия между Mac и Lunux (shell, MacVim) немного раздражали. Потому я решил продолжать разработку на Mac, запуская тесты в docker контейнере в том же iTerm2. Дальше пошаговая инструкция.

Сначала создадим проект

$ mkdir  ../docker $ cd ../docker $ vim Dockerfile 

Пишем Dockerfile

FROM ubuntu:14.04 MAINTAINER XXX "xxx@gmail.com" RUN apt-get update RUN apt-get install -y python RUN apt-get install -y git RUN apt-get install -y python-setuptools RUN apt-get install -y python-pip RUN pip install virtualenv RUN apt-get install -y gettext RUN apt-get install -y python-dev python3-dev libxml2-dev libxslt1-dev RUN apt-get install -y libsasl2-dev libsqlite3-dev libssl-dev libldap2-dev libffi-dev RUN pip install tox RUN apt-get install -y python-tox 

Создаем контейнер:

$ docker build -t="hashmap/keystone-dev" . 

Получаем:

Sending build context to Docker daemon 2.048 kB Sending build context to Docker daemon  Step 0 : FROM ubuntu:14.04  ---> 63e3c10217b8 ... Unpacking python-tox (1.6.0-1ubuntu1) ... Setting up libjs-jquery (1.7.2+dfsg-2ubuntu1) ... Setting up libjs-underscore (1.4.4-2ubuntu1) ... Setting up libjs-sphinxdoc (1.2.2+dfsg-1ubuntu1.1) ... Setting up python-py (1.4.20-1) ... Setting up python-virtualenv (1.11.4-1) ... Setting up python-tox (1.6.0-1ubuntu1) ...  ---> 41f003afb987 Removing intermediate container 52fa1fca6272 Successfully built 41f003afb987 

Теперь получаем исходники keystone

$ mkdir -p ~/projects/openstack/ $ cd  ~/projects/openstack/ $ git clone https://github.com/openstack/keystone.git 

Запускаем контейнер

$ docker run -it -v ~/projects/openstack/keystone/:/keystone hashmap/keystone-dev 

Получаем сессию внутри контейнера:

root@ecc4228056af:/# cd /keystone 

Один раз нам надо настроить venv

$ python tools/install_venv.py $ source .venv/bin/activate $ python -c "import keystone" 

Если ошибок не возникло — все настроено. Можно еще обновить БД:

$ root@e29e21a501f0:/keystone# ./.venv/bin/keystone-manage db_sync 

Теперь запускаем тест

$ tox -e py27 ...  - Passed: 4254  - Skipped: 1234  - Expected Fail: 0  - Unexpected Success: 0  - Failed: 0 ...  py27: commands succeeded  congratulations :) 

Теперь можно время от времени запускать контейнер с тестами. Не замерял, но на глаз заметно, что тесты выполняются медленнее, с другой стороны, я им дал ровно половину ресурсов лаптопа.

В итоге мы имеем среду разработки на Mac с работающими тестами, роскошь в текущей ситуации!

P.S. Если понравилась КДПВ — дайте мне знать, docker-girl нашей компании появится и в следующих постах.

ссылка на оригинал статьи http://habrahabr.ru/post/264365/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *