nixos/frp: add test and link to package

zaldnoay b53e5a64 6cd38e43

Changed files
+92 -1
nixos
pkgs
tools
networking
+1
nixos/tests/all-tests.nix
···
freshrss-sqlite = handleTest ./freshrss-sqlite.nix {};
freshrss-pgsql = handleTest ./freshrss-pgsql.nix {};
frigate = handleTest ./frigate.nix {};
frr = handleTest ./frr.nix {};
fsck = handleTest ./fsck.nix {};
fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; };
···
freshrss-sqlite = handleTest ./freshrss-sqlite.nix {};
freshrss-pgsql = handleTest ./freshrss-pgsql.nix {};
frigate = handleTest ./frigate.nix {};
+
frp = handleTest ./frp.nix {};
frr = handleTest ./frr.nix {};
fsck = handleTest ./fsck.nix {};
fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; };
+86
nixos/tests/frp.nix
···
···
+
import ./make-test-python.nix ({ pkgs, lib, ... }: {
+
name = "frp";
+
meta.maintainers = with lib.maintainers; [ zaldnoay janik ];
+
nodes = {
+
frps = {
+
networking = {
+
useNetworkd = true;
+
useDHCP = false;
+
firewall.enable = false;
+
};
+
+
systemd.network.networks."01-eth1" = {
+
name = "eth1";
+
networkConfig.Address = "10.0.0.1/24";
+
};
+
+
services.frp = {
+
enable = true;
+
role = "server";
+
settings = {
+
common = {
+
bind_port = 7000;
+
vhost_http_port = 80;
+
};
+
};
+
};
+
};
+
+
+
frpc = {
+
networking = {
+
useNetworkd = true;
+
useDHCP = false;
+
};
+
+
systemd.network.networks."01-eth1" = {
+
name = "eth1";
+
networkConfig.Address = "10.0.0.2/24";
+
};
+
+
services.httpd = {
+
enable = true;
+
adminAddr = "admin@example.com";
+
virtualHosts."test-appication" =
+
let
+
testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();";
+
in
+
{
+
documentRoot = "${testdir}/web";
+
locations."/" = {
+
index = "index.php index.html";
+
};
+
};
+
phpPackage = pkgs.php81;
+
enablePHP = true;
+
};
+
+
services.frp = {
+
enable = true;
+
role = "client";
+
settings = {
+
common = {
+
server_addr = "10.0.0.1";
+
server_port = 7000;
+
};
+
web = {
+
type = "http";
+
local_port = 80;
+
custom_domains = "10.0.0.1";
+
};
+
};
+
};
+
};
+
};
+
+
testScript = ''
+
start_all()
+
frps.wait_for_unit("frp.service")
+
frps.wait_for_open_port(80)
+
frpc.wait_for_unit("frp.service")
+
response = frpc.succeed("curl -fvvv -s http://127.0.0.1/")
+
assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected"
+
response = frpc.succeed("curl -fvvv -s http://10.0.0.1/")
+
assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected"
+
'';
+
})
+5 -1
pkgs/tools/networking/frp/default.nix
···
-
{ buildGoModule, lib, fetchFromGitHub }:
buildGoModule rec {
pname = "frp";
···
doCheck = false;
subPackages = [ "cmd/frpc" "cmd/frps" ];
meta = with lib; {
description = "Fast reverse proxy";
···
+
{ buildGoModule, lib, fetchFromGitHub, nixosTests }:
buildGoModule rec {
pname = "frp";
···
doCheck = false;
subPackages = [ "cmd/frpc" "cmd/frps" ];
+
+
passthru.tests = {
+
frp = nixosTests.frp;
+
};
meta = with lib; {
description = "Fast reverse proxy";