summaryrefslogtreecommitdiffstats
path: root/nixos/tests/bittorrent.nix
diff options
context:
space:
mode:
authorJacek Galowicz <jacek@galowicz.de>2020-01-14 10:18:58 +0100
committerJacek Galowicz <jacek@galowicz.de>2020-01-14 10:22:46 +0100
commitadf5642ba656a54e482fb5ad427b6c98d0c4cc50 (patch)
tree803c0d8b22fa02033445f36c45730b747fd428e9 /nixos/tests/bittorrent.nix
parente1b1f5a484f8f28d6b700a1872b2bddbbf6bf50e (diff)
nixosTests.bittorrent: Refactor declarative part
Diffstat (limited to 'nixos/tests/bittorrent.nix')
-rw-r--r--nixos/tests/bittorrent.nix157
1 files changed, 77 insertions, 80 deletions
diff --git a/nixos/tests/bittorrent.nix b/nixos/tests/bittorrent.nix
index 6889d4548b7c..0a97d5556a26 100644
--- a/nixos/tests/bittorrent.nix
+++ b/nixos/tests/bittorrent.nix
@@ -18,6 +18,17 @@ let
externalRouterAddress = "80.100.100.1";
externalClient2Address = "80.100.100.2";
externalTrackerAddress = "80.100.100.3";
+
+ transmissionConfig = { ... }: {
+ environment.systemPackages = [ pkgs.transmission ];
+ services.transmission = {
+ enable = true;
+ settings = {
+ dht-enabled = false;
+ message-level = 3;
+ };
+ };
+ };
in
{
@@ -26,92 +37,79 @@ in
maintainers = [ domenkozar eelco rob bobvanderlinden ];
};
- nodes =
- { tracker =
- { pkgs, ... }:
- { environment.systemPackages = [ pkgs.transmission ];
-
- virtualisation.vlans = [ 1 ];
- networking.interfaces.eth1.ipv4.addresses = [
- { address = externalTrackerAddress; prefixLength = 24; }
- ];
-
- # We need Apache on the tracker to serve the torrents.
- services.httpd.enable = true;
- services.httpd.virtualHosts = {
- "torrentserver.org" = {
- adminAddr = "foo@example.org";
- documentRoot = "/tmp";
- };
+ nodes = {
+ tracker = { pkgs, ... }: {
+ imports = [ transmissionConfig ];
+
+ virtualisation.vlans = [ 1 ];
+ networking.firewall.enable = false;
+ networking.interfaces.eth1.ipv4.addresses = [
+ { address = externalTrackerAddress; prefixLength = 24; }
+ ];
+
+ # We need Apache on the tracker to serve the torrents.
+ services.httpd = {
+ enable = true;
+ virtualHosts = {
+ "torrentserver.org" = {
+ adminAddr = "foo@example.org";
+ documentRoot = "/tmp";
};
-
- networking.firewall.enable = false;
-
- services.opentracker.enable = true;
-
- services.transmission.enable = true;
- services.transmission.settings.dht-enabled = false;
- services.transmission.settings.port-forwaring-enabled = false;
};
+ };
+ services.opentracker.enable = true;
+ };
- router =
- { pkgs, nodes, ... }:
- { virtualisation.vlans = [ 1 2 ];
- networking.nat.enable = true;
- networking.nat.internalInterfaces = [ "eth2" ];
- networking.nat.externalInterface = "eth1";
- networking.firewall.enable = true;
- networking.firewall.trustedInterfaces = [ "eth2" ];
- networking.interfaces.eth0.ipv4.addresses = [];
- networking.interfaces.eth1.ipv4.addresses = [
- { address = externalRouterAddress; prefixLength = 24; }
- ];
- networking.interfaces.eth2.ipv4.addresses = [
- { address = internalRouterAddress; prefixLength = 24; }
- ];
- services.miniupnpd = {
- enable = true;
- externalInterface = "eth1";
- internalIPs = [ "eth2" ];
- appendConfig = ''
- ext_ip=${externalRouterAddress}
- '';
- };
- };
+ router = { pkgs, nodes, ... }: {
+ virtualisation.vlans = [ 1 2 ];
+ networking.nat.enable = true;
+ networking.nat.internalInterfaces = [ "eth2" ];
+ networking.nat.externalInterface = "eth1";
+ networking.firewall.enable = true;
+ networking.firewall.trustedInterfaces = [ "eth2" ];
+ networking.interfaces.eth0.ipv4.addresses = [];
+ networking.interfaces.eth1.ipv4.addresses = [
+ { address = externalRouterAddress; prefixLength = 24; }
+ ];
+ networking.interfaces.eth2.ipv4.addresses = [
+ { address = internalRouterAddress; prefixLength = 24; }
+ ];
+ services.miniupnpd = {
+ enable = true;
+ externalInterface = "eth1";
+ internalIPs = [ "eth2" ];
+ appendConfig = ''
+ ext_ip=${externalRouterAddress}
+ '';
+ };
+ };
- client1 =
- { pkgs, nodes, ... }:
- { environment.systemPackages = [ pkgs.transmission pkgs.miniupnpc ];
- virtualisation.vlans = [ 2 ];
- networking.interfaces.eth0.ipv4.addresses = [];
- networking.interfaces.eth1.ipv4.addresses = [
- { address = internalClient1Address; prefixLength = 24; }
- ];
- networking.defaultGateway = internalRouterAddress;
- networking.firewall.enable = false;
- services.transmission.enable = true;
- services.transmission.settings.dht-enabled = false;
- services.transmission.settings.message-level = 3;
- };
+ client1 = { pkgs, nodes, ... }: {
+ imports = [ transmissionConfig ];
+ environment.systemPackages = [ pkgs.miniupnpc ];
+
+ virtualisation.vlans = [ 2 ];
+ networking.interfaces.eth0.ipv4.addresses = [];
+ networking.interfaces.eth1.ipv4.addresses = [
+ { address = internalClient1Address; prefixLength = 24; }
+ ];
+ networking.defaultGateway = internalRouterAddress;
+ networking.firewall.enable = false;
+ };
- client2 =
- { pkgs, ... }:
- { environment.systemPackages = [ pkgs.transmission ];
- virtualisation.vlans = [ 1 ];
- networking.interfaces.eth0.ipv4.addresses = [];
- networking.interfaces.eth1.ipv4.addresses = [
- { address = externalClient2Address; prefixLength = 24; }
- ];
- networking.firewall.enable = false;
- services.transmission.enable = true;
- services.transmission.settings.dht-enabled = false;
- services.transmission.settings.port-forwaring-enabled = false;
- };
+ client2 = { pkgs, ... }: {
+ imports = [ transmissionConfig ];
+
+ virtualisation.vlans = [ 1 ];
+ networking.interfaces.eth0.ipv4.addresses = [];
+ networking.interfaces.eth1.ipv4.addresses = [
+ { address = externalClient2Address; prefixLength = 24; }
+ ];
+ networking.firewall.enable = false;
};
+ };
- testScript =
- { nodes, ... }:
- ''
+ testScript = { nodes, ... }: ''
start_all()
# Wait for network and miniupnpd.
@@ -163,5 +161,4 @@ in
"cmp /tmp/test.tar.bz2 ${file}"
)
'';
-
})