Mostly integration test work:
[ric-plt/a1.git] / integration_tests / test_a1.tavern.yaml
index 55a8937..a025643 100644 (file)
@@ -17,7 +17,7 @@ test_name: test admission control
 stages:
   - name: type not there yet
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: GET
     response:
       status_code: 404
@@ -32,55 +32,56 @@ stages:
 
   - name: instance list 404
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies
       method: GET
     response:
       status_code: 404
 
   - name: put the type
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: PUT
       json:
         name: Admission Control
         description: various parameters to control admission of dual connection
-        policy_type_id: 20000
+        policy_type_id: 6660666
         create_schema:
           "$schema": http://json-schema.org/draft-07/schema#
           type: object
+          additionalProperties: false
           properties:
+            class:
+              type: integer
+              minimum: 1
+              maximum: 256
+              description: integer id representing class to which we are applying policy
             enforce:
               type: boolean
-              default: true
+              description: Whether to enable or disable enforcement of policy on this class
             window_length:
               type: integer
-              default: 1
+              minimum: 15
+              maximum: 300
+              description: Sliding window length in seconds
+            trigger_threshold:
+              type: integer
               minimum: 1
-              maximum: 60
-              description: Sliding window length (in minutes)
             blocking_rate:
               type: number
-              default: 10
-              minimum: 1
+              minimum: 0
               maximum: 100
-              description: "% Connections to block"
-            trigger_threshold:
-              type: integer
-              default: 10
-              minimum: 1
-              description: Minimum number of events in window to trigger blocking
           required:
+            - class
             - enforce
-            - blocking_rate
-            - trigger_threshold
             - window_length
-          additionalProperties: false
+            - trigger_threshold
+            - blocking_rate
     response:
       status_code: 201
 
   - name: type there now
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: GET
     response:
       status_code: 200
@@ -91,11 +92,11 @@ stages:
       method: GET
     response:
       status_code: 200
-      body: [20000]
+      body: [6660666]
 
   - name: instance list 200 but empty
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies
       method: GET
     response:
       status_code: 200
@@ -103,21 +104,21 @@ stages:
 
   - name: test the admission control policy get not there yet
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: GET
     response:
       status_code: 404
 
   - name: test the admission control policy status get not there yet
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy/status
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy/status
       method: GET
     response:
       status_code: 404
 
   - name: bad body for admission control policy
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: PUT
       json:
         not: "expected"
@@ -128,7 +129,7 @@ stages:
 
   - name: not a json
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: PUT
       data: "asdf"
     response:
@@ -137,11 +138,12 @@ stages:
   # put it properly
   - name: put the admission control policy instance
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: PUT
       json:
+        class: 12
         enforce: true
-        window_length: 10
+        window_length: 20
         blocking_rate: 20
         trigger_threshold: 10
       headers:
@@ -152,35 +154,39 @@ stages:
   - name: cant delete type with instances
     delay_before: 3  # wait for the type acks to come back first
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: DELETE
     response:
       status_code: 400
 
   - name: test the admission control policy get
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: GET
     response:
       status_code: 200
       body:
+        class: 12
         enforce: true
-        window_length: 10
+        window_length: 20
         blocking_rate: 20
         trigger_threshold: 10
 
+
   - name: test the admission control policy status get
     delay_before: 3 # give it a few seconds for rmr
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy/status
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy/status
       method: GET
     response:
       status_code: 200
-      # tavern doesn't yet let you check string statuses!!!
+      body:
+        instance_status: "IN EFFECT"
+        has_been_deleted: False
 
   - name: instance list 200 and contains the instance
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies
       method: GET
     response:
       status_code: 200
@@ -189,52 +195,64 @@ stages:
 
   # DELETE the instance and make sure subsequent GETs return properly
   - name: delete the instance
+    delay_after: 4
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: DELETE
     response:
       status_code: 202
 
+  - 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
+    request:
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy/status
+      method: GET
+    response:
+      status_code: 200
+      body:
+        instance_status: "NOT IN EFFECT"
+        has_been_deleted: True
+
   - name: instance list 200 but no instance
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies
       method: GET
     response:
       status_code: 200
       body: []
 
   - name: cant get instance status
-    delay_before: 3 # give it a few seconds for rmr
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy/status
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy/status
       method: GET
     response:
       status_code: 404
 
   - name: cant get instance
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy
+      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
       method: GET
     response:
       status_code: 404
 
   - name: delete ac type
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: DELETE
     response:
       status_code: 204
 
   - name: cant delete again
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: DELETE
     response:
       status_code: 404
 
   - name: cant get
     request:
-      url: http://localhost:10000/a1-p/policytypes/20000
+      url: http://localhost:10000/a1-p/policytypes/6660666
       method: DELETE
     response:
       status_code: 404
