Skip to content

Commit 9551750

Browse files
authored
Merge pull request #16 from plaflamme/test/basic
test: adds a basic integration test
2 parents d4ae858 + 743aea4 commit 9551750

File tree

3 files changed

+66
-70
lines changed

3 files changed

+66
-70
lines changed

.github/workflows/nixos-test.yml

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: nixos-tests
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize]
6+
push:
7+
branches:
8+
- main
9+
10+
jobs:
11+
nixos-test:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: DeterminateSystems/nix-installer-action@main
16+
- run: |
17+
nix flake check -L

flake.nix

+25-70
Original file line numberDiff line numberDiff line change
@@ -3,84 +3,39 @@
33

44
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
55

6-
outputs = { nixpkgs, ... }:
6+
outputs = { self, nixpkgs, ... }:
77
let
88

99
genPackages = pkgs: rec {
10-
inherit (pkgs.callPackage ./k0s/default.nix {})
11-
k0s_1_27
12-
k0s_1_28
13-
k0s_1_30
14-
k0s_1_31
15-
k0s_1_32;
10+
inherit (pkgs.callPackage ./k0s/default.nix { })
11+
k0s_1_27 k0s_1_28 k0s_1_30 k0s_1_31 k0s_1_32;
1612
k0s = k0s_1_32;
1713
};
1814

19-
in
20-
rec {
21-
packages =
22-
let
23-
lib = nixpkgs.lib;
24-
allSystems = [ "armv7l-linux" "aarch64-linux" "x86_64-linux" ];
25-
forAllSystems = lib.genAttrs allSystems;
26-
in
27-
forAllSystems (system:
28-
let
29-
pkgs = nixpkgs.legacyPackages.${system};
30-
in genPackages pkgs
31-
);
15+
lib = nixpkgs.lib;
16+
allSystems = [ "armv7l-linux" "aarch64-linux" "x86_64-linux" ];
17+
forAllSystems = lib.genAttrs allSystems;
18+
in {
19+
packages = forAllSystems (system:
20+
let pkgs = nixpkgs.legacyPackages.${system};
21+
in genPackages pkgs);
3222

3323
overlays.default = final: prev: genPackages prev;
3424

35-
nixosConfigurations = {
36-
test = nixpkgs.lib.nixosSystem {
37-
modules = [
38-
{
39-
nixpkgs.system = "x86_64-linux";
40-
nixpkgs.pkgs = import nixpkgs {
41-
system = "x86_64-linux";
42-
overlays = [
43-
overlays.default
44-
];
45-
};
46-
}
47-
./nixos/k0s.nix
48-
({ ... }: {
49-
boot.isContainer = true;
50-
51-
services.k0s = {
52-
enable = true;
53-
54-
role = "controller";
55-
56-
# The first controller to bring up does not have a join token,
57-
# it has to be flagged with "isLeader".
58-
# isLeader = true;
59-
60-
spec.api.address = "192.0.2.1";
61-
spec.api.sans = [
62-
"192.0.2.1"
63-
"192.0.2.2"
64-
];
65-
66-
# Test non-default options:
67-
#
68-
# spec.network.provider = "calico";
69-
# spec.network.calico.mode = "bird";
70-
# spec.network.dualStack.enabled = true;
71-
# spec.network.dualStack.IPv6podCIDR = "fd00::/108";
72-
# spec.network.dualStack.IPv6serviceCIDR = "fd01::/108";
73-
# spec.network.controlPlaneLoadBalancing.enabled = true;
74-
# spec.network.nodeLocalLoadBalancing.enabled = true;
75-
# spec.storage.type = "kine";
76-
};
77-
78-
system.stateVersion = "24.05";
79-
})
80-
];
81-
};
82-
};
83-
8425
nixosModules.default = import ./nixos/k0s.nix;
85-
};
26+
27+
checks = forAllSystems (system:
28+
let pkgs = nixpkgs.legacyPackages.${system};
29+
in {
30+
basic = pkgs.testers.runNixOSTest {
31+
imports = [ ./tests/basic.nix ];
32+
node = { pkgsReadOnly = false; };
33+
defaults = {
34+
imports = [ self.nixosModules.default ];
35+
nixpkgs.overlays = [ self.overlays.default ];
36+
};
37+
};
38+
});
39+
40+
};
8641
}

tests/basic.nix

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
name = "basic";
3+
nodes = {
4+
node1 = { config, ... }: {
5+
services.k0s = {
6+
enable = true;
7+
role = "single";
8+
spec.api = {
9+
address = config.networking.primaryIPAddress;
10+
sans = [ config.networking.primaryIPAddress ];
11+
};
12+
};
13+
14+
};
15+
};
16+
testScript = { nodes }:
17+
let k0s = nodes.node1.services.k0s.package;
18+
in ''
19+
start_all()
20+
node1.wait_for_unit("k0scontroller")
21+
node1.wait_for_file("/run/k0s/status.sock")
22+
node1.succeed("${k0s}/bin/k0s status")
23+
'';
24+
}

0 commit comments

Comments
 (0)