From d969f3fa5110b458bbfe5d12774024a6329a6580 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Wed, 10 Aug 2016 15:47:29 -0400 Subject: gocd-agent: 16.7.0 startup fixes + test improvements - Agent now takes a full URL to the Go.CD server - Instruct the agent to attempt restart every 30s upon failure - Test's Accept header did not match the server's expectation - Replace the tests' complex Awk matches with calls to `jq` --- .../continuous-integration/gocd-agent/default.nix | 23 ++++++----------- nixos/tests/gocd-agent.nix | 30 +++++++++++----------- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/nixos/modules/services/continuous-integration/gocd-agent/default.nix b/nixos/modules/services/continuous-integration/gocd-agent/default.nix index bc6c6d5a2582e..21f319f7fcf62 100644 --- a/nixos/modules/services/continuous-integration/gocd-agent/default.nix +++ b/nixos/modules/services/continuous-integration/gocd-agent/default.nix @@ -57,18 +57,10 @@ in { }; goServer = mkOption { - default = "127.0.0.1"; + default = "https://127.0.0.1:8154/go"; type = types.str; description = '' - Address of GoCD Server to attach the Go.CD Agent to. - ''; - }; - - goServerPort = mkOption { - default = 8153; - type = types.int; - description = '' - Port that Go.CD Server is Listening on. + URL of the GoCD Server to attach the Go.CD Agent to. ''; }; @@ -112,8 +104,8 @@ in { extraOptions = mkOption { default = [ ]; - example = [ - "-X debug" + example = [ + "-X debug" "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006" "-verbose:gc" "-Xloggc:go-agent-gc.log" @@ -170,7 +162,7 @@ in { config.environment.sessionVariables; in selectedSessionVars // - { + { NIX_REMOTE = "daemon"; AGENT_WORK_DIR = cfg.workDir; AGENT_STARTUP_ARGS = ''${concatStringsSep " " cfg.startupOptions}''; @@ -199,13 +191,14 @@ in { ${pkgs.jre}/bin/java ${concatStringsSep " " cfg.startupOptions} \ ${concatStringsSep " " cfg.extraOptions} \ -jar ${pkgs.gocd-agent}/go-agent/agent-bootstrapper.jar \ - ${cfg.goServer} \ - ${toString cfg.goServerPort} + -serverUrl ${cfg.goServer} ''; serviceConfig = { User = cfg.user; WorkingDirectory = cfg.workDir; + RestartSec = 30; + Restart = "on-failure"; }; }; }; diff --git a/nixos/tests/gocd-agent.nix b/nixos/tests/gocd-agent.nix index 34d0a800d0920..b1282acdb044e 100644 --- a/nixos/tests/gocd-agent.nix +++ b/nixos/tests/gocd-agent.nix @@ -6,7 +6,7 @@ let serverUrl = "localhost:8153/go/api/agents"; - header = "Accept: application/vnd./go.cd/v2+json"; + header = "Accept: application/vnd.go.cd.v2+json"; in import ./make-test.nix ({ pkgs, ...} : { @@ -15,26 +15,26 @@ import ./make-test.nix ({ pkgs, ...} : { maintainers = [ grahamc swarren83 ]; }; -nodes = { - gocd_agent = - { config, pkgs, ... }: - { - virtualisation.memorySize = 2048; - services.gocd-agent = { - enable = true; + nodes = { + gocd_agent = + { config, pkgs, ... }: + { + virtualisation.memorySize = 2048; + services.gocd-agent = { + enable = true; + }; + services.gocd-server = { + enable = true; + }; }; - services.gocd-server = { - enable = true; - }; - }; -}; + }; testScript = '' startAll; $gocd_agent->waitForUnit("gocd-server"); $gocd_agent->waitForOpenPort("8153"); $gocd_agent->waitForUnit("gocd-agent"); - $gocd_agent->waitUntilSucceeds("curl -s -f ${serverUrl} -H '${header}' | awk -F \" '/\"uuid\":\s\"[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/ {print $4}'"); - $gocd_agent->waitUntilSucceeds("curl -s -f ${serverUrl} -H '${header}' | awk -F \" '/\"agent_state\":\s\"Idle\"/'"); + $gocd_agent->waitUntilSucceeds("curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].uuid"); + $gocd_agent->succeed("curl ${serverUrl} -H '${header}' | ${pkgs.jq}/bin/jq -e ._embedded.agents[0].agent_state | grep -q Idle"); ''; }) -- cgit 1.4.1