# 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/20000 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/20000/policies method: GET response: status_code: 404 - name: put the type request: url: http://localhost:10000/a1-p/policytypes/20000 method: PUT json: name: Admission Control description: various parameters to control admission of dual connection policy_type_id: 20000 create_schema: "$schema": http://json-schema.org/draft-07/schema# type: object properties: enforce: type: boolean default: true window_length: type: integer default: 1 minimum: 1 maximum: 60 description: Sliding window length (in minutes) blocking_rate: type: number default: 10 minimum: 1 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: - enforce - blocking_rate - trigger_threshold - window_length additionalProperties: false response: status_code: 201 - name: type there now request: url: http://localhost:10000/a1-p/policytypes/20000 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: [20000] - name: instance list 200 but empty request: url: http://localhost:10000/a1-p/policytypes/20000/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/20000/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 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 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/20000/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/20000/policies/admission_control_policy method: PUT json: enforce: true window_length: 10 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/20000 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 method: GET response: status_code: 200 body: enforce: true window_length: 10 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 method: GET response: status_code: 200 # tavern doesn't yet let you check string statuses!!! - name: instance list 200 and contains the instance request: url: http://localhost:10000/a1-p/policytypes/20000/policies method: GET response: status_code: 200 body: - admission_control_policy # DELETE the instance and make sure subsequent GETs return properly - name: delete the instance request: url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy method: DELETE response: status_code: 202 - name: instance list 200 but no instance request: url: http://localhost:10000/a1-p/policytypes/20000/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 method: GET response: status_code: 404 - name: cant get instance request: url: http://localhost:10000/a1-p/policytypes/20000/policies/admission_control_policy method: GET response: status_code: 404 - name: delete ac type request: url: http://localhost:10000/a1-p/policytypes/20000 method: DELETE response: status_code: 204 - name: cant delete again request: url: http://localhost:10000/a1-p/policytypes/20000 method: DELETE response: status_code: 404 - name: cant get request: url: http://localhost:10000/a1-p/policytypes/20000 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 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 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: 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 policy get request: url: http://localhost:10000/a1-p/policytypes/20001/policies/delaytest method: GET response: status_code: 200 body: test: foo - 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 # tavern doesn't let you check non json yet! - name: instance list 200 and there request: url: http://localhost:10000/a1-p/policytypes/20001/policies method: GET response: status_code: 200 body: - delaytest --- 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 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 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/19999 method: PUT json: name: test policy description: just for testing policy_type_id: 19999 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/21024 method: PUT json: name: test policy description: just for testing policy_type_id: 21024 create_schema: "$schema": http://json-schema.org/draft-07/schema# type: object response: status_code: 400