Skip to content

Commit 9ab2c76

Browse files
committed
nixos/tests/h2o: use ports from the actual machines
1 parent 811730a commit 9ab2c76

File tree

3 files changed

+53
-45
lines changed

3 files changed

+53
-45
lines changed

nixos/tests/web-servers/h2o/basic.nix

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ let
88
TLS = "acme.test";
99
};
1010

11-
port = {
12-
HTTP = 8080;
13-
TLS = 8443;
14-
};
15-
1611
sawatdi_chao_lok = "สวัสดีชาวโลก";
1712

1813
hello_world_txt = hostPkgs.writeTextFile {
@@ -41,16 +36,16 @@ in
4136

4237
nodes = {
4338
server =
44-
{ pkgs, ... }:
39+
{ pkgs, config, ... }:
4540
{
4641
environment.systemPackages = [
4742
pkgs.curl
4843
];
4944

5045
services.h2o = {
5146
enable = true;
52-
defaultHTTPListenPort = port.HTTP;
53-
defaultTLSListenPort = port.TLS;
47+
defaultHTTPListenPort = 8080;
48+
defaultTLSListenPort = 8443;
5449
hosts = {
5550
"${domain.HTTP}" = {
5651
settings = {
@@ -107,12 +102,12 @@ in
107102

108103
networking = {
109104
firewall = {
110-
allowedTCPPorts = with port; [
111-
HTTP
112-
TLS
105+
allowedTCPPorts = with config.services.h2o; [
106+
defaultHTTPListenPort
107+
defaultTLSListenPort
113108
];
114-
allowedUDPPorts = with port; [
115-
TLS
109+
allowedUDPPorts = with config.services.h2o; [
110+
defaultTLSListenPort
116111
];
117112
};
118113
extraHosts = ''
@@ -123,9 +118,11 @@ in
123118
};
124119
};
125120
testScript =
121+
{ nodes, ... }:
126122
let
127-
portStrHTTP = builtins.toString port.HTTP;
128-
portStrTLS = builtins.toString port.TLS;
123+
inherit (nodes) server;
124+
portStrHTTP = builtins.toString server.services.h2o.defaultHTTPListenPort;
125+
portStrTLS = builtins.toString server.services.h2o.defaultTLSListenPort;
129126
in
130127
# python
131128
''

nixos/tests/web-servers/h2o/mruby.nix

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
let
44
domain = "h2o.local";
55

6-
port = 8080;
7-
86
sawatdi_chao_lok = "สวัสดีชาวโลก";
97
in
108
{
@@ -22,7 +20,7 @@ in
2220
enable = true;
2321
package = pkgs.h2o.override { withMruby = true; };
2422
settings = {
25-
listen = port;
23+
listen = 8080;
2624
hosts = {
2725
"${domain}" = {
2826
paths = {
@@ -50,8 +48,10 @@ in
5048
};
5149

5250
testScript =
51+
{ nodes, ... }:
5352
let
54-
portStr = builtins.toString port;
53+
inherit (nodes) server;
54+
portStr = builtins.toString server.services.h2o.settings.listen;
5555
in
5656
# python
5757
''

nixos/tests/web-servers/h2o/tls-recommendations.nix

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
let
44
domain = "acme.test";
5-
port = 8443;
65

76
hello_txt =
87
name:
@@ -13,7 +12,12 @@ let
1312

1413
mkH2OServer =
1514
recommendations:
16-
{ pkgs, lib, ... }:
15+
{
16+
pkgs,
17+
lib,
18+
config,
19+
...
20+
}:
1721
{
1822
services.h2o = {
1923
enable = true;
@@ -31,7 +35,8 @@ let
3135
hosts = {
3236
"${domain}" = {
3337
tls = {
34-
inherit port recommendations;
38+
inherit recommendations;
39+
port = 8443;
3540
policy = "force";
3641
identity = [
3742
{
@@ -59,7 +64,9 @@ let
5964
];
6065

6166
networking = {
62-
firewall.allowedTCPPorts = [ port ];
67+
firewall.allowedTCPPorts = [
68+
config.services.h2o.hosts.${domain}.tls.port
69+
];
6370
extraHosts = "127.0.0.1 ${domain}";
6471
};
6572
};
@@ -78,43 +85,47 @@ in
7885
};
7986

8087
testScript =
88+
{ nodes, ... }:
8189
let
82-
portStr = builtins.toString port;
90+
inherit (nodes) server_modern server_intermediate server_old;
91+
modernPortStr = builtins.toString server_modern.services.h2o.hosts.${domain}.tls.port;
92+
intermediatePortStr = builtins.toString server_intermediate.services.h2o.hosts.${domain}.tls.port;
93+
oldPortStr = builtins.toString server_old.services.h2o.hosts.${domain}.tls.port;
8394
in
8495
# python
8596
''
86-
curl_basic = "curl -v --tlsv1.3 --http2 'https://${domain}:${portStr}/'"
87-
curl_head = "curl -v --head 'https://${domain}:${portStr}/'"
88-
curl_max_tls1_2 ="curl -v --tlsv1.0 --tls-max 1.2 'https://${domain}:${portStr}/'"
89-
curl_max_tls1_2_intermediate_cipher ="curl -v --tlsv1.0 --tls-max 1.2 --ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256' 'https://${domain}:${portStr}/'"
90-
curl_max_tls1_2_old_cipher ="curl -v --tlsv1.0 --tls-max 1.2 --ciphers 'ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256' 'https://${domain}:${portStr}/'"
97+
curl_basic = "curl -v --tlsv1.3 --http2 'https://${domain}:{port}/'"
98+
curl_head = "curl -v --head 'https://${domain}:{port}/'"
99+
curl_max_tls1_2 ="curl -v --tlsv1.0 --tls-max 1.2 'https://${domain}:{port}/'"
100+
curl_max_tls1_2_intermediate_cipher ="curl -v --tlsv1.0 --tls-max 1.2 --ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256' 'https://${domain}:{port}/'"
101+
curl_max_tls1_2_old_cipher ="curl -v --tlsv1.0 --tls-max 1.2 --ciphers 'ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256' 'https://${domain}:{port}/'"
91102
92103
server_modern.wait_for_unit("h2o.service")
93-
server_modern.wait_for_open_port(${portStr})
94-
modern_response = server_modern.succeed(curl_basic)
104+
server_modern.wait_for_open_port(${modernPortStr})
105+
modern_response = server_modern.succeed(curl_basic.format(port="${modernPortStr}"))
95106
assert "Hello, modern!" in modern_response
96-
modern_head = server_modern.succeed(curl_head)
107+
modern_head = server_modern.succeed(curl_head.format(port="${modernPortStr}"))
97108
assert "strict-transport-security" in modern_head
98-
server_modern.fail(curl_max_tls1_2)
109+
server_modern.fail(curl_max_tls1_2.format(port="${modernPortStr}"))
99110
100111
server_intermediate.wait_for_unit("h2o.service")
101-
server_intermediate.wait_for_open_port(${portStr})
102-
intermediate_response = server_intermediate.succeed(curl_basic)
112+
server_intermediate.wait_for_open_port(${intermediatePortStr})
113+
intermediate_response = server_intermediate.succeed(curl_basic.format(port="${intermediatePortStr}"))
103114
assert "Hello, intermediate!" in intermediate_response
104-
intermediate_head = server_modern.succeed(curl_head)
115+
intermediate_head = server_modern.succeed(curl_head.format(port="${intermediatePortStr}"))
105116
assert "strict-transport-security" in intermediate_head
106-
server_intermediate.succeed(curl_max_tls1_2)
107-
server_intermediate.succeed(curl_max_tls1_2_intermediate_cipher)
108-
server_intermediate.fail(curl_max_tls1_2_old_cipher)
117+
server_intermediate.succeed(curl_max_tls1_2.format(port="${intermediatePortStr}"))
118+
server_intermediate.succeed(curl_max_tls1_2_intermediate_cipher.format(port="${intermediatePortStr}"))
119+
server_intermediate.fail(curl_max_tls1_2_old_cipher.format(port="${intermediatePortStr}"))
109120
110121
server_old.wait_for_unit("h2o.service")
111-
server_old.wait_for_open_port(${portStr})
112-
old_response = server_old.succeed(curl_basic)
122+
server_old.wait_for_open_port(${oldPortStr})
123+
old_response = server_old.succeed(curl_basic.format(port="${oldPortStr}"))
113124
assert "Hello, old!" in old_response
114-
old_head = server_modern.succeed(curl_head)
125+
old_head = server_modern.succeed(curl_head.format(port="${oldPortStr}"))
115126
assert "strict-transport-security" in old_head
116-
server_old.succeed(curl_max_tls1_2)
117-
server_old.succeed(curl_max_tls1_2_intermediate_cipher)
118-
server_old.succeed(curl_max_tls1_2_old_cipher)
127+
server_old.succeed(curl_max_tls1_2.format(port="${oldPortStr}"))
128+
server_old.succeed(curl_max_tls1_2_intermediate_cipher.format(port="${oldPortStr}"))
129+
server_old.succeed(curl_max_tls1_2_old_cipher.format(port="${oldPortStr}"))
119130
'';
120131
}

0 commit comments

Comments
 (0)