version: 2.0 workflows: version: 2 test: jobs: - bundle_dependencies-35 - bundle_dependencies-36 - bundle_dependencies-37 - run_tests-35: requires: - bundle_dependencies-35 - run_tests-36: requires: - bundle_dependencies-36 - run_tests-37: requires: - bundle_dependencies-37 - mypy_type_check-36: requires: - run_tests-35 - run_tests-36 - run_tests-37 - doctests-36: requires: - run_tests-35 - run_tests-36 - run_tests-37 - reencryption_memory_profile-36: requires: - run_tests-35 - run_tests-36 - run_tests-37 - reencryption_benchmark-36: requires: - run_tests-35 - run_tests-36 - run_tests-37 python_35_base: &python_35_base working_directory: ~/pyUmbral-35 docker: - image: circleci/python:3.5 python_36_base: &python_36_base working_directory: ~/pyUmbral-36 docker: - image: circleci/python:3.6 python_37_base: &python_37_base working_directory: ~/pyUmbral-37 docker: - image: circleci/python:3.7 jobs: bundle_dependencies-35: <<: *python_35_base steps: - checkout - run: name: Install Python dependencies with Pipenv command: pipenv sync --three --dev - run: name: Check PEP 508 Requirements command: pipenv check - save_cache: paths: - "~/.local/share/virtualenvs/" key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py35 bundle_dependencies-36: <<: *python_36_base steps: - checkout - run: name: Install Python dependencies with Pipenv command: pipenv sync --three --dev - run: name: Check PEP 508 Requirements command: pipenv check - save_cache: paths: - "~/.local/share/virtualenvs/" key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 bundle_dependencies-37: <<: *python_37_base steps: - checkout - run: name: Install Python dependencies with Pipenv command: pipenv sync --three --dev - run: name: Check PEP 508 Requirements command: pipenv check - save_cache: paths: - "~/.local/share/virtualenvs/" key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py37 run_tests-35: <<: *python_35_base steps: - checkout # - restore_cache: # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py35 - run: name: Install dependencies command: | pipenv sync --three --dev pipenv install --dev pytest - run: name: pyUmbral Tests (Python 3.5) command: pipenv run pytest --cov=. --cov-report=html --junitxml=./reports/pytest/python35-results.xml - store_test_results: path: /reports/pytest - store_artifacts: path: ./htmlcov run_tests-36: <<: *python_36_base steps: - checkout # - restore_cache: # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 - run: name: Install dependencies command: pipenv sync --three --dev - run: name: pyUmbral Tests (Python 3.6) command: pipenv run pytest --cov=. --cov-report=html --junitxml=./reports/pytest/python36-results.xml - store_test_results: path: /reports/pytest - store_artifacts: path: ./htmlcov run_tests-37: <<: *python_37_base steps: - checkout # - restore_cache: # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py37 - run: name: Install dependencies command: pipenv sync --three --dev - run: name: pyUmbral Tests (Python 3.7) command: pipenv run pytest --cov=. --cov-report=html --junitxml=./reports/pytest/python37-results.xml - store_test_results: path: /reports/pytest - store_artifacts: path: ./htmlcov mypy_type_check-36: <<: *python_36_base steps: - checkout # - restore_cache: # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 - run: name: Install dependencies command: pipenv sync --three --dev - run: name: Run Mypy Static Type Checks command: | pipenv install --dev --skip-lock lxml pipenv run mypy --xslt-html-report ./mypy_report ./umbral --config-file=mypy.ini || true - store_artifacts: path: ./mypy_report doctests-36: <<: *python_36_base steps: - checkout # - restore_cache: # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 - run: name: Install dependencies command: pipenv sync --three --dev - run: name: Run Documentation Tests command: | pipenv install -e . --dev --skip-lock cd docs pipenv run make doctest - store_artifacts: path: ./docs/build/doctest/output.txt reencryption_memory_profile-36: <<: *python_36_base steps: - checkout # - restore_cache: # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 - run: name: Install dependencies command: pipenv sync --three --dev - run: name: Install Profiling Tools command: | sudo apt-get update sudo apt install -y valgrind sudo apt install -y massif-visualizer - run: name: Profile Re-Encryption Memory Usage command: | pipenv run valgrind --tool=massif --massif-out-file=./reencryption_memory_profile.massif.out python3 ./tests/metrics/reencryption_firehose.py - store_artifacts: path: ./reencryption_memory_profile.massif.out reencryption_benchmark-36: <<: *python_36_base steps: - checkout # - restore_cache: # keys: # - v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 # - v2-benchmarks-py36 - run: name: Install dependencies command: pipenv sync --three --dev - run: name: Benchmark Key Splitting and Reencryption command: | pipenv install -e . --dev --skip-lock pipenv run pytest -v ./tests/metrics/reencryption_benchmark.py --junitxml=./reports/pytest/python36-results.xml --benchmark-verbose --benchmark-autosave --benchmark-histogram=./histograms/histogram - save_cache: paths: - "./.benchmarks" key: v2-benchmarks-py36-{{ checksum "benchmarks" }} - store_artifacts: path: ./histograms - store_test_results: path: ./reports/pytest