Fix typo in active runs API, add functional test for same.
This commit is contained in:
parent
ee1147a1a5
commit
774d0b446f
@ -266,17 +266,16 @@ proc start*(cfg: StrawBossConfig): void =
|
|||||||
|
|
||||||
checkAuth()
|
checkAuth()
|
||||||
|
|
||||||
|
var details = ""
|
||||||
try:
|
try:
|
||||||
let activeRuns = workers
|
let activeRuns = workers
|
||||||
.filterIt(it.process.running and it.projectName == @"projectName")
|
.filterIt(it.process.running and it.projectName == @"projectName")
|
||||||
.mapIt(cfg.getRun(@"projecName", $it.runId));
|
.mapIt(cfg.getRun(@"projectName", $it.runId));
|
||||||
resp($(%activeRuns), JSON)
|
resp($(%activeRuns), JSON)
|
||||||
|
except NotFoundException:
|
||||||
|
jsonResp(Http404, getCurrentExceptionMsg())
|
||||||
except:
|
except:
|
||||||
try: raise getCurrentException()
|
json500Resp(getCurrentException(), "problem loading active runs")
|
||||||
except NotFoundException:
|
|
||||||
jsonResp(Http404, getCurrentExceptionMsg())
|
|
||||||
except:
|
|
||||||
json500Resp(getCurrentException(), "problem loading active runs")
|
|
||||||
|
|
||||||
get "/project/@projectName/run/@runId":
|
get "/project/@projectName/run/@runId":
|
||||||
## Details for a specific run
|
## Details for a specific run
|
||||||
|
@ -2,6 +2,7 @@ import cliutils, httpclient, json, os, osproc, sequtils, strutils, tempfile,
|
|||||||
times, unittest, untar, uuids
|
times, unittest, untar, uuids
|
||||||
|
|
||||||
from langutils import sameContents
|
from langutils import sameContents
|
||||||
|
from algorithm import sorted
|
||||||
|
|
||||||
import ../testutil
|
import ../testutil
|
||||||
import ../../../main/nim/strawbosspkg/configuration
|
import ../../../main/nim/strawbosspkg/configuration
|
||||||
@ -205,9 +206,40 @@ suite "strawboss server":
|
|||||||
# Run the "build" step
|
# Run the "build" step
|
||||||
# Kick off a build that depends on "build" (which was run in the last test)
|
# Kick off a build that depends on "build" (which was run in the last test)
|
||||||
|
|
||||||
# TODO
|
test "kick off multiple runs and check the list of active runs via the API":
|
||||||
#test "kick off multiple runs and check the list of active runs via the API":
|
let http = newAuthenticatedHttpClient(apiBase, "bob@builder.com", "password")
|
||||||
# check false
|
|
||||||
|
# Kick off multiple runs of the "long-running" job
|
||||||
|
let queuedRuns = toSeq((1..3)).map(proc (idx: int): Run =
|
||||||
|
let resp = http.post(apiBase & "/project/" & testProjName & "/step/long-running/run/0.3.1")
|
||||||
|
check resp.status.startsWith("200")
|
||||||
|
|
||||||
|
return parseRun(parseJson(resp.body)))
|
||||||
|
|
||||||
|
# Collect run ids.
|
||||||
|
let runIds = queuedRuns.mapIt($(it.id)).sorted(cmpIgnoreCase)
|
||||||
|
|
||||||
|
# Check on the runs
|
||||||
|
let getActiveResp = http.get(apiBase & "/project/" & testProjName & "/runs/active")
|
||||||
|
check getActiveResp.status.startsWith("200")
|
||||||
|
|
||||||
|
let activeRuns = parseJson(getActiveResp.body).getElems().mapIt(parseRun(it))
|
||||||
|
let activeRunIds = activeRuns.mapIt($(it.id)).sorted(cmpIgnoreCase)
|
||||||
|
|
||||||
|
# Make sure we see all runs in the active state.
|
||||||
|
check runIds == activeRunIds
|
||||||
|
|
||||||
|
let completedRuns = runIds.map(proc (runId: string): Run =
|
||||||
|
return http.waitForBuild(apiBase, testProjName, runId))
|
||||||
|
|
||||||
|
# Make sure all are completed and all are accounted for
|
||||||
|
check completedRuns.allIt(it.status.state == BuildState.complete)
|
||||||
|
check completedRuns.mapIt($(it.id)).sorted(cmpIgnoreCase) == runIds;
|
||||||
|
|
||||||
|
# Check that there are no more active runs
|
||||||
|
let getActiveResp2 = http.get(apiBase & "/project/" & testProjName & "/runs/active")
|
||||||
|
let remainingActiveRuns = parseJson(getActiveResp2.body).getElems().mapIt(parseRun(it))
|
||||||
|
check remainingActiveRuns.len == 0
|
||||||
|
|
||||||
# Last-chance catch to kill the server in case some test err'ed and didn't
|
# Last-chance catch to kill the server in case some test err'ed and didn't
|
||||||
# reach it's teardown handler
|
# reach it's teardown handler
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 127be8f66fcc6d4d223acf56668d42ff9c37bfb0
|
Subproject commit ab883bd9602a1373347a23c8bee4ed28dd475aec
|
Binary file not shown.
@ -48,4 +48,4 @@ task test, "Runs both the unit and functional test suites.":
|
|||||||
task dist, "Creates distributable package.":
|
task dist, "Creates distributable package.":
|
||||||
exec "nimble build"
|
exec "nimble build"
|
||||||
mkdir "dist"
|
mkdir "dist"
|
||||||
exec "cp strawboss strawboss.config.json dist/."
|
exec "cp strawboss strawboss.config.json example.json dist/."
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
"steps": {
|
"steps": {
|
||||||
"compile": {
|
"compile": {
|
||||||
"artifacts": ["strawboss"],
|
"artifacts": ["strawboss"],
|
||||||
"containerImage": "nimlang/nim:0.19.0",
|
|
||||||
"stepCmd": "nimble build"
|
"stepCmd": "nimble build"
|
||||||
},
|
},
|
||||||
"unittest": {
|
"unittest": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user