Mercurial > p > roundup > code
view .travis.yml @ 6823:fe0091279f50
Refactor session db logging and key generation for sessions/otks
While I was working on the redis sessiondb stuff, I noticed that
log_wanrning, get_logger ... was duplicated. Also there was code to
generate a unique key for otks that was duplicated.
Changes:
creating new sessions_common.py and SessionsCommon class to provide
methods:
log_warning, log_info, log_debug, get_logger, getUniqueKey
getUniqueKey method is closer to the method used to make
session keys in client.py.
sessions_common.py now report when random_.py chooses a weak
random number generator. Removed same from rest.py.
get_logger reconciles all logging under
roundup.hyperdb.backends.<name of BasicDatabase class>
some backends used to log to root logger.
have BasicDatabase in other sessions_*.py modules inherit from
SessionCommon.
change logging to use log_* methods.
In addition:
remove unused imports reported by flake8 and other formatting
changes
modify actions.py, rest.py, templating.py to use getUniqueKey
method.
add tests for new methods
test_redis_session.py
swap out ModuleNotFoundError for ImportError to prevent crash in
python2 when redis is not present.
allow injection of username:password or just password into redis
connection URL. set pytest_redis_pw envirnment variable to password
or user:password when running test.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 07 Aug 2022 01:51:11 -0400 |
| parents | 3f60a71b0812 |
| children | ddc007819528 |
line wrap: on
line source
# check syntax using: # https://config.travis-ci.com/explore os: linux language: python cache: pip #I would like to build and test the maint-1.6 and trunk/default #but we need different environments for these: # maint-1.6 only python 2, install only psycopg2 version with support for # psycopg1 branches: # only: # - default # - maint-1.6 dist: focal python: - 2.7 - 3.10.4 # - 3.9 # - 3.8 - 3.6 - 3.11-dev - nightly # - pypy3 services: - mysql - postgresql - redis-server jobs: allow_failures: # releases not ready for prime time yet. - python: nightly - python: 3.11-dev - python: pypy3 addons: apt: #sources: # - sourceline: ppa:xapian-backports/ppa packages: # Required to build/install the xapian-binding - libxapian-dev # Required to install gpg - swig # Required to build gpgme. - gpgsm before_install: # build xapian - echo "$TRAVIS_PYTHON_VERSION" # Sphinx required to build the xapian python bindings. Use 1.8.5 on # older python and newest on newer. - if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then pip install sphinx==1.8.5; fi - if [[ $TRAVIS_PYTHON_VERSION == '3.'* ]] ; then pip install sphinx; fi - if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then pip install sphinx; fi - XAPIAN_VER=$(dpkg -l libxapian-dev | tail -n 1 | awk '{print $3}' | cut -d '-' -f 1); echo $XAPIAN_VER # force specific version 1.4.19 for python 3.12 for debugging - if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then XAPIAN_VER=1.4.19; fi; echo $XAPIAN_VER - cd /tmp - curl -s -O https://oligarchy.co.uk/xapian/$XAPIAN_VER/xapian-bindings-$XAPIAN_VER.tar.xz - tar -Jxvf xapian-bindings-$XAPIAN_VER.tar.xz - cd xapian-bindings-$XAPIAN_VER/ - echo $TRAVIS_PYTHON_VERSION - if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then ./configure --prefix=$VIRTUAL_ENV --with-python --disable-documentation; fi # edit the configure script. distutils.sysconfig.get_config_vars('SO') # doesn't work for 3.11 or newer. # Change distutils.sysconfig... to just sysconfig and SO to EXT_SUFFIX # to get valid value. - if [[ $TRAVIS_PYTHON_VERSION == "3."* ]]; then sed -i -e '/PYTHON3_SO=/s/distutils\.//g' -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' configure; ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation; fi - if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then sed -i -e '/PYTHON3_SO=/s/distutils\.//g' -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' configure; ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation; fi - if [[ $TRAVIS_PYTHON_VERSION == "pypy3" ]]; then sed -i -e '/PYTHON3_SO=/s/distutils\.//g' -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' configure; ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation; fi - case "$TRAVIS_PYTHON_VERSION" in nightly) echo skipping xapian build;; *) make && make install; esac - PATH=$VIRTUAL_ENV/bin:$PATH # libgpg-error - LIBGPG_ERROR_VERSION=1.43 - cd /tmp - curl -s -O https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-$LIBGPG_ERROR_VERSION.tar.bz2 - tar -jxvf libgpg-error-$LIBGPG_ERROR_VERSION.tar.bz2 - cd libgpg-error-$LIBGPG_ERROR_VERSION - ./configure --prefix=$VIRTUAL_ENV - make && make install # libassuan - LIBASSUAN_VERSION=2.5.5 - cd /tmp - curl -s -O https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-$LIBASSUAN_VERSION.tar.bz2 - tar -jxvf libassuan-$LIBASSUAN_VERSION.tar.bz2 - cd libassuan-$LIBASSUAN_VERSION - ./configure --prefix=$VIRTUAL_ENV - make && make install # gpgme - GPGME_VERSION=1.17.1 - cd /tmp - curl -s -O https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-$GPGME_VERSION.tar.bz2 - tar -jxf gpgme-$GPGME_VERSION.tar.bz2 - cd gpgme-$GPGME_VERSION - ./configure --prefix=$VIRTUAL_ENV - make && make install # change back to the checked out repository directory - cd $TRAVIS_BUILD_DIR install: - if [[ $TRAVIS_PYTHON_VERSION == "3.4"* ]]; then pip install mysqlclient==1.3.14; fi - if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install mysqlclient; fi - pip install psycopg2 - pip install redis - pip install gpg pytz whoosh pyjwt requests - pip install jinja2 - pip install pytest-cov codecov - pip install beautifulsoup4 - if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install docutils; fi - if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install mistune==0.8.4; fi - if [[ $TRAVIS_PYTHON_VERSION != "3.4"* && $TRAVIS_PYTHON_VERSION != "2."* ]]; then pip install Markdown; fi - pip install markdown2 - pip install brotli # zstd fails to build under python nightly aborting test. # allow testing to still happen if the optional package doesn't install. - pip install zstd || true before_script: # set up mysql database - sudo sed -i -e '/^\[mysqld\]/,/^\[mysql/s/^max_allowed_packet.*/max_allowed_packet = 500M/' /etc/mysql/my.cnf - cat /etc/mysql/my.cnf - sudo service mysql restart - mysql -u root -e 'CREATE USER "rounduptest"@"localhost" IDENTIFIED WITH mysql_native_password BY "rounduptest"; GRANT ALL on rounduptest.* TO "rounduptest"@"localhost";' # Disable fsync for speed, don't care about data durability when testing - sudo sed -i -e '$a\fsync = off' /etc/postgresql/*/*/postgresql.conf - sudo service postgresql restart; sleep 30 # set up postgresql database - psql -c "CREATE ROLE rounduptest WITH CREATEDB LOGIN PASSWORD 'rounduptest';" -U postgres # build the .mo translation files and install them into a tree # (locale/locale under roundup directory root) # suitable for use by gettext. - (cd locale; make local_install; ls -lR locale/de/LC_MESSAGES) script: - PATH=$VIRTUAL_ENV/bin:$PATH - export LD_LIBRARY_PATH=$VIRTUAL_ENV/lib:$LD_LIBRARY_PATH - if [[ "$TRAVIS_PYTHON_VERSION" != "2."* ]]; then py.test -r a -W default -W "ignore:SelectableGroups:DeprecationWarning" -W "ignore:the imp module:DeprecationWarning:gpg.gpgme:15" -W "ignore:'U' mode::docutils.io" -W "ignore:unclosed:ResourceWarning:roundup.roundup.demo" -W "ignore:unclosed file:ResourceWarning:enum" -v --maxfail=5 test/ --cov=roundup; fi - if [[ "$TRAVIS_PYTHON_VERSION" == "2."* ]]; then py.test -v -r a --maxfail=5 test/ --cov=roundup; fi - ./setup.py build_doc after_success: - codecov
