X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=integration_tests%2Ftest_a1.tavern.yaml;h=4657fccb589b045815cd62308feb67a6827978c8;hb=327d9dba437b30a06161d4f21cc2a33034d75bac;hp=55a8937d551abe707adeceeb4c1f42c349b5a200;hpb=f87c8579c3ed3e2dbf531c4c4c7e3b15489c7bdb;p=ric-plt%2Fa1.git diff --git a/integration_tests/test_a1.tavern.yaml b/integration_tests/test_a1.tavern.yaml index 55a8937..4657fcc 100644 --- a/integration_tests/test_a1.tavern.yaml +++ b/integration_tests/test_a1.tavern.yaml @@ -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 @@ -28,59 +28,60 @@ stages: method: GET response: status_code: 200 - body: [] + json: [] - 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,33 +92,33 @@ stages: method: GET response: status_code: 200 - body: [20000] + json: [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 - body: [] + json: [] - 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,89 +154,107 @@ 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: + json: + 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 + delay_before: 10 # 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!!! + 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/20000/policies + url: http://localhost:10000/a1-p/policytypes/6660666/policies method: GET response: status_code: 200 - body: + 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/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: 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/20000/policies + url: http://localhost:10000/a1-p/policytypes/6660666/policies method: GET response: status_code: 200 - body: [] + json: [] - 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 @@ -245,7 +265,7 @@ stages: method: GET response: status_code: 200 - body: [] + json: [] --- @@ -267,7 +287,7 @@ stages: method: GET response: status_code: 200 - body: [] + json: [] - name: instance list 404 request: @@ -302,7 +322,7 @@ stages: method: GET response: status_code: 200 - body: + json: name: test policy description: just for testing policy_type_id: 20001 @@ -322,7 +342,7 @@ stages: method: GET response: status_code: 200 - body: + json: - 20001 - name: instance list 200 but empty @@ -331,7 +351,7 @@ stages: method: GET response: status_code: 200 - body: [] + json: [] - name: test the delay policy instance get not there yet request: @@ -367,15 +387,35 @@ 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 + 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 - body: + 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 @@ -384,16 +424,157 @@ stages: method: GET response: status_code: 200 - # tavern doesn't let you check non json yet! + json: + instance_status: "IN EFFECT" + has_been_deleted: False + created_at: !anyfloat - - 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 + 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 --- @@ -436,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 @@ -462,12 +643,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 +657,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 - -