diff --git a/tests/default.nix b/tests/default.nix index a01d118..90199fc 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -39,6 +39,10 @@ in inherit pkgs processManagers profiles testService; }; + nginx-reverse-proxy-hostbased = import ./nginx-reverse-proxy-hostbased { + inherit pkgs processManagers profiles testService nix-processmgmt; + }; + postgresql = import ./postgresql { inherit pkgs processManagers profiles testService; }; diff --git a/tests/nginx-reverse-proxy-hostbased/default.nix b/tests/nginx-reverse-proxy-hostbased/default.nix new file mode 100644 index 0000000..abce327 --- /dev/null +++ b/tests/nginx-reverse-proxy-hostbased/default.nix @@ -0,0 +1,23 @@ +{ pkgs, testService, processManagers, profiles, nix-processmgmt }: + +testService { + exprFile = ./processes.nix; + extraParams = { + inherit nix-processmgmt; + }; + + readiness = {instanceName, instance, ...}: + '' + machine.wait_for_open_port(${toString instance.port}) + ''; + + tests = {instanceName, instance, ...}: + pkgs.lib.optionalString (instanceName == "nginx" || instanceName == "nginx2") + (pkgs.lib.concatMapStrings (webapp: '' + machine.succeed( + "curl --fail -H 'Host: ${webapp.dnsName}' http://localhost:${toString instance.port} | grep ': ${toString webapp.port}'" + ) + '') instance.webapps); + + inherit processManagers profiles; +} diff --git a/tests/nginx-reverse-proxy-hostbased/processes.nix b/tests/nginx-reverse-proxy-hostbased/processes.nix new file mode 100644 index 0000000..5622ed4 --- /dev/null +++ b/tests/nginx-reverse-proxy-hostbased/processes.nix @@ -0,0 +1,104 @@ +{ pkgs ? import { inherit system; } +, system ? builtins.currentSystem +, nix-processmgmt +, stateDir ? "/var" +, runtimeDir ? "${stateDir}/run" +, logDir ? "${stateDir}/log" +, cacheDir ? "${stateDir}/cache" +, spoolDir ? "${stateDir}/spool" +, libDir ? "${stateDir}/lib" +, tmpDir ? (if stateDir == "/var" then "/tmp" else "${stateDir}/tmp") +, forceDisableUserChange ? false +, processManager +}: + +let + sharedConstructors = import ../../services-agnostic/constructors.nix { + inherit pkgs stateDir runtimeDir logDir cacheDir spoolDir libDir tmpDir forceDisableUserChange processManager; + }; + + constructors = import "${nix-processmgmt}/examples/webapps-agnostic/constructors/constructors.nix" { + inherit pkgs stateDir runtimeDir logDir tmpDir forceDisableUserChange processManager; + webappMode = null; + }; +in +rec { + webapp1 = rec { + port = 5000; + dnsName = "webapp1.local"; + + pkg = constructors.webapp { + inherit port; + instanceSuffix = "1"; + }; + }; + + webapp2 = rec { + port = 5001; + dnsName = "webapp2.local"; + + pkg = constructors.webapp { + inherit port; + instanceSuffix = "2"; + }; + }; + + webapp3 = rec { + port = 5002; + dnsName = "webapp3.local"; + + pkg = constructors.webapp { + inherit port; + instanceSuffix = "3"; + }; + }; + + webapp4 = rec { + port = 5003; + dnsName = "webapp4.local"; + + pkg = constructors.webapp { + inherit port; + instanceSuffix = "4"; + }; + }; + + nginx = rec { + port = if forceDisableUserChange then 8080 else 80; + webapps = [ webapp1 webapp2 webapp3 webapp4 ]; + + pkg = sharedConstructors.nginxReverseProxyHostBased { + inherit port webapps; + } {}; + }; + + webapp5 = rec { + port = 5004; + dnsName = "webapp5.local"; + + pkg = constructors.webapp { + inherit port; + instanceSuffix = "5"; + }; + }; + + webapp6 = rec { + port = 5005; + dnsName = "webapp6.local"; + + pkg = constructors.webapp { + inherit port; + instanceSuffix = "6"; + }; + }; + + nginx2 = rec { + port = if forceDisableUserChange then 8081 else 8080; + webapps = [ webapp5 webapp6 ]; + + pkg = sharedConstructors.nginxReverseProxyHostBased { + inherit port webapps; + instanceSuffix = "2"; + } {}; + }; +}