浏览代码

Run integration tests in a build stage.

Omer Katz 6 年之前
父节点
当前提交
6d920e11fa
共有 2 个文件被更改,包括 79 次插入7 次删除
  1. 66 7
      .travis.yml
  2. 13 0
      extra/install_dynamodb.sh

+ 66 - 7
.travis.yml

@@ -12,24 +12,86 @@ os:
 stages:
   - lint
   - test
+  - integration-test
 env:
   global:
   - PYTHONUNBUFFERED=yes
   matrix:
   - MATRIX_TOXENV=unit
-  - MATRIX_TOXENV=integration-rabbitmq
-  - MATRIX_TOXENV=integration-redis
-  - MATRIX_TOXENV=integration-dynamodb
 matrix:
   include:
+  - python: '2.7'
+    env: MATRIX_TOXENV=integration-rabbitmq
+    stage: integration-test
+    services:
+      - rabbitmq
+  - python: '2.7'
+    env: MATRIX_TOXENV=integration-redis
+    stage: integration-test
+    services:
+      - redis
+  - python: '2.7'
+    env: MATRIX_TOXENV=integration-dynamodb
+    stage: integration-test
+    before_install: ./extra/install_dynamodb.sh
+  - python: '3.4'
+    env: MATRIX_TOXENV=integration-rabbitmq
+    stage: integration-test
+    services:
+      - rabbitmq
+  - python: '3.4'
+    env: MATRIX_TOXENV=integration-redis
+    stage: integration-test
+    services:
+      - redis
+  - python: '3.4'
+    env: MATRIX_TOXENV=integration-dynamodb
+    stage: integration-test
+    before_install: ./extra/install_dynamodb.sh
+  - python: '3.5'
+    env: MATRIX_TOXENV=integration-rabbitmq
+    stage: integration-test
+    services:
+      - rabbitmq
+  - python: '3.5'
+    env: MATRIX_TOXENV=integration-redis
+    stage: integration-test
+    services:
+      - redis
+  - python: '3.5'
+    env: MATRIX_TOXENV=integration-dynamodb
+    stage: integration-test
+    before_install: ./extra/install_dynamodb.sh
   - python: '3.6'
-    env: TOXENV=pypy-unit PYPY_VERSION="pypy2.7-5.8.0"
+    env: MATRIX_TOXENV=integration-rabbitmq
+    stage: integration-test
+    services:
+      - rabbitmq
+  - python: '3.6'
+    env: MATRIX_TOXENV=integration-redis
+    stage: integration-test
+    services:
+      - redis
+  - python: '3.6'
+    env: MATRIX_TOXENV=integration-dynamodb
+    stage: integration-test
+    before_install: ./extra/install_dynamodb.sh
   - python: '3.6'
     env: TOXENV=pypy-integration-rabbitmq PYPY_VERSION="pypy2.7-5.8.0"
+    stage: integration-test
+    services:
+      - rabbitmq
   - python: '3.6'
     env: TOXENV=pypy-integration-redis PYPY_VERSION="pypy2.7-5.8.0"
+    stage: integration-test
+    services:
+      - redis
   - python: '3.6'
     env: TOXENV=pypy-integration-dynamodb PYPY_VERSION="pypy2.7-5.8.0"
+    stage: integration-test
+    before_install: ./extra/install_dynamodb.sh
+  - python: '3.6'
+    env: TOXENV=pypy-unit PYPY_VERSION="pypy2.7-5.8.0"
   - python: '3.6'
     env: TOXENV=flake8
     stage: lint
@@ -98,6 +160,3 @@ notifications:
       - "chat.freenode.net#celery"
     on_success: change
     on_failure: change
-services:
-    - rabbitmq
-    - redis

+ 13 - 0
extra/install_dynamodb.sh

@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+sudo apt-get update && sudo apt-get install -y default-jre supervisor
+mkdir /opt/dynamodb-local
+cd /opt/dynamodb-local && curl --retry 5 --retry-delay 1 -L http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz | tar zx
+cd -
+echo '[program:dynamodb-local]' | sudo tee /etc/supervisor/conf.d/dynamodb-local.conf
+echo 'command=java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -inMemory' | sudo tee -a /etc/supervisor/conf.d/dynamodb-local.conf
+echo 'directory=/opt/dynamodb-local' | sudo tee -a /etc/supervisor/conf.d/dynamodb-local.conf
+sudo service supervisor stop
+sudo service supervisor start
+sleep 10
+curl localhost:8000