-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathtest.nix
64 lines (62 loc) · 1.57 KB
/
test.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
let
sources = import ../../nix/sources.nix;
pkgs = import sources.nixpkgs { };
whitelistSource = src: allowedPrefixes:
builtins.path {
filter = (path: type:
pkgs.lib.any
(allowedPrefix:
(pkgs.lib.hasPrefix (toString (src + "/${allowedPrefix}")) path) ||
(type == "directory" && pkgs.lib.hasPrefix path (toString (src + "/${allowedPrefix}")))
)
allowedPrefixes);
path = src;
name = "extensions";
};
test-src = whitelistSource ../.. [ "scripts" "chart" "nix" ];
in
pkgs.nixosTest {
name = "k8s-helm-install";
nodes = {
machine = { config, pkgs, ... }: {
virtualisation = {
memorySize = 8192;
diskSize = 16384;
cores = 8;
};
boot = {
kernel.sysctl = {
"vm.nr_hugepages" = 1800;
};
kernelModules = [
"nvme-tcp"
];
};
environment.systemPackages = with pkgs; [
kubernetes-helm-wrapped
kubectl
kind
docker
util-linux
jq
yq-go
sudo
];
virtualisation = {
docker = {
enable = true;
};
};
networking.firewall.enable = false;
};
};
testScript = ''
machine.wait_for_unit("default.target")
machine.succeed("echo ${test-src} > /test-src.txt")
machine.succeed("${test-src}/scripts/k8s/deployer.sh start --label --delay")
try:
machine.succeed("${test-src}/scripts/helm/install.sh --wait")
finally:
machine.succeed("kubectl get pods -A -o wide 1>&2")
'';
}