96 lines
2.3 KiB
Nix
96 lines
2.3 KiB
Nix
{
|
|
name = "syncthing";
|
|
|
|
clan = {
|
|
# test.useContainers = false;
|
|
directory = ./.;
|
|
inventory = {
|
|
|
|
machines.introducer = { };
|
|
machines.peer1 = { };
|
|
machines.peer2 = { };
|
|
|
|
instances."test" = {
|
|
module.name = "@clan/syncthing";
|
|
module.input = "self";
|
|
|
|
roles.introducer.machines.introducer.settings = {
|
|
autoAcceptDevices = true;
|
|
autoShares = [ "Shared" ];
|
|
};
|
|
roles.peer.machines.peer1 = { };
|
|
roles.peer.machines.peer2 = { };
|
|
};
|
|
};
|
|
};
|
|
|
|
nodes = {
|
|
|
|
peer1.services.syncthing.openDefaultPorts = true;
|
|
peer2.services.syncthing.openDefaultPorts = true;
|
|
|
|
introducer = {
|
|
|
|
services.syncthing.openDefaultPorts = true;
|
|
|
|
# For faster Tests
|
|
systemd.timers.syncthing-auto-accept.timerConfig = {
|
|
OnActiveSec = 1;
|
|
OnUnitActiveSec = 1;
|
|
};
|
|
|
|
services.syncthing.settings.folders = {
|
|
"Shared" = {
|
|
enable = true;
|
|
path = "~/Shared";
|
|
versioning = {
|
|
type = "trashcan";
|
|
params = {
|
|
cleanoutDays = "30";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
start_all()
|
|
|
|
# import time
|
|
# time.sleep(500000)
|
|
|
|
introducer.wait_for_unit("syncthing.service")
|
|
peer1.wait_for_unit("syncthing.service")
|
|
peer2.wait_for_unit("syncthing.service")
|
|
|
|
# Check that syncthing web interface is accessible
|
|
introducer.wait_for_open_port(8384)
|
|
peer1.wait_for_open_port(8384)
|
|
peer2.wait_for_open_port(8384)
|
|
|
|
# Basic connectivity test
|
|
introducer.succeed("curl -s http://127.0.0.1:8384")
|
|
peer1.succeed("curl -s http://127.0.0.1:8384")
|
|
peer2.succeed("curl -s http://127.0.0.1:8384")
|
|
|
|
# Check that folders are created correctly
|
|
peer1.execute("ls -la /var/lib/syncthing")
|
|
peer2.execute("ls -la /var/lib/syncthing")
|
|
|
|
peer1.wait_for_file("/var/lib/syncthing/Shared")
|
|
peer2.wait_for_file("/var/lib/syncthing/Shared")
|
|
|
|
# Check file synchronisation from peer1 to peer2
|
|
introducer.shutdown()
|
|
|
|
peer1.execute("echo hello > /var/lib/syncthing/Shared/hello")
|
|
|
|
# peer2.wait_until_succeeds("timeout 5 cat /var/lib/syncthing/Shared")
|
|
peer2.wait_for_file("/var/lib/syncthing/Shared/hello")
|
|
|
|
out = peer2.succeed("cat /var/lib/syncthing/Shared/hello")
|
|
assert "hello" in out
|
|
'';
|
|
}
|