Skip to content

Commit

Permalink
Add response_pause
Browse files Browse the repository at this point in the history
  • Loading branch information
mnot committed Oct 13, 2023
1 parent e81c751 commit f9b1b43
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
4 changes: 4 additions & 0 deletions test-engine/lib/testsuite-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,10 @@
]
}
},
"response_pause": {
"description": "Pause the response body by the server",
"type": "integer"
},
"expected_request_headers_missing": {
"description": "Request headers to check for absence on the server",
"type": "array",
Expand Down
4 changes: 4 additions & 0 deletions test-engine/lib/tpl/explain-test.liquid
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ The server will disconnect the client when receiving this request.
~~~
{% endif -%}

{%- if request.response_pause %}

The server will pause for {{ request.response_pause }} seconds before responding.{% endif -%}

{%- if request.response_status or request.response_headers or request.response_body %}

### The server sends a response containing:
Expand Down
18 changes: 16 additions & 2 deletions test-engine/server/handle-test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,29 @@ export default function handleTest (pathSegs, request, response) {
const cliReqNum = parseInt(request.headers['req-num'])
const reqNum = cliReqNum || srvReqNum
const reqConfig = requests[reqNum - 1]
const previousConfig = requests[reqNum - 2]
const now = Date.now()

if (!reqConfig) {
sendResponse(response, 409, `${requests[0].id} config not found for request ${srvReqNum} (anticipating ${requests.length})`)
return
}
if (reqConfig.dump) logRequest(request, srvReqNum)

// response_pause
if ('response_pause' in reqConfig) {
setTimeout(continueHandleTest, reqConfig.response_pause * 1000, uuid, request, response, requests, serverState)
} else {
continueHandleTest(uuid, request, response, requests, serverState)
}
}

function continueHandleTest (uuid, request, response, requests, serverState) {
const srvReqNum = serverState.length + 1
const cliReqNum = parseInt(request.headers['req-num'])
const reqNum = cliReqNum || srvReqNum
const reqConfig = requests[reqNum - 1]
const previousConfig = requests[reqNum - 2]
const now = Date.now()

// Determine what the response status should be
let httpStatus = reqConfig.response_status || [200, 'OK']
if ('expected_type' in reqConfig && reqConfig.expected_type.endsWith('validated')) {
Expand Down

0 comments on commit f9b1b43

Please sign in to comment.