Compare commits
No commits in common. "master" and "0.5.1" have entirely different histories.
@ -180,9 +180,7 @@ proc start*(cfg: StrawBossConfig): void =
|
|||||||
try:
|
try:
|
||||||
let authToken = makeAuthToken(cfg, uname, pwd)
|
let authToken = makeAuthToken(cfg, uname, pwd)
|
||||||
resp($(%authToken), JSON)
|
resp($(%authToken), JSON)
|
||||||
except:
|
except: jsonResp(Http401, getCurrentExceptionMsg())
|
||||||
jsonResp(Http401, getCurrentExceptionMsg())
|
|
||||||
if ctx.cfg.debug: echo getStackTrace()
|
|
||||||
|
|
||||||
get "/verify-auth":
|
get "/verify-auth":
|
||||||
checkAuth()
|
checkAuth()
|
||||||
@ -268,12 +266,13 @@ 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(@"projectName", $it.runId));
|
.mapIt(cfg.getRun(@"projecName", $it.runId));
|
||||||
resp($(%activeRuns), JSON)
|
resp($(%activeRuns), JSON)
|
||||||
|
except:
|
||||||
|
try: raise getCurrentException()
|
||||||
except NotFoundException:
|
except NotFoundException:
|
||||||
jsonResp(Http404, getCurrentExceptionMsg())
|
jsonResp(Http404, getCurrentExceptionMsg())
|
||||||
except:
|
except:
|
||||||
@ -447,7 +446,7 @@ proc start*(cfg: StrawBossConfig): void =
|
|||||||
|
|
||||||
|
|
||||||
get re".*":
|
get re".*":
|
||||||
jsonResp(Http404, "URL [" & request.path & "] is not present on this server.")
|
jsonResp(Http404)
|
||||||
|
|
||||||
post re".*":
|
post re".*":
|
||||||
jsonResp(Http404)
|
jsonResp(Http404)
|
||||||
|
@ -2,7 +2,6 @@ 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
|
||||||
@ -206,40 +205,9 @@ 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)
|
||||||
|
|
||||||
test "kick off multiple runs and check the list of active runs via the API":
|
# TODO
|
||||||
let http = newAuthenticatedHttpClient(apiBase, "bob@builder.com", "password")
|
#test "kick off multiple runs and check the list of active runs via the API":
|
||||||
|
# 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 ab883bd9602a1373347a23c8bee4ed28dd475aec
|
Subproject commit 127be8f66fcc6d4d223acf56668d42ff9c37bfb0
|
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 example.json dist/."
|
exec "cp strawboss strawboss.config.json dist/."
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
"steps": {
|
"steps": {
|
||||||
"compile": {
|
"compile": {
|
||||||
"artifacts": ["strawboss"],
|
"artifacts": ["strawboss"],
|
||||||
|
"containerImage": "nimlang/nim:0.19.0",
|
||||||
"stepCmd": "nimble build"
|
"stepCmd": "nimble build"
|
||||||
},
|
},
|
||||||
"unittest": {
|
"unittest": {
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
Run a build. Look for:
|
|
||||||
- Run request archived
|
|
||||||
- Output logs archived with the run request
|
|
||||||
- Artifacts archived in the build-data directory.
|
|
||||||
- Configuration for that version archived in configurations directory.
|
|
||||||
- Status for that version archived in the status directory
|
|
||||||
|
|
||||||
Run the build again for the same project and build ref:
|
|
||||||
- Build should be skipped.
|
|
||||||
- Run request should be archived.
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user