Fix the nixproc-generate-config tool, create a basic testcase for it

This commit is contained in:
Sander van der Burg 2020-07-19 14:26:21 +02:00 committed by Sander van der Burg
parent 77a280e3ba
commit 5b114573df
3 changed files with 72 additions and 2 deletions

View File

@ -12,7 +12,7 @@ let
createManagedProcessFromConfig = configFile:
let
createManagedProcess = import ./create-managed-process-universal.nix {
inherit pkgs runtimeDir tmpDir forceDisableUserChange processManager;
inherit pkgs stateDir runtimeDir tmpDir forceDisableUserChange processManager;
};
properties = builtins.fromJSON (builtins.readFile configFile);

View File

@ -0,0 +1,70 @@
{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 {
machine =
{pkgs, ...}:
{
virtualisation.pathsInNixDB = [ pkgs.stdenv ] ++ 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.build
tools.generate-config
tools.sysvinit
];
};
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'")
'';
}

View File

@ -70,7 +70,7 @@ do
tmpDirArg="--tmp-dir $2"
;;
--force-disable-user-change)
forceDisableUserChangeArg="--force-disable-user-change"
forceDisableUserChangeArg="--arg forceDisableUserChange true"
;;
--no-out-link)
noOutLinkArg="--no-out-link"