Skip to content
Snippets Groups Projects
Commit 58749af8 authored by Jean-Paul Calderone's avatar Jean-Paul Calderone
Browse files

Pull the Tahoe test code out of the Nix test module

parent 09adcab5
No related branches found
No related tags found
2 merge requests!264merge develop into production,!239Minor factoring improvements to the tests
{
/* Returns a string that runs tests from the Python code at the given path.
The Python code is loaded using *execfile* and the *test* global it
defines is called with the given keyword arguments.
Type: makeTestScript :: Path -> AttrSet -> String
Example:
testScript = (makeTestScript ./test_foo.py { x = "y"; });
*/
makeTestScript = { testpath, kwargs ? {} }:
''
# The driver runs pyflakes on this script before letting it
# run... Convince pyflakes that there is a `test` name.
test = None
with open("${testpath}") as testfile:
exec(testfile.read(), globals())
# For simple types, JSON is compatible with Python syntax!
test(**${builtins.toJSON kwargs})
'';
}
{ ... }:
{
let
makeTestScript = (import ../lib/testing.nix).makeTestScript;
in
{
nodes = {
storage = { config, pkgs, ourpkgs, ... }: {
imports = [
......@@ -23,50 +25,7 @@
};
};
};
testScript = ''
start_all()
# After the service starts, destroy the "created" marker to force it to
# re-create its internal state.
storage.wait_for_open_port(4001)
storage.succeed("systemctl stop tahoe.storage")
storage.succeed("rm /var/db/tahoe-lafs/storage.created")
storage.succeed("systemctl start tahoe.storage")
# After it starts up again, verify it has consistent internal state and a
# backup of the prior state.
storage.wait_for_open_port(4001)
storage.succeed("[ -e /var/db/tahoe-lafs/storage ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.created ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1 ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1/private/node.privkey ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1/private/node.pem ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage.2 ]")
# Stop it again, once again destroy the "created" marker, and this time also
# jam some partial state in the way that will need cleanup.
storage.succeed("systemctl stop tahoe.storage")
storage.succeed("rm /var/db/tahoe-lafs/storage.created")
storage.succeed("mkdir -p /var/db/tahoe-lafs/storage.atomic/partial")
try:
storage.succeed("systemctl start tahoe.storage")
except:
x, y = storage.execute("journalctl -u tahoe.storage")
storage.log(y)
raise
# After it starts up again, verify it has consistent internal state and
# backups of the prior two states. It also has no copy of the inconsistent
# state because it could never have been used.
storage.wait_for_open_port(4001)
storage.succeed("[ -e /var/db/tahoe-lafs/storage ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.created ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1 ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.2 ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.2/private/node.privkey ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.2/private/node.pem ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage.atomic ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage/partial ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage.3 ]")
'';
testScript = makeTestScript {
testpath = ./test_tahoe.py;
};
}
def test():
start_all()
# After the service starts, destroy the "created" marker to force it to
# re-create its internal state.
storage.wait_for_open_port(4001)
storage.succeed("systemctl stop tahoe.storage")
storage.succeed("rm /var/db/tahoe-lafs/storage.created")
storage.succeed("systemctl start tahoe.storage")
# After it starts up again, verify it has consistent internal state and a
# backup of the prior state.
storage.wait_for_open_port(4001)
storage.succeed("[ -e /var/db/tahoe-lafs/storage ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.created ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1 ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1/private/node.privkey ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1/private/node.pem ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage.2 ]")
# Stop it again, once again destroy the "created" marker, and this time also
# jam some partial state in the way that will need cleanup.
storage.succeed("systemctl stop tahoe.storage")
storage.succeed("rm /var/db/tahoe-lafs/storage.created")
storage.succeed("mkdir -p /var/db/tahoe-lafs/storage.atomic/partial")
try:
storage.succeed("systemctl start tahoe.storage")
except:
x, y = storage.execute("journalctl -u tahoe.storage")
storage.log(y)
raise
# After it starts up again, verify it has consistent internal state and
# backups of the prior two states. It also has no copy of the inconsistent
# state because it could never have been used.
storage.wait_for_open_port(4001)
storage.succeed("[ -e /var/db/tahoe-lafs/storage ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.created ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.1 ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.2 ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.2/private/node.privkey ]")
storage.succeed("[ -e /var/db/tahoe-lafs/storage.2/private/node.pem ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage.atomic ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage/partial ]")
storage.succeed("[ ! -e /var/db/tahoe-lafs/storage.3 ]")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment