nix-processmgmt/tests/webapps-agnostic-config.nix

72 lines
1.9 KiB
Nix

{nixpkgs ? <nixpkgs>}:
with import "${nixpkgs}/nixos/lib/testing-python.nix" { system = builtins.currentSystem; };
let
webappUnprivilegedAutoModeConfig = (import ../examples/webapps-agnostic/processes.nix {
forceDisableUserChange = true;
processManager = null;
webappMode = null;
}).webapp.pkg;
webappUnprivilegedAutoModeSysvinit = (import ../examples/webapps-agnostic/processes.nix {
forceDisableUserChange = true;
processManager = "sysvinit";
webappMode = null;
}).webapp.pkg;
tools = import ../tools {};
nix-processmgmt = ./..;
env = "NIX_PATH=nixpkgs=${nixpkgs}";
in
makeTest {
name = "webapps-agnostic-config";
nodes.machine =
{pkgs, ...}:
{
virtualisation.additionalPaths = [ pkgs.stdenv pkgs.stdenvNoCC ] ++ pkgs.coreutils.all ++ [
webappUnprivilegedAutoModeConfig
webappUnprivilegedAutoModeSysvinit
];
virtualisation.writableStore = true;
# We can't download any substitutes in a test environment. To make tests
# faster, we disable substitutes so that Nix does not waste any time by
# attempting to download them.
nix.extraOptions = ''
substitute = false
'';
environment.systemPackages = [
pkgs.stdenv
pkgs.dysnomia
tools.common
tools.generate-config
];
};
testScript = ''
start_all()
# Make sure the unprivileged user can deploy
machine.succeed("mkdir -p var/run var/tmp")
result = machine.succeed(
"cat ${webappUnprivilegedAutoModeConfig}/webapp.json >&2"
)
result = machine.succeed(
"${env} nixproc-generate-config --process-manager sysvinit --force-disable-user-change ${webappUnprivilegedAutoModeConfig}/webapp.json"
)
machine.succeed("{}/etc/rc.d/init.d/webapp start".format(result[:-1]))
machine.succeed("pgrep -f '/bin/webapp -D$'")
machine.succeed("curl --fail http://localhost:5000 | grep 'Simple test webapp'")
'';
}