summaryrefslogtreecommitdiff
path: root/yarns.webapp/050-hosts.yarn
diff options
context:
space:
mode:
Diffstat (limited to 'yarns.webapp/050-hosts.yarn')
-rw-r--r--yarns.webapp/050-hosts.yarn76
1 files changed, 76 insertions, 0 deletions
diff --git a/yarns.webapp/050-hosts.yarn b/yarns.webapp/050-hosts.yarn
new file mode 100644
index 0000000..dfa9e5b
--- /dev/null
+++ b/yarns.webapp/050-hosts.yarn
@@ -0,0 +1,76 @@
+Handling of Upstream Hosts
+==========================
+
+This chapter has tests for WEBAPP's handling of Upstream Hosts: getting
+the listing of repositories to mirror from the Host, and creating
+entries in the run-queue for them.
+
+
+Reading a Host specification from CONFGIT
+-----------------------------------------
+
+When there's a `troves` section in the Lorry Controller configuration
+file, the WEBAPP should include that in the list of Hosts when
+reported.
+
+ SCENARIO a Trove is listed in CONFGIT
+ GIVEN a new git repository in CONFGIT
+ AND an empty lorry-controller.conf in CONFGIT
+ AND WEBAPP uses CONFGIT as its configuration directory
+
+Note that we need to fake an Upstream Host, using static files, to keep
+test setup simpler.
+
+ AND WEBAPP fakes Upstream Host example-trove
+ AND a running WEBAPP
+
+Initially WEBAPP should report no known Hosts, and have an empty
+run-queue.
+
+ WHEN admin makes request GET /1.0/status
+ THEN response has run_queue set to []
+ AND response has hosts set to []
+
+Let's add a `troves` section to the configuration file. After WEBAPP
+reads that, it should list the added Host in status.
+
+ GIVEN lorry-controller.conf in CONFGIT adds trove example-trove
+ AND lorry-controller.conf in CONFGIT has prefixmap example:example for example-trove
+ WHEN admin makes request POST /1.0/read-configuration
+ AND admin makes request GET /1.0/status
+ THEN response has hosts item 0 field host set to "example-trove"
+
+However, this should not have made WEBAPP to fetch a new list of
+repositories from the Upstream Host.
+
+ THEN response has run_queue set to []
+
+If we tell WEBAPP to fetch the list, we should see repositories.
+
+ GIVEN Upstream Host example-trove has repository example/foo
+ WHEN admin makes request POST /1.0/ls-troves
+ AND admin makes request GET /1.0/list-queue
+ THEN response has queue set to ["example/foo"]
+
+If we re-read the configuration again, without any changes to it or to
+the fake Upstream Host's repository list, the same Host and Lorry specs
+should remain in STATEDB. (It wasn't always thus, due to a bug.)
+
+ WHEN admin makes request POST /1.0/read-configuration
+ AND admin makes request GET /1.0/status
+ THEN response has hosts item 0 field host set to "example-trove"
+ WHEN admin makes request GET /1.0/list-queue
+ THEN response has queue set to ["example/foo"]
+
+If the Upstream Host deletes a repository, we should still keep it locally, to
+avoid disasters. However, it will be removed from the Host's STATEDB,
+and it won't be lorried anymore.
+
+ GIVEN Upstream Host example-trove doesn't have repository example/foo
+ WHEN admin makes request POST /1.0/ls-troves
+ AND admin makes request GET /1.0/list-queue
+ THEN response has queue set to []
+
+Cleanup.
+
+ FINALLY WEBAPP terminates