Skip to content
Snippets Groups Projects
tahoe.nix 2.67 KiB
Newer Older
    storage = { config, pkgs, ourpkgs, ... }: {
        ../modules/packages.nix
        ../modules/tahoe.nix
        package = ourpkgs.privatestorage;
        sections = {
          node = {
            nickname = "storage";
            "web.port" = "tcp:4000:interface=127.0.0.1";
            "tub.port" = "tcp:4001";
            "tub.location" = "tcp:127.0.0.1:4001";
          };
          storage = {
            enabled = true;
          };
        };
      };
    };
  };
  testScript = ''

  # 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 ]")