aboutsummaryrefslogtreecommitdiff
path: root/tests/worker
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-04-18 13:29:50 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-04-18 13:29:50 +0200
commit0e2f76b6f0ecb4b4c00a4c8001843b3c54bc08ad (patch)
tree3f0735a7b7e0be27823b23e24806fe9650548dc6 /tests/worker
parent1804e3e8cf3b8f1bb14e197dada1697c40bed144 (diff)
Finish agent and worker logic
Diffstat (limited to 'tests/worker')
-rw-r--r--tests/worker/bootstrap.test13
-rw-r--r--tests/worker/build.test133
-rw-r--r--tests/worker/buildfile26
-rw-r--r--tests/worker/startup.test101
4 files changed, 273 insertions, 0 deletions
diff --git a/tests/worker/bootstrap.test b/tests/worker/bootstrap.test
new file mode 100644
index 0000000..91e4417
--- /dev/null
+++ b/tests/worker/bootstrap.test
@@ -0,0 +1,13 @@
+# file : tests/worker/bootstrap.test
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+test.options = --bootstrap
+
+$* >>~%EOO%
+: 1
+%bbot-version: \d+%
+%libbbot-version: \d+%
+%libbpkg-version: \d+%
+%libbutl-version: \d+%
+EOO
diff --git a/tests/worker/build.test b/tests/worker/build.test
new file mode 100644
index 0000000..adedccc
--- /dev/null
+++ b/tests/worker/build.test
@@ -0,0 +1,133 @@
+# file : tests/worker/build.test
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+# Note: requires TFTP server (see buildfile).
+
+tftp = 127.0.0.1:55123/test
+
+pkg = hello
+ver = 1.0.0
+
+#rep = /home/boris/work/build2/hello/repository/1/stable
+rep = https://build2.org/pkg/1/stage/stable
+#rep = https://build2.org/pkg/1/hello/stable
+
+rfp = FF:DF:7D:38:67:4E:C3:82:65:7E:EE:1F:D4:80:EC:56:C4:33:5B:65:3F:9B:29:9A:30:56:B9:77:B9:F2:01:94
+
+: pass
+:
+cat <<"EOI" >=manifest;
+ : 1
+ name: $pkg
+ version: $ver
+ repository: $rep
+ trust: $rfp
+ machine: linux-gcc
+ target: x86_64-linux-gnu
+ config: config.cc.coptions=-O3
+ EOI
+$* --verbose 3 --tftp-host "$tftp/$@" cc &build/*** 2>>"EOE";
+ trace: build: bpkg -v create -d build --wipe config.cc.coptions=-O3 cc
+ trace: build: bpkg -v add $rep
+ trace: build: bpkg -v fetch --trust $rfp --trust-no
+ trace: build: bpkg -v build --configure-only --yes $pkg/$ver
+ trace: build: bpkg -v update $pkg
+ trace: build: bpkg -v test $pkg
+ trace: build: curl -s -S --upload-file - --max-time 10 tftp://$tftp/$@/manifest
+ EOE
+cat manifest >>~"%EOO%"
+ : 1
+ name: $pkg
+ version: $ver
+ status: success
+ configure-status: success
+ update-status: success
+ test-status: success
+ configure-log: \\
+ %.*%+
+ \\
+ update-log: \\
+ %.*%+
+ \\
+ test-log: \\
+ %.*%+
+ \\
+ EOO
+
+
+: fail-abnormal
+:
+cat <<"EOI" >=manifest;
+ : 1
+ foo: bar
+ EOI
+$* --verbose 3 --tftp-host "$tftp/$@" cc 2>>"EOE" != 0
+ error: invalid task manifest: manifest:3:1: no task package name specified
+ EOE
+
+
+: fail-configure
+:
+cat <<"EOI" >=manifest;
+ : 1
+ name: bogus
+ version: 1.2.3
+ repository: $rep
+ trust: $rfp
+ machine: linux-gcc
+ target: x86_64-linux-gnu
+ EOI
+$* --verbose 3 --tftp-host "$tftp/$@" cc &build/*** 2>>"EOE";
+ trace: build: bpkg -v create -d build --wipe cc
+ trace: build: bpkg -v add $rep
+ trace: build: bpkg -v fetch --trust $rfp --trust-no
+ trace: build: bpkg -v build --configure-only --yes bogus/1.2.3
+ trace: build: curl -s -S --upload-file - --max-time 10 tftp://$tftp/$@/manifest
+ EOE
+cat manifest >>~"%EOO%"
+ : 1
+ name: bogus
+ version: 1.2.3
+ status: error
+ configure-status: error
+ configure-log: \\
+ %.*%+
+ \\
+ EOO
+
+
+: fail-update
+:
+cat <<"EOI" >=manifest;
+ : 1
+ name: $pkg
+ version: $ver
+ repository: $rep
+ trust: $rfp
+ machine: linux-gcc
+ target: x86_64-linux-gnu
+ config: config.cc.loptions=-lbogus
+ EOI
+$* --verbose 3 --tftp-host "$tftp/$@" cc &build/*** 2>>"EOE";
+ trace: build: bpkg -v create -d build --wipe config.cc.loptions=-lbogus cc
+ trace: build: bpkg -v add $rep
+ trace: build: bpkg -v fetch --trust $rfp --trust-no
+ trace: build: bpkg -v build --configure-only --yes $pkg/$ver
+ trace: build: bpkg -v update $pkg
+ trace: build: curl -s -S --upload-file - --max-time 10 tftp://$tftp/$@/manifest
+ EOE
+cat manifest >>~"%EOO%"
+ : 1
+ name: $pkg
+ version: $ver
+ status: error
+ configure-status: success
+ update-status: error
+ configure-log: \\
+ %.*%+
+ \\
+ update-log: \\
+ %.*%+
+ \\
+ EOO
diff --git a/tests/worker/buildfile b/tests/worker/buildfile
new file mode 100644
index 0000000..7d0a206
--- /dev/null
+++ b/tests/worker/buildfile
@@ -0,0 +1,26 @@
+# file : tests/worker/buildfile
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+#\
+
+Some tests in this directory require a running TFTP server.
+
+TFTP server (tftp-hpa) setup: from the test out_base, run (sudo is required
+for --secure/chroot):
+
+sudo /usr/sbin/in.tftpd \
+ --foreground \
+ --address 127.0.0.1:55123 \
+ --user "$(whoami)" \
+ --permissive \
+ --create \
+ --secure \
+ "$(pwd)"
+
+#\
+
+./: ../../bbot/exe{bbot-worker} test{bootstrap startup build}
+dir{./}: test = ../../bbot/exe{bbot-worker}
+
+include ../../bbot/
diff --git a/tests/worker/startup.test b/tests/worker/startup.test
new file mode 100644
index 0000000..d13e6c5
--- /dev/null
+++ b/tests/worker/startup.test
@@ -0,0 +1,101 @@
+# file : tests/worker/startup.test
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+# Note: requires TFTP server (see buildfile).
+
+test.options = --startup
+tftp = 127.0.0.1:55123/test
+
+: fail-download
+:
+$* --tftp-host "$tftp/$@" 2>>"EOE" &manifest != 0;
+ curl: \(68\) TFTP: File Not Found
+ error: unable to download task manifest from tftp://$tftp/$@/manifest: input/output error
+ EOE
+diff -u - manifest <<EOO
+ : 1
+ name: unknown
+ version: 0
+ status: abnormal
+ EOO
+
+: fail-manifest
+:
+cat <': 1' >=manifest;
+$* --tftp-host "$tftp/$@" 2>>"EOE" != 0;
+ error: invalid task manifest: manifest:2:1: no task package name specified
+ EOE
+diff -u - manifest <<EOO
+ : 1
+ name: unknown
+ version: 0
+ status: abnormal
+ EOO
+
+: fail-env-search
+:
+cat <<EOI >=manifest;
+ : 1
+ name: libhello
+ version: 1.2.3
+ repository: https://pkg.example.org/1/
+ machine: linux-gcc
+ EOI
+$* --environment $~ --tftp-host "$tftp/$@" 2>>"EOE" != 0;
+ error: no environment setup executable in $representation($~) for target ''
+ EOE
+diff -u - manifest <<EOO
+ : 1
+ name: libhello
+ version: 1.2.3
+ status: abnormal
+ EOO
+
+: fail-env-run
+:
+cat <<EOI >=x86_64-linux-gnu;
+ #!/bin/sh
+ echo "environment setup failed"
+ exit 1
+ EOI
+chmod ugo+x x86_64-linux-gnu;
+cat <<EOI >=manifest;
+ : 1
+ name: libhello
+ version: 1.2.3
+ repository: https://pkg.example.org/1/
+ machine: linux-gcc
+ target: x86_64-linux-gnu
+ EOI
+$* --environment $~ --tftp-host "$tftp/$@" 2>>"EOE" != 0;
+ environment setup failed
+ error: process $~/x86_64-linux-gnu terminated with non-zero exit code
+ EOE
+diff -u - manifest <<EOO
+ : 1
+ name: libhello
+ version: 1.2.3
+ status: abnormal
+ EOO
+
+: pass
+:
+cat <<EOI >=x86_64-linux-gnu;
+ #!/bin/sh
+ echo "$1"
+ echo "$2"
+ EOI
+chmod ugo+x x86_64-linux-gnu;
+cat <<EOI >=manifest;
+ : 1
+ name: libhello
+ version: 1.2.3
+ repository: https://pkg.example.org/1/
+ machine: linux-gcc
+ target: x86_64-linux-gnu
+ EOI
+$* --environment $~ --tftp-host "$tftp/$@" 2>>"EOE"
+ x86_64-linux-gnu
+ $0
+ EOE