1import ./make-test.nix ({ pkgs, ...} : rec {
2 name = "simple";
3 meta = with pkgs.stdenv.lib.maintainers; {
4 maintainers = [ offline ];
5 };
6
7 nodes = {
8 node1 =
9 { config, pkgs, ... }:
10 {
11 services = {
12 etcd = {
13 enable = true;
14 listenPeerUrls = ["http://0.0.0.0:7001"];
15 initialAdvertisePeerUrls = ["http://node1:7001"];
16 initialCluster = ["node1=http://node1:7001" "node2=http://node2:7001"];
17 };
18 };
19
20 services.fleet = {
21 enable = true;
22 metadata.name = "node1";
23 };
24
25 networking.firewall.allowedTCPPorts = [ 7001 ];
26 };
27
28 node2 =
29 { config, pkgs, ... }:
30 {
31 services = {
32 etcd = {
33 enable = true;
34 listenPeerUrls = ["http://0.0.0.0:7001"];
35 initialAdvertisePeerUrls = ["http://node2:7001"];
36 initialCluster = ["node1=http://node1:7001" "node2=http://node2:7001"];
37 };
38 };
39
40 services.fleet = {
41 enable = true;
42 metadata.name = "node2";
43 };
44
45 networking.firewall.allowedTCPPorts = [ 7001 ];
46 };
47 };
48
49 service = builtins.toFile "hello.service" ''
50 [Unit]
51 Description=Hello World
52
53 [Service]
54 ExecStart=/bin/sh -c "while true; do echo \"Hello, world\"; /var/run/current-system/sw/bin/sleep 1; done"
55
56 [X-Fleet]
57 MachineMetadata=name=node2
58 '';
59
60 testScript =
61 ''
62 startAll;
63 $node1->waitForUnit("fleet.service");
64 $node2->waitForUnit("fleet.service");
65
66 $node2->waitUntilSucceeds("fleetctl list-machines | grep node1");
67 $node1->waitUntilSucceeds("fleetctl list-machines | grep node2");
68
69 $node1->succeed("cp ${service} hello.service && fleetctl submit hello.service");
70 $node1->succeed("fleetctl list-unit-files | grep hello");
71 $node1->succeed("fleetctl start hello.service");
72 $node1->waitUntilSucceeds("fleetctl list-units | grep running");
73 $node1->succeed("fleetctl stop hello.service");
74 $node1->succeed("fleetctl destroy hello.service");
75 '';
76})