| # 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 |
| 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 |
| method: GET |
| response: |
| status_code: 200 |
| body: |
| - 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 |
| 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/20000/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 |
| method: GET |
| response: |
| status_code: 200 |
| body: [] |
| |
| - name: cant get instance status |
| 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 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 |
| 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/policytypes/20001/policies/delaytest/status |
| method: GET |
| response: |
| status_code: 200 |
| body: |
| 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: 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 |
| |
| |