at master 1.4 kB view raw
1{ pkgs, ... }: 2let 3 client = 4 { pkgs, ... }: 5 { 6 environment.systemPackages = [ pkgs.croc ]; 7 }; 8 pass = "PassRelay"; 9in 10{ 11 name = "croc"; 12 meta = with pkgs.lib.maintainers; { 13 maintainers = [ 14 equirosa 15 SuperSandro2000 16 ryan4yin 17 ]; 18 }; 19 20 nodes = { 21 relay = { 22 services.croc = { 23 enable = true; 24 pass = pass; 25 openFirewall = true; 26 }; 27 }; 28 sender = client; 29 receiver = client; 30 }; 31 32 testScript = '' 33 start_all() 34 35 # wait until relay is up 36 relay.wait_for_unit("croc") 37 relay.wait_for_open_port(9009) 38 relay.wait_for_open_port(9010) 39 relay.wait_for_open_port(9011) 40 relay.wait_for_open_port(9012) 41 relay.wait_for_open_port(9013) 42 43 # generate testfiles and send them 44 sender.wait_for_unit("multi-user.target") 45 sender.execute("echo Hello World > testfile01.txt") 46 sender.execute("echo Hello Earth > testfile02.txt") 47 sender.execute( 48 "env CROC_SECRET=topSecret croc --pass ${pass} --relay relay send testfile01.txt testfile02.txt >&2 &" 49 ) 50 51 # receive the testfiles and check them 52 receiver.succeed( 53 "env CROC_SECRET=topSecret croc --pass ${pass} --yes --relay relay" 54 ) 55 assert "Hello World" in receiver.succeed("cat testfile01.txt") 56 assert "Hello Earth" in receiver.succeed("cat testfile02.txt") 57 ''; 58}