doing tox for OpenStack keystone on conda python 3.7 environment


목표

the goal

다음과 같이 centos, conda python 3.7 환경에서 keystone 코드를 tox로 테스트 해 봅니다.
is to test OpenStack keystone with tox on conda python 3.7

miniconda를 install합니다.
let's start with installing miniconda

절차

procedures

먼저 conda를 설치합니다.
first, let's install miniconda3

wget -L https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh ./Miniconda3-latest-Linux-x86_64.sh
....
source ./miniconda3/bin/activate base

keystone 프로젝트를 위한 python환경을 설치합니다.
and create a python3 environment for keystone project

conda create -n keystone -c conda-forge git python=3
conda activate keystone
cd $CONDA_PREFIX
mkdir projects && cd projects
git clone http://github.com/openstack/keystone -b stable/rocky --depth 1

tox가 가상환경을 만들어 dependency를 인스톨하는데 필요한 소스코드도 설치합니다.
let's install source dependencies for tox virtualenv

yum install python36-devel openldap-devel

conda의 python 버전이 3.7이므로 tox.ini를 열어서 py35로 되어있는 것을 py37로 고칩니다.
fix py35 to py37 in tox.ini as python version of conda environment is 3.7

tox -e py37

아이고, 17개 실패했습니다.
oops, 17 tests failed.

어디가 실패했는 지 살펴봅니다.
let's find out what is wrong.

tox -e py37 > result.txt

sqlite의 migration테이블이 없다는군요.
it says 'no such table'

그럼 마이그레이션을 하지 않는 테스트를 시험해 봅니다. 예를 들면 test_cli 유닛테스트같은 것을요.

then, let's try again only with tests not to use migration things like test_cli unit test.

tox -e py37 -- keystone.tests.unit.test_cli

넵. 필요한 테스트를 수행했습니다.
yep, we did it. good job 👏👏👏