d1f57cbaf0
Convenience shortcut which automatically configures the firewall to open the port which is also configured for the spacecookie service.
55 lines
1.7 KiB
Nix
55 lines
1.7 KiB
Nix
let
|
|
gopherRoot = "/tmp/gopher";
|
|
gopherHost = "gopherd";
|
|
gopherClient = "client";
|
|
fileContent = "Hello Gopher!\n";
|
|
fileName = "file.txt";
|
|
in
|
|
import ./make-test-python.nix ({...}: {
|
|
name = "spacecookie";
|
|
nodes = {
|
|
${gopherHost} = {
|
|
systemd.services.spacecookie = {
|
|
preStart = ''
|
|
mkdir -p ${gopherRoot}/directory
|
|
printf "%s" "${fileContent}" > ${gopherRoot}/${fileName}
|
|
'';
|
|
};
|
|
|
|
services.spacecookie = {
|
|
enable = true;
|
|
root = gopherRoot;
|
|
hostname = gopherHost;
|
|
openFirewall = true;
|
|
};
|
|
};
|
|
|
|
${gopherClient} = {};
|
|
};
|
|
|
|
testScript = ''
|
|
start_all()
|
|
|
|
# with daemon type notify, the unit being started
|
|
# should also mean the port is open
|
|
${gopherHost}.wait_for_unit("spacecookie.service")
|
|
${gopherClient}.wait_for_unit("network.target")
|
|
|
|
fileResponse = ${gopherClient}.succeed("curl -f -s gopher://${gopherHost}/0/${fileName}")
|
|
|
|
# the file response should return our created file exactly
|
|
if not (fileResponse == "${builtins.replaceStrings [ "\n" ] [ "\\n" ] fileContent}"):
|
|
raise Exception("Unexpected file response")
|
|
|
|
# sanity check on the directory listing: we serve a directory and a file
|
|
# via gopher, so the directory listing should have exactly two entries,
|
|
# one with gopher file type 0 (file) and one with file type 1 (directory).
|
|
dirResponse = ${gopherClient}.succeed("curl -f -s gopher://${gopherHost}")
|
|
dirEntries = [l[0] for l in dirResponse.split("\n") if len(l) > 0]
|
|
dirEntries.sort()
|
|
|
|
if not (["0", "1"] == dirEntries):
|
|
raise Exception("Unexpected directory response")
|
|
'';
|
|
})
|