aboutsummaryrefslogtreecommitdiff
path: root/tests/integration
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-04-19 08:02:53 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-04-19 08:02:53 +0200
commitefa53d6ad8797310b10d299408c2e3fa33978e27 (patch)
tree6256e22e53b1ad9f8555e228d0ef89bd024ff292 /tests/integration
parent9b5170a723c9c78103fbd66c5c3b2b32a9af6702 (diff)
Add --fake-machine and machine-less agent/worker test
Diffstat (limited to 'tests/integration')
-rw-r--r--tests/integration/buildfile8
-rw-r--r--tests/integration/testscript98
-rw-r--r--tests/integration/tftp-map11
3 files changed, 117 insertions, 0 deletions
diff --git a/tests/integration/buildfile b/tests/integration/buildfile
new file mode 100644
index 0000000..f054694
--- /dev/null
+++ b/tests/integration/buildfile
@@ -0,0 +1,8 @@
+# file : tests/integration/buildfile
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+./: ../../bbot/exe{bbot-agent bbot-worker} test{testscript} file{tftp-map}
+dir{./}: test = ../../bbot/exe{bbot-agent}
+
+include ../../bbot/
diff --git a/tests/integration/testscript b/tests/integration/testscript
new file mode 100644
index 0000000..f43bf02
--- /dev/null
+++ b/tests/integration/testscript
@@ -0,0 +1,98 @@
+# file : tests/integration/testscript
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+#\
+# Requirement:
+#
+# 1. tftpd-hpa installed (assumed in /usr/sbin/in.tftpd)
+#
+# 2. b, bpkg, curl executables in PATH.
+#
+# TFTP server (tftpd-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 \
+ --map-file tftp-map \
+ "$(pwd)"
+
+#\
+
+machine = linux-gcc
+c = gcc
+cxx = g++
+
+# Where we get the task and what we do with the result can be configured
+# independently:
+#
+# - We can poll a controller for a task by specifying its URL or we can
+# read a task manifest from a file (--fake-request).
+#
+# - We can send the result back to the controller or we can dump the result
+# to stdout (--dump-result).
+#
+
+#\
+wait=5s
+controller = https://stage.build2.org/?build-task
+#\
+
+wait=1s
+controller = --fake-request ../task --dump-result
+
+pkg = hello
+ver = 1.0.0
+rep = https://build2.org/pkg/1/stage/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
++cat <<"EOI" >=task
+ : 1
+ name: $pkg
+ version: $ver
+ repository: $rep
+ trust: $rfp
+ machine: $machine
+ EOI
+
+#
+#
+tftp = 127.0.0.1:55123
+
+a = $0
++ sed -e 's/-agent$/-worker/' <"$0" | set w
+
+: agent
+:
+{
+ cat <<"EOI" >=machine-header;
+ : 1
+ id: $machine-1.0
+ name: $machine
+ summary: The $machine fake machine
+ EOI
+ $a --verbose 3 --tftp $~ --fake-machine machine-header $controller \
+ &build/*** >| 2>|
+}
+
+: worker
+:
+{
+ cat <<"EOI" >=default;
+ #!/bin/sh
+
+ t="\$1"
+ shift
+
+ exec "\$@" cc config.c=$c config.cxx=$cxx
+ EOI
+ chmod ugo+x default;
+ sleep $wait;
+ $w --verbose 3 --startup --tftp-host $tftp --environment \
+ &$machine/*** &manifest $~ 2>|
+}
diff --git a/tests/integration/tftp-map b/tests/integration/tftp-map
new file mode 100644
index 0000000..837794d
--- /dev/null
+++ b/tests/integration/tftp-map
@@ -0,0 +1,11 @@
+# file : tests/integration/tftp-map
+# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+# license : TBC; see accompanying LICENSE file
+
+# Test working directories relative to out_base:
+#
+# agent: test/agent/
+# worker: test/worker/
+#
+Gr ^/?(.+)$ /test/agent/build/default/get/\1
+Pr ^/?(.+)$ /test/agent/build/default/put/\1