Get the version of Qvarn you want to test into a sibling directory named qvarn
, e.g. :
git clone git://git.qvarnlabs.net/qvarn
Install all needed tools and Qvarn itself into a virtualenv:
cd qvarn
mkvirtualenv -p /usr/bin/python2.7 qvarn
pip install -r ../qvarn-testing/requirements.txt
pip install -r requirements.txt --find-links ../qvarn-testing/libs
pip install -e .
./check
For Python 3 (for which you need a Python 3 enabled branch of Qvarn from https://github.com/vaultit/qvarn):
cd qvarn
mkvirtualenv -p /usr/bin/python3.4 qvarn-py3
pip install -r ../qvarn-testing/requirements.txt
pip install -r requirements-py3.txt --find-links ../qvarn-testing/libs
pip install -e .
./check
Note that pylint will fail if you run the check script in a Python 2.7 virtualenv on code from the Python 3 branch due to our compatibility shims.
First install dependencies:
pip install coverage pytest pytest-cov
Then you can run the tests:
cd qvarn
py.test \
-vvx \
--tb=native \
-c ../qvarn-testing/pytest.ini \
--cov-config=../qvarn-testing/pytest.ini \
--cov-report=term-missing \
qvarn
Note: this doesn't work for me (py.test fails to recognize --cov-* options), and I've no clue why!
Install the tools:
cd qvarn-testing
mkvirtualenv -p /usr/bin/python2.7 qvarn-testing
pip install -r requirements-integration.txt
pip install cliapp --find-links libs
pip install ttystatus --find-links libs
pip install cmdtest --find-links libs
pip install -e ../qvarn
pip install -e .
Create Postgresql database user and database:
> sudo -u postgres createuser $USER
> sudo -u postgres createdb qvarn -O $USER
Then initialize the Qvarn database:
qvtestinitdb ../qvarn/resource_type
This will create several configuration files under /tmp/qvtest
.
Generate self-signed SSL certificate:
openssl genrsa -out ssl.key 2048
openssl req -new -key ssl.key -out ssl.csr
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
cat ssl.crt ssl.key > ssl.pem
- See: http://uwsgi-docs.readthedocs.io/en/latest/HTTPS.html
https://help.ubuntu.com/lts/serverguide/certificates-and-security.html http://stackoverflow.com/a/991772/475477
Run Qvarn instance and Haproxy:
workon qvarn-py3
pip install -e .
qvtestserver ../qvarn/resource_type
Finally you can run tests using this command:
export QVARN_CREATETOKEN_CONF=$PWD/createtoken.conf
cd qvarn
qvtestapi /tmp/qvtest/etc/qvarn.conf --stop-on-first-fail
If something fails, you can run tests like this:
qvtestapi /tmp/qvtest/etc/qvarn.conf -v --stop-on-first-fail -r 'manage a person' --snapshot
This will output more information about test run and also leaves all temporary test files in a snapshot directory.
After running tests one time, in order to run tests again, first you need to clean database, because tests leaves test data in database and will fail if you try to run them again. To clean database, run this command:
sudo -u postgres psql qvarn -f drop_everything.sql
qvtestinitdb ../qvarn/resource_type
Do not forget to turn off uwsgi first (with a Ctrl+C), to unlock database resource for dropping.
In order to use real Gluu server you need to modify /tmp/qvtest/etc/haproxy.cfg
:
frontend http-in
bind *:9080
bind *:9443 ssl crt ssl.pem
default_backend qvarn
acl resource_auth path_beg /auth
use_backend gluu if resource_auth
backend gluu
server gluu bolagsfakta-gluu-dev.pov.lt:443 ssl verify none
option forwardfor
acl gluu_rewrite path_beg /auth
reqrep ^(.*)\ /auth/(.*)$ \1\ /oxauth/seam/resource/restv1/oxauth/\2 if gluu_rewrite
reqadd X-Forwarded-Proto:\ https
When running qvarn with qvtestserver
all logs will be written to stdout and to /tmp/qvarn.log
. If you want to print something there, you need to print it this way:
qvarn.log.log('debug', msg_text='Your message', key1=v1, key2=v2)
And this will be visible in the output. key1=v1, key2=v2
are optional keyword argument, that will be printed too if provided.
Here are some useful resources: