1import ../make-test-python.nix ({...}: {
2 nodes = {
3 namenode = {pkgs, ...}: {
4 services.hadoop = {
5 package = pkgs.hadoop_3_1;
6 hdfs.namenode.enabled = true;
7 coreSite = {
8 "fs.defaultFS" = "hdfs://namenode:8020";
9 };
10 hdfsSite = {
11 "dfs.replication" = 1;
12 "dfs.namenode.rpc-bind-host" = "0.0.0.0";
13 "dfs.namenode.http-bind-host" = "0.0.0.0";
14 };
15 };
16 networking.firewall.allowedTCPPorts = [
17 9870 # namenode.http-address
18 8020 # namenode.rpc-address
19 ];
20 };
21 datanode = {pkgs, ...}: {
22 services.hadoop = {
23 package = pkgs.hadoop_3_1;
24 hdfs.datanode.enabled = true;
25 coreSite = {
26 "fs.defaultFS" = "hdfs://namenode:8020";
27 };
28 };
29 networking.firewall.allowedTCPPorts = [
30 9864 # datanode.http.address
31 9866 # datanode.address
32 9867 # datanode.ipc.address
33 ];
34 };
35 };
36
37 testScript = ''
38 start_all()
39
40 namenode.wait_for_unit("hdfs-namenode")
41 namenode.wait_for_unit("network.target")
42 namenode.wait_for_open_port(8020)
43 namenode.wait_for_open_port(9870)
44
45 datanode.wait_for_unit("hdfs-datanode")
46 datanode.wait_for_unit("network.target")
47 datanode.wait_for_open_port(9864)
48 datanode.wait_for_open_port(9866)
49 datanode.wait_for_open_port(9867)
50
51 namenode.succeed("curl -f http://namenode:9870")
52 datanode.succeed("curl -f http://datanode:9864")
53 '';
54})