Upgrade integration tests to Tavern v1.0.0 51/3551/3 2.1.8
authorLott, Christopher (cl778h) <cl778h@att.com>
Thu, 30 Apr 2020 15:54:59 +0000 (11:54 -0400)
committerLott, Christopher (cl778h) <cl778h@att.com>
Thu, 30 Apr 2020 16:48:55 +0000 (12:48 -0400)
Change all response checks from 'body' to 'json'
and add matchers for response body entries.

Signed-off-by: Lott, Christopher (cl778h) <cl778h@att.com>
Change-Id: I0f8eabbd2d01d645ca1c6dae4d20db5bb233370a

docs/release-notes.rst
integration_tests/portforward.sh
integration_tests/test_a1.tavern.yaml
tox-integration.ini

index 791e912..3aa78b2 100644 (file)
@@ -25,6 +25,7 @@ and this project adheres to `Semantic Versioning <http://semver.org/>`__.
 * Add documentation of start/init parameters to _RmrLoop class
 * Add new environment variable USE_FAKE_SDL (`RIC-351 <https://jira.o-ran-sc.org/browse/RIC-351>`_)
 * Respond with error if policy type ID differs from ID in object on create
+* Upgrade integration tests to use Tavern version 1.0.0
 
 
 [2.1.7] - 2020-04-28
index 10d19b7..17f56b7 100755 (executable)
@@ -1,4 +1,8 @@
 #!/bin/bash
 # fail on error
 set -eux
-kubectl port-forward $(kubectl get pods --namespace default -l "app.kubernetes.io/name=a1mediator,app.kubernetes.io/instance=a1" -o jsonpath="{.items[0].metadata.name}") 10000:10000 2>&1 > forward.log &
+pod=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=a1mediator,app.kubernetes.io/instance=a1" -o jsonpath="{.items[0].metadata.name}")
+# this listener must run to forward the port, it's not just a config change
+# it logs a line periodically that don't add much value, capture in a file.
+rm forward.log
+kubectl port-forward "$pod" 10000:10000 > forward.log 2>&1  &
index e33b3da..4657fcc 100644 (file)
@@ -28,7 +28,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   - name: instance list 404
     request:
@@ -92,7 +92,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: [6660666]
+      json: [6660666]
 
   - name: instance list 200 but empty
     request:
@@ -100,7 +100,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   - name: test the admission control policy get not there yet
     request:
@@ -165,7 +165,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         class: 12
         enforce: true
         window_length: 20
@@ -179,9 +179,10 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "IN EFFECT"
         has_been_deleted: False
+        created_at: !anyfloat
 
   - name: instance list 200 and contains the instance
     request:
@@ -189,7 +190,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         - admission_control_policy
 
   # DELETE the instance and make sure subsequent GETs return properly
@@ -203,15 +204,17 @@ stages:
 
   - name: status should now be not in effect but still there
     delay_before: 3 # give it a few seconds for rmr
-    delay_after: 8 # 3 + 11 > 10; that is, wait until t2 expires
+    delay_after: 10 # 3 + 10 > 10; that is, wait until t2 expires
     request:
       url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy/status
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "NOT IN EFFECT"
         has_been_deleted: True
+        deleted_at: !anyfloat
+        created_at: !anyfloat
 
   - name: instance list 200 but no instance
     request:
@@ -219,7 +222,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   - name: cant get instance status
     request:
@@ -262,7 +265,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
 
 ---
@@ -284,7 +287,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   - name: instance list 404
     request:
@@ -319,7 +322,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         name: test policy
         description: just for testing
         policy_type_id: 20001
@@ -339,7 +342,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
        - 20001
 
   - name: instance list 200 but empty
@@ -348,7 +351,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   - name: test the delay policy instance get not there yet
     request:
@@ -390,9 +393,10 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "NOT IN EFFECT"
         has_been_deleted: False
+        created_at: !anyfloat
 
   - name: test the delay policy get
     request:
@@ -400,7 +404,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         test: foo
 
   - name: instance list 200 and there
@@ -409,7 +413,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
        - delaytest
 
   - name: test the delay status get
@@ -420,9 +424,10 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "IN EFFECT"
         has_been_deleted: False
+        created_at: !anyfloat
 
   # DELETE the instance and make sure subsequent GETs return properly
   - name: delete the instance
@@ -438,9 +443,11 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "IN EFFECT"
         has_been_deleted: True
+        deleted_at: !anyfloat
+        created_at: !anyfloat
 
   - name: test the delay status get after delay but before timers
     delay_before: 7
@@ -449,9 +456,11 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "NOT IN EFFECT"
         has_been_deleted: True
+        deleted_at: !anyfloat
+        created_at: !anyfloat
 
   - name: test the delay status get after delay and after the timers
     delay_before: 7
@@ -506,7 +515,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   - name: instance 1
     request:
@@ -536,7 +545,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: [qt1, qt2]
+      json: [qt1, qt2]
 
   # after the query, a1 should send, query receiver should send back, and the policy should be in effect
   # sometimes in kubernetes, this test takes a long time to work because of an k8s issue
@@ -549,9 +558,10 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "IN EFFECT"
         has_been_deleted: False
+        created_at: !anyfloat
 
   - name: test the query status get 2
     max_retries: 100
@@ -561,9 +571,10 @@ stages:
       method: GET
     response:
       status_code: 200
-      body:
+      json:
         instance_status: "IN EFFECT"
         has_been_deleted: False
+        created_at: !anyfloat
 
 ---
 
@@ -606,7 +617,7 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: []
+      json: []
 
   # this one cant currently be deleted, see the comment in a1/data.py
 
index c19899c..271d823 100644 (file)
@@ -28,7 +28,7 @@ whitelist_externals=
     getlogs.sh
 passenv = *
 deps =
-    tavern == 0.34.0 # version 1.0 uses different schema; body -> json
+    tavern == 1.0.0 # pin the version
 changedir=integration_tests
 commands_pre=
     echo "WARNING: make sure you are running with latest docker builds!"
@@ -51,18 +51,17 @@ commands_pre=
     helm install --devel a1 a1mediator
     helm install --devel dbaas dbaas-service
     kubectl get pods --namespace=default
-    echo "wait for pods to start"
+    echo "delay so pods can start"
     sleep 30
     kubectl get pods --namespace=default
     echo "forward ports"
     ./portforward.sh
-    echo "wait for port forward"
+    echo "delay so port forward can start"
     sleep 5
 commands=
     echo "running tavern via pytest"
     pytest --version
-    # --tavern-beta-new-traceback for 0.34.0; fails in 1.0.0
-    pytest --tavern-beta-new-traceback test_a1.tavern.yaml
+    pytest test_a1.tavern.yaml
     echo "running apache bench (ab) on healthcheck endpoint"
     # use -v 4 to make ab chatty
     ab -n 100 -c 10 -v 0 http://localhost:10000/a1-p/healthcheck