Skip to content
Snippets Groups Projects
tahoe.nix 2.67 KiB
Newer Older
  • Learn to ignore specific revisions
  •     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 ]")