Replacing a1-python with a1-go implementation
[ric-plt/a1.git] / integration_tests / test_a1.tavern.yaml
diff --git a/integration_tests/test_a1.tavern.yaml b/integration_tests/test_a1.tavern.yaml
deleted file mode 100644 (file)
index 4657fcc..0000000
+++ /dev/null
@@ -1,670 +0,0 @@
-# test_a1.tavern.yaml
-
-test_name: test healthcheck
-
-stages:
-  - name: test the a1 healthcheck
-    request:
-      url: http://localhost:10000/a1-p/healthcheck
-      method: GET
-    response:
-      status_code: 200
-
----
-
-test_name: test admission control
-
-stages:
-  - name: type not there yet
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666
-      method: GET
-    response:
-      status_code: 404
-
-  - name: type list empty
-    request:
-      url: http://localhost:10000/a1-p/policytypes
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-  - name: instance list 404
-    request:
-      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/6660666
-      method: PUT
-      json:
-        name: Admission Control
-        description: various parameters to control admission of dual connection
-        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
-              description: Whether to enable or disable enforcement of policy on this class
-            window_length:
-              type: integer
-              minimum: 15
-              maximum: 300
-              description: Sliding window length in seconds
-            trigger_threshold:
-              type: integer
-              minimum: 1
-            blocking_rate:
-              type: number
-              minimum: 0
-              maximum: 100
-          required:
-            - class
-            - enforce
-            - window_length
-            - trigger_threshold
-            - blocking_rate
-    response:
-      status_code: 201
-
-  - name: type there now
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666
-      method: GET
-    response:
-      status_code: 200
-
-  - name: now in type list
-    request:
-      url: http://localhost:10000/a1-p/policytypes
-      method: GET
-    response:
-      status_code: 200
-      json: [6660666]
-
-  - name: instance list 200 but empty
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-  - name: test the admission control policy get not there yet
-    request:
-      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/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/6660666/policies/admission_control_policy
-      method: PUT
-      json:
-        not: "expected"
-      headers:
-        content-type: application/json
-    response:
-      status_code: 400
-
-  - name: not a json
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
-      method: PUT
-      data: "asdf"
-    response:
-      status_code: 415
-
-  # put it properly
-  - name: put the admission control policy instance
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
-      method: PUT
-      json:
-        class: 12
-        enforce: true
-        window_length: 20
-        blocking_rate: 20
-        trigger_threshold: 10
-      headers:
-        content-type: application/json
-    response:
-      status_code: 202
-
-  - 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/6660666
-      method: DELETE
-    response:
-      status_code: 400
-
-  - name: test the admission control policy get
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy
-      method: GET
-    response:
-      status_code: 200
-      json:
-        class: 12
-        enforce: true
-        window_length: 20
-        blocking_rate: 20
-        trigger_threshold: 10
-
-  - name: test the admission control policy status get
-    delay_before: 10 # give it a few seconds for rmr
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies/admission_control_policy/status
-      method: GET
-    response:
-      status_code: 200
-      json:
-        instance_status: "IN EFFECT"
-        has_been_deleted: False
-        created_at: !anyfloat
-
-  - name: instance list 200 and contains the instance
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies
-      method: GET
-    response:
-      status_code: 200
-      json:
-        - admission_control_policy
-
-  # 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/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: 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
-      json:
-        instance_status: "NOT IN EFFECT"
-        has_been_deleted: True
-        deleted_at: !anyfloat
-        created_at: !anyfloat
-
-  - name: instance list 200 but no instance
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666/policies
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-  - name: cant get instance status
-    request:
-      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/6660666/policies/admission_control_policy
-      method: GET
-    response:
-      status_code: 404
-
-  - name: delete ac type
-    request:
-      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/6660666
-      method: DELETE
-    response:
-      status_code: 404
-
-  - name: cant get
-    request:
-      url: http://localhost:10000/a1-p/policytypes/6660666
-      method: DELETE
-    response:
-      status_code: 404
-
-  - name: empty type list
-    request:
-      url: http://localhost:10000/a1-p/policytypes
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-
----
-
-test_name: test the delay receiver
-
-stages:
-
-  - name: test the delay policy type not there yet
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001
-      method: GET
-    response:
-      status_code: 404
-
-  - name: not yet in type list
-    request:
-      url: http://localhost:10000/a1-p/policytypes
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-  - name: instance list 404
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies
-      method: GET
-    response:
-      status_code: 404
-
-  - name: put the type
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001
-      method: PUT
-      json:
-        name: test policy
-        description: just for testing
-        policy_type_id: 20001
-        create_schema:
-          "$schema": http://json-schema.org/draft-07/schema#
-          type: object
-          properties:
-            test:
-              type: string
-          required:
-            - test
-          additionalProperties: false
-    response:
-      status_code: 201
-
-  - name: type there now
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001
-      method: GET
-    response:
-      status_code: 200
-      json:
-        name: test policy
-        description: just for testing
-        policy_type_id: 20001
-        create_schema:
-          "$schema": http://json-schema.org/draft-07/schema#
-          type: object
-          properties:
-            test:
-              type: string
-          required:
-            - test
-          additionalProperties: false
-
-  - name: now in type list
-    request:
-      url: http://localhost:10000/a1-p/policytypes
-      method: GET
-    response:
-      status_code: 200
-      json:
-       - 20001
-
-  - name: instance list 200 but empty
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-  - name: test the delay policy instance get not there yet
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest
-      method: GET
-    response:
-      status_code: 404
-
-  - name: test the delay policy status get not there yet
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
-      method: GET
-    response:
-      status_code: 404
-
-  - name: bad body for delaytest
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest
-      method: PUT
-      json:
-        not: "welcome"
-    response:
-      status_code: 400
-
-  - name: create delay policy instance
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest
-      method: PUT
-      json:
-        test: foo
-      headers:
-        content-type: application/json
-    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
-      json:
-        instance_status: "NOT IN EFFECT"
-        has_been_deleted: False
-        created_at: !anyfloat
-
-  - name: test the delay policy get
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest
-      method: GET
-    response:
-      status_code: 200
-      json:
-        test: foo
-
-  - name: instance list 200 and there
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies
-      method: GET
-    response:
-      status_code: 200
-      json:
-       - 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
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
-      method: GET
-    response:
-      status_code: 200
-      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
-    request:
-      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
-      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
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status
-      method: GET
-    response:
-      status_code: 200
-      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
-    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
-      json: []
-
-  - 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
-      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
-  # empirically we find that the si95 rmr finally "detects" failure after about 75 seconds, retries, and then works.
-  - name: test the query status get
-    max_retries: 100
-    delay_before: 1
-    request:
-      url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt1/status
-      method: GET
-    response:
-      status_code: 200
-      json:
-        instance_status: "IN EFFECT"
-        has_been_deleted: False
-        created_at: !anyfloat
-
-  - name: test the query status get 2
-    max_retries: 100
-    delay_before: 1
-    request:
-      url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt2/status
-      method: GET
-    response:
-      status_code: 200
-      json:
-        instance_status: "IN EFFECT"
-        has_been_deleted: False
-        created_at: !anyfloat
-
----
-
-test_name: test bad routing file endpoint
-
-stages:
-
-  - name: put the type
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20002
-      method: PUT
-      json:
-        name: test policy
-        description: just for testing
-        policy_type_id: 20002
-        create_schema:
-          "$schema": http://json-schema.org/draft-07/schema#
-          type: object
-          properties:
-            test:
-              type: string
-          required:
-            - test
-          additionalProperties: false
-
-  - name: create policy instance that will go to a broken routing endpoint
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20002/policies/brokentest
-      method: PUT
-      json:
-        test: foo
-      headers:
-        content-type: application/json
-    response:
-      status_code: 202
-
-  - name: should be no status
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20002/policies/brokentest/status
-      method: GET
-    response:
-      status_code: 200
-      json: []
-
-  # this one cant currently be deleted, see the comment in a1/data.py
-
----
-
-test_name: bad_requests
-
-stages:
-
-  - name: bad type get
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20666
-      method: GET
-    response:
-      status_code: 404
-
-  - name: bad instance get bad type
-    request:
-      url: http://localhost:10000/a1-p/policytypes/20666/policies/nonono
-      method: GET
-    response:
-      status_code: 404
-
-  - name: bad int range 1
-    request:
-      url: http://localhost:10000/a1-p/policytypes/0
-      method: PUT
-      json:
-        name: test policy
-        description: just for testing
-        policy_type_id: 0
-        create_schema:
-          "$schema": http://json-schema.org/draft-07/schema#
-          type: object
-    response:
-      status_code: 400
-
-  - name: bad int range 2
-    request:
-      url: http://localhost:10000/a1-p/policytypes/2147483648
-      method: PUT
-      json:
-        name: test policy
-        description: just for testing
-        policy_type_id: 2147483648
-        create_schema:
-          "$schema": http://json-schema.org/draft-07/schema#
-          type: object
-    response:
-      status_code: 400