Added more functional tests, fix bugs discovered.
* Fixed the formatting of command line logging of strawboss workers. * Fixed a bug in the (de)serialization of log levels in the strawboss service config file. * Pulled `parseBuildStatus` logic out of `loadBuildStatus` so that we could parse a JSON that didn't come from a file. * Added `parseRun` for Run objects. * Moved `/ping` to `/service/debug/ping` for symmetry with `/service/debug/stop` * Added functional tests of full builds.
This commit is contained in:
@ -143,7 +143,7 @@ proc parseStrawBossConfig*(jsonCfg: JsonNode): StrawBossConfig =
|
||||
pwdCost: int8(jsonCfg.getOrFail("pwdCost", "strawboss config").getNum),
|
||||
projects: jsonCfg.getIfExists("projects").getElems.mapIt(parseProjectDef(it)),
|
||||
maintenancePeriod: int(jsonCfg.getIfExists("maintenancePeriod").getNum(10000)),
|
||||
logLevel: parseLogLevel(jsonCfg.getIfExists("logLevel").getStr("lvlInfo")),
|
||||
logLevel: parseLogLevel(jsonCfg.getIfExists("logLevel").getStr("info")),
|
||||
users: users)
|
||||
|
||||
|
||||
@ -193,14 +193,17 @@ proc loadProjectConfig*(cfgFile: string): ProjectConfig =
|
||||
versionCmd: jsonCfg.getIfExists("versionCmd").getStr("git describe --tags --always"),
|
||||
steps: steps)
|
||||
|
||||
proc parseBuildStatus*(statusJson: JsonNode): BuildStatus =
|
||||
result = BuildStatus(
|
||||
runId: statusJson.getOrFail("runId", "run ID").getStr,
|
||||
state: parseEnum[BuildState](statusJson.getOrFail("state", "build status").getStr),
|
||||
details: statusJson.getIfExists("details").getStr("") )
|
||||
|
||||
proc loadBuildStatus*(statusFile: string): BuildStatus =
|
||||
if not existsFile(statusFile): raiseEx "status file not found: " & statusFile
|
||||
let jsonObj = parseFile(statusFile)
|
||||
|
||||
result = BuildStatus(
|
||||
runId: jsonObj.getOrFail("runId", "run ID").getStr,
|
||||
state: parseEnum[BuildState](jsonObj.getOrFail("state", "build status").getStr),
|
||||
details: jsonObj.getIfExists("details").getStr("") )
|
||||
result = parseBuildStatus(jsonObj)
|
||||
|
||||
proc parseRunRequest*(reqJson: JsonNode): RunRequest =
|
||||
result = RunRequest(
|
||||
@ -218,6 +221,12 @@ proc loadRunRequest*(reqFilePath: string): RunRequest =
|
||||
|
||||
parseRunRequest(parseFile(reqFilePath))
|
||||
|
||||
proc parseRun*(runJson: JsonNode): Run =
|
||||
result = Run(
|
||||
id: parseUUID(runJson.getOrFail("id", "Run").getStr),
|
||||
request: parseRunRequest(runJson.getOrFail("request", "Run")),
|
||||
status: parseBuildStatus(runJson.getOrFail("status", "Run")))
|
||||
|
||||
# TODO: can we use the marshal module for this?
|
||||
proc `%`*(s: BuildStatus): JsonNode =
|
||||
result = %* {
|
||||
@ -278,7 +287,7 @@ proc `%`*(cfg: StrawBossConfig): JsonNode =
|
||||
"projects": %cfg.projects,
|
||||
"pwdCost": cfg.pwdCost,
|
||||
"maintenancePeriod": cfg.maintenancePeriod,
|
||||
"logLevel": cfg.logLevel,
|
||||
"logLevel": toLower(($cfg.logLevel)[3]) & ($cfg.logLevel)[4..^1],
|
||||
"users": %cfg.users }
|
||||
|
||||
proc `%`*(run: Run): JsonNode =
|
||||
|
Reference in New Issue
Block a user