summaryrefslogtreecommitdiffstats
path: root/nixos/tests/cntr.nix
diff options
context:
space:
mode:
authorRichard Marko <srk@48.io>2021-02-24 14:10:22 +0100
committerRichard Marko <srk@48.io>2021-04-07 20:27:17 +0200
commitb1672eee0cc014408bff056375436fb25d6235ab (patch)
tree77c7badb93c5385b45ea1abe1173802fd6430330 /nixos/tests/cntr.nix
parentb132849daed0f3a4ad67551084eddb957a179de0 (diff)
nixosTests.cntr: init
Diffstat (limited to 'nixos/tests/cntr.nix')
-rw-r--r--nixos/tests/cntr.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/nixos/tests/cntr.nix b/nixos/tests/cntr.nix
new file mode 100644
index 000000000000..8cffd97459d0
--- /dev/null
+++ b/nixos/tests/cntr.nix
@@ -0,0 +1,63 @@
+# Test for cntr tool
+{ system ? builtins.currentSystem, config ? { }
+, pkgs ? import ../.. { inherit system config; }, lib ? pkgs.lib }:
+
+let
+ inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
+
+ mkOCITest = backend:
+ makeTest {
+ name = "cntr-${backend}";
+
+ meta = { maintainers = with lib.maintainers; [ srk mic92 ]; };
+
+ nodes = {
+ ${backend} = { pkgs, ... }: {
+ environment.systemPackages = [ pkgs.cntr ];
+ virtualisation.oci-containers = {
+ inherit backend;
+ containers.nginx = {
+ image = "nginx-container";
+ imageFile = pkgs.dockerTools.examples.nginx;
+ ports = [ "8181:80" ];
+ };
+ };
+ };
+ };
+
+ testScript = ''
+ start_all()
+ ${backend}.wait_for_unit("${backend}-nginx.service")
+ result = ${backend}.wait_until_succeeds(
+ "cntr attach -t ${backend} nginx sh -- -c 'curl localhost | grep Hello'"
+ )
+ assert "Hello" in result
+ '';
+ };
+
+ mkContainersTest = makeTest {
+ name = "cntr-containers";
+
+ meta = with pkgs.lib.maintainers; { maintainers = [ sorki mic92 ]; };
+
+ machine = { lib, ... }: {
+ environment.systemPackages = [ pkgs.cntr ];
+ containers.test = {
+ autoStart = true;
+ privateNetwork = true;
+ hostAddress = "172.16.0.1";
+ localAddress = "172.16.0.2";
+ config = { };
+ };
+ };
+
+ testScript = ''
+ machine.start()
+ machine.wait_for_unit("container@test.service")
+ machine.succeed("cntr attach test sh -- -c 'ping -c5 172.16.0.1'")
+ '';
+ };
+in {
+ nixos-container = mkContainersTest;
+} // (lib.foldl' (attrs: backend: attrs // { ${backend} = mkOCITest backend; })
+ { } [ "docker" "podman" ])