@@ -367,6 +385,16 @@ stages:
     response:
       status_code: 202
 
+  - name: test the delay status get, not in effect yet
+    request:
+      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
+      method: GET
+    response:
+      status_code: 200
+      body:
+        instance_status: "NOT IN EFFECT"
+        has_been_deleted: False
+
   - name: test the delay policy get
     request:
       url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest
@@ -376,6 +404,15 @@ stages:
       body:
         test: foo
 
+  - name: instance list 200 and there
+    request:
+      url: http://localhost:10000/a1-p/policytypes/20001/policies
+      method: GET
+    response:
+      status_code: 200
+      body:
+       - delaytest
+
   - name: test the delay status get
     max_retries: 3
     delay_before: 6  # give it a few seconds for rmr ; delay reciever sleeps for 5 seconds by default
@@ -384,16 +421,149 @@ stages:
       method: GET
     response:
       status_code: 200
-      # tavern doesn't let you check non json yet!
+      body:
+        instance_status: "IN EFFECT"
+        has_been_deleted: False
 
-  - name: instance list 200 and there
+  # DELETE the instance and make sure subsequent GETs return properly
+  - name: delete the instance
     request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies
+      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest
+      method: DELETE
+    response:
+      status_code: 202
+
+  - name: test the delay status get immediately
+    request:
+      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
       method: GET
     response:
       status_code: 200
       body:
-       - delaytest
+        instance_status: "IN EFFECT"
+        has_been_deleted: True
+
+  - name: test the delay status get after delay but before timers
+    delay_before: 7
+    request:
+      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
+      method: GET
+    response:
+      status_code: 200
+      body:
+        instance_status: "NOT IN EFFECT"
+        has_been_deleted: True
+
+  - name: test the delay status get after delay and after the timers
+    delay_before: 7
+    request:
+      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
+      method: GET
+    response:
+      status_code: 404
+
+---
+
+test_name: test query
+
+stages:
+  - name: type not there yet
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001
+      method: GET
+    response:
+      status_code: 404
+
+  - name: put the type
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001
+      method: PUT
+      json:
+        name: query test
+        description: test
+        policy_type_id: 1006001
+        create_schema:
+          "$schema": http://json-schema.org/draft-07/schema#
+          type: object
+          additionalProperties: false
+          properties:
+            foo:
+              type: string
+          required:
+            - foo
+    response:
+      status_code: 201
+
+  - name: type there now
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001
+      method: GET
+    response:
+      status_code: 200
+
+  - name: instance list 200 but empty
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001/policies
+      method: GET
+    response:
+      status_code: 200
+      body: []
+
+  - name: instance 1
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt1
+      method: PUT
+      json:
+        foo: "bar1"
+      headers:
+        content-type: application/json
+    response:
+      status_code: 202
+
+  - name: instance 2
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt2
+      method: PUT
+      json:
+        foo: "bar2"
+      headers:
+        content-type: application/json
+    response:
+      status_code: 202
+
+  - name: instance list
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001/policies
+      method: GET
+    response:
+      status_code: 200
+      body: [qt1, qt2]
+
+  # after the query, a1 should send, query receiver should send back, and the policy should be in effect
+
+  - name: test the query status get
+    max_retries: 3
+    delay_before: 6  # give it a few seconds for rmr ; delay reciever sleeps for 5 seconds by default
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt1/status
+      method: GET
+    response:
+      status_code: 200
+      body:
+        instance_status: "IN EFFECT"
+        has_been_deleted: False
+
+  - name: test the query status get 2
+    max_retries: 3
+    delay_before: 6  # give it a few seconds for rmr ; delay reciever sleeps for 5 seconds by default
+    request:
+      url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt2/status
+      method: GET
+    response:
+      status_code: 200
+      body:
+        instance_status: "IN EFFECT"
+        has_been_deleted: False
 
 ---
 
@@ -462,12 +632,12 @@ stages:
 
   - name: bad int range 1
     request:
-      url: http://localhost:10000/a1-p/policytypes/19999
+      url: http://localhost:10000/a1-p/policytypes/0
       method: PUT
       json:
         name: test policy
         description: just for testing
-        policy_type_id: 19999
+        policy_type_id: 0
         create_schema:
           "$schema": http://json-schema.org/draft-07/schema#
           type: object
@@ -476,16 +646,14 @@ stages:
 
   - name: bad int range 2
     request:
-      url: http://localhost:10000/a1-p/policytypes/21024
+      url: http://localhost:10000/a1-p/policytypes/2147483648
       method: PUT
       json:
         name: test policy
         description: just for testing
-        policy_type_id: 21024
+        policy_type_id: 2147483648
         create_schema:
           "$schema": http://json-schema.org/draft-07/schema#
           type: object
     response:
       status_code: 400
-
-