1import ./make-test-python.nix ({ pkgs, ...} : {
2 name = "deluge";
3 meta = with pkgs.lib.maintainers; {
4 maintainers = [ flokli ];
5 };
6
7 nodes = {
8 simple1 = {
9 services.deluge = {
10 enable = true;
11 package = pkgs.deluge-1_x;
12 web = {
13 enable = true;
14 openFirewall = true;
15 };
16 };
17 };
18
19 declarative1 = {
20 services.deluge = {
21 enable = true;
22 package = pkgs.deluge-1_x;
23 openFirewall = true;
24 declarative = true;
25 config = {
26 allow_remote = true;
27 download_location = "/var/lib/deluge/my-download";
28 daemon_port = 58846;
29 listen_ports = [ 6881 6889 ];
30 };
31 web = {
32 enable = true;
33 port = 3142;
34 };
35 authFile = pkgs.writeText "deluge-auth" ''
36 localclient:a7bef72a890:10
37 andrew:password:10
38 user3:anotherpass:5
39 '';
40 };
41 };
42
43 simple2 = {
44 services.deluge = {
45 enable = true;
46 package = pkgs.deluge-2_x;
47 web = {
48 enable = true;
49 openFirewall = true;
50 };
51 };
52 };
53
54 declarative2 = {
55 services.deluge = {
56 enable = true;
57 package = pkgs.deluge-2_x;
58 openFirewall = true;
59 declarative = true;
60 config = {
61 allow_remote = true;
62 download_location = "/var/lib/deluge/my-download";
63 daemon_port = 58846;
64 listen_ports = [ 6881 6889 ];
65 };
66 web = {
67 enable = true;
68 port = 3142;
69 };
70 authFile = pkgs.writeText "deluge-auth" ''
71 localclient:a7bef72a890:10
72 andrew:password:10
73 user3:anotherpass:5
74 '';
75 };
76 };
77
78 };
79
80 testScript = ''
81 start_all()
82
83 simple1.wait_for_unit("deluged")
84 simple2.wait_for_unit("deluged")
85 simple1.wait_for_unit("delugeweb")
86 simple2.wait_for_unit("delugeweb")
87 simple1.wait_for_open_port("8112")
88 simple2.wait_for_open_port("8112")
89 declarative1.wait_for_unit("network.target")
90 declarative2.wait_for_unit("network.target")
91 declarative1.wait_until_succeeds("curl --fail http://simple1:8112")
92 declarative2.wait_until_succeeds("curl --fail http://simple2:8112")
93
94 declarative1.wait_for_unit("deluged")
95 declarative2.wait_for_unit("deluged")
96 declarative1.wait_for_unit("delugeweb")
97 declarative2.wait_for_unit("delugeweb")
98 declarative1.wait_until_succeeds("curl --fail http://declarative1:3142")
99 declarative2.wait_until_succeeds("curl --fail http://declarative2:3142")
100 declarative1.succeed(
101 "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm.*Remove a torrent'"
102 )
103 declarative2.succeed(
104 "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm.*Remove a torrent'"
105 )
106 '';
107})