nixosTests.gns3-server: init

Changed files
+63 -3
nixos
pkgs
applications
networking
gns3
+1
nixos/tests/all-tests.nix
···
gnome-extensions = handleTest ./gnome-extensions.nix {};
gnome-flashback = handleTest ./gnome-flashback.nix {};
gnome-xorg = handleTest ./gnome-xorg.nix {};
+
gns3-server = handleTest ./gns3-server.nix {};
gnupg = handleTest ./gnupg.nix {};
go-neb = handleTest ./go-neb.nix {};
gobgpd = handleTest ./gobgpd.nix {};
+55
nixos/tests/gns3-server.nix
···
+
import ./make-test-python.nix ({ pkgs, lib, ... }: {
+
name = "gns3-server";
+
meta.maintainers = [ lib.maintainers.anthonyroussel ];
+
+
nodes.machine =
+
{ ... }:
+
let
+
tls-cert = pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
+
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 \
+
-subj '/CN=localhost'
+
install -D -t $out key.pem cert.pem
+
'';
+
in {
+
services.gns3-server = {
+
enable = true;
+
auth = {
+
enable = true;
+
user = "user";
+
passwordFile = pkgs.writeText "gns3-auth-password-file" "password";
+
};
+
ssl = {
+
enable = true;
+
certFile = "${tls-cert}/cert.pem";
+
keyFile = "${tls-cert}/key.pem";
+
};
+
dynamips.enable = true;
+
ubridge.enable = true;
+
vpcs.enable = true;
+
};
+
+
security.pki.certificateFiles = [ "${tls-cert}/cert.pem" ];
+
};
+
+
testScript = let
+
createProject = pkgs.writeText "createProject.json" (builtins.toJSON {
+
name = "test_project";
+
});
+
in
+
''
+
start_all()
+
+
machine.wait_for_unit("gns3-server.service")
+
machine.wait_for_open_port(3080)
+
+
with subtest("server is listening"):
+
machine.succeed("curl -sSfL -u user:password https://localhost:3080/v2/version")
+
+
with subtest("create dummy project"):
+
machine.succeed("curl -sSfL -u user:password https://localhost:3080/v2/projects -d @${createProject}")
+
+
with subtest("logging works"):
+
log_path = "/var/log/gns3/server.log"
+
machine.wait_for_file(log_path)
+
'';
+
})
+7 -3
pkgs/applications/networking/gns3/server.nix
···
, fetchFromGitHub
, pkgsStatic
, stdenv
+
, nixosTests
, testers
, gns3-server
}:
···
"--reruns 3"
];
-
passthru.tests.version = testers.testVersion {
-
package = gns3-server;
-
command = "${lib.getExe gns3-server} --version";
+
passthru.tests = {
+
inherit (nixosTests) gns3-server;
+
version = testers.testVersion {
+
package = gns3-server;
+
command = "${lib.getExe gns3-server} --version";
+
};
};
meta = with lib; {