X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=integration_tests%2Ftest_a1.tavern.yaml;h=bdd8d45a3b19cb443d2f101f5ccca843381b20d1;hb=102b89592db01d8361a754c11a85699e5d2e965c;hp=f1b0f6ac7046062a5b3a452365fb9a0c4c992a53;hpb=2c94a42d6c7ce672af76eb68484d3d69710ac4d4;p=ric-plt%2Fa1.git diff --git a/integration_tests/test_a1.tavern.yaml b/integration_tests/test_a1.tavern.yaml index f1b0f6a..bdd8d45 100644 --- a/integration_tests/test_a1.tavern.yaml +++ b/integration_tests/test_a1.tavern.yaml @@ -10,105 +10,651 @@ stages: response: status_code: 200 - --- -test_name: test delayed policy +test_name: test admission control stages: - - name: test the delayed policy + - 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 + body: [] + + - 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 + body: [6660666] + + - name: instance list 200 but empty + request: + url: http://localhost:10000/a1-p/policytypes/6660666/policies + method: GET + response: + status_code: 200 + body: [] + + - 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/policies/test_policy + 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 + body: + class: 12 + enforce: true + 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/6660666/policies/admission_control_policy/status + method: GET + response: + status_code: 200 + 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/6660666/policies + method: GET response: status_code: 200 body: - ACK_FROM: DELAYED_TEST - status: SUCCESS + - 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: 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/6660666/policies + method: GET + response: + status_code: 200 + body: [] + + - 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 + body: [] --- -test_name: test admission control +test_name: test the delay receiver stages: - - name: test the admission control policy + + - name: test the delay policy type not there yet request: - url: http://localhost:10000/a1-p/policies/admission_control_policy + 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 + body: [] + + - 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: - enforce: true - window_length: 10 - blocking_rate: 20 - trigger_threshold: 10 + 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 + body: + 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 + body: + - 20001 + + - name: instance list 200 but empty + request: + url: http://localhost:10000/a1-p/policytypes/20001/policies + method: GET + response: + status_code: 200 + body: [] + + - 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 body: - ACK_FROM: ADMISSION_CONTROL - status: SUCCESS + instance_status: "NOT IN EFFECT" + has_been_deleted: False - - name: test the admission control policy get + - name: test the delay policy get + request: + url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest + method: GET + response: + status_code: 200 + 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 request: - url: http://localhost:10000/a1-p/policies/admission_control_policy + url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest/status method: GET response: status_code: 200 body: - mock return from FETCH: pretend policy is here + instance_status: "IN EFFECT" + has_been_deleted: False + + # 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 + body: + 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: bad_requests +test_name: test query stages: - - name: does not exist + - 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/policies/darkness + 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: 404 + status_code: 202 - - name: bad body for admission control policy + - name: instance 2 request: - url: http://localhost:10000/a1-p/policies/admission_control_policy + url: http://localhost:10000/a1-p/policytypes/1006001/policies/qt2 method: PUT json: - not: "expected" + foo: "bar2" headers: content-type: application/json response: - status_code: 400 + status_code: 202 - - name: not a json + - name: instance list request: - url: http://localhost:10000/a1-p/policies/admission_control_policy + 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 + # 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 + body: + instance_status: "IN EFFECT" + has_been_deleted: False + + - 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 + body: + instance_status: "IN EFFECT" + has_been_deleted: False + +--- + +test_name: test bad routing file endpoint + +stages: + + - name: put the type + request: + url: http://localhost:10000/a1-p/policytypes/20002 method: PUT - data: "asdf" + 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: 415 + 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 + body: [] + + # 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 body for test policy + - name: bad instance get bad type request: - url: http://localhost:10000/a1-p/policies/test_policy + 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: - not: "welcome" + 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: test policy doesnt support fetch + - name: bad int range 2 request: - url: http://localhost:10000/a1-p/policies/test_policy - method: GET + 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