Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

nixos/frp: add test and link to package

authored by

zaldnoay and committed by
Lin Jian
b53e5a64 6cd38e43

+92 -1
+1
nixos/tests/all-tests.nix
··· 290 freshrss-sqlite = handleTest ./freshrss-sqlite.nix {}; 291 freshrss-pgsql = handleTest ./freshrss-pgsql.nix {}; 292 frigate = handleTest ./frigate.nix {}; 293 frr = handleTest ./frr.nix {}; 294 fsck = handleTest ./fsck.nix {}; 295 fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; };
··· 290 freshrss-sqlite = handleTest ./freshrss-sqlite.nix {}; 291 freshrss-pgsql = handleTest ./freshrss-pgsql.nix {}; 292 frigate = handleTest ./frigate.nix {}; 293 + frp = handleTest ./frp.nix {}; 294 frr = handleTest ./frr.nix {}; 295 fsck = handleTest ./fsck.nix {}; 296 fsck-systemd-stage-1 = handleTest ./fsck.nix { systemdStage1 = true; };
+86
nixos/tests/frp.nix
···
··· 1 + import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 + name = "frp"; 3 + meta.maintainers = with lib.maintainers; [ zaldnoay janik ]; 4 + nodes = { 5 + frps = { 6 + networking = { 7 + useNetworkd = true; 8 + useDHCP = false; 9 + firewall.enable = false; 10 + }; 11 + 12 + systemd.network.networks."01-eth1" = { 13 + name = "eth1"; 14 + networkConfig.Address = "10.0.0.1/24"; 15 + }; 16 + 17 + services.frp = { 18 + enable = true; 19 + role = "server"; 20 + settings = { 21 + common = { 22 + bind_port = 7000; 23 + vhost_http_port = 80; 24 + }; 25 + }; 26 + }; 27 + }; 28 + 29 + 30 + frpc = { 31 + networking = { 32 + useNetworkd = true; 33 + useDHCP = false; 34 + }; 35 + 36 + systemd.network.networks."01-eth1" = { 37 + name = "eth1"; 38 + networkConfig.Address = "10.0.0.2/24"; 39 + }; 40 + 41 + services.httpd = { 42 + enable = true; 43 + adminAddr = "admin@example.com"; 44 + virtualHosts."test-appication" = 45 + let 46 + testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();"; 47 + in 48 + { 49 + documentRoot = "${testdir}/web"; 50 + locations."/" = { 51 + index = "index.php index.html"; 52 + }; 53 + }; 54 + phpPackage = pkgs.php81; 55 + enablePHP = true; 56 + }; 57 + 58 + services.frp = { 59 + enable = true; 60 + role = "client"; 61 + settings = { 62 + common = { 63 + server_addr = "10.0.0.1"; 64 + server_port = 7000; 65 + }; 66 + web = { 67 + type = "http"; 68 + local_port = 80; 69 + custom_domains = "10.0.0.1"; 70 + }; 71 + }; 72 + }; 73 + }; 74 + }; 75 + 76 + testScript = '' 77 + start_all() 78 + frps.wait_for_unit("frp.service") 79 + frps.wait_for_open_port(80) 80 + frpc.wait_for_unit("frp.service") 81 + response = frpc.succeed("curl -fvvv -s http://127.0.0.1/") 82 + assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected" 83 + response = frpc.succeed("curl -fvvv -s http://10.0.0.1/") 84 + assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected" 85 + ''; 86 + })
+5 -1
pkgs/tools/networking/frp/default.nix
··· 1 - { buildGoModule, lib, fetchFromGitHub }: 2 3 buildGoModule rec { 4 pname = "frp"; ··· 16 doCheck = false; 17 18 subPackages = [ "cmd/frpc" "cmd/frps" ]; 19 20 meta = with lib; { 21 description = "Fast reverse proxy";
··· 1 + { buildGoModule, lib, fetchFromGitHub, nixosTests }: 2 3 buildGoModule rec { 4 pname = "frp"; ··· 16 doCheck = false; 17 18 subPackages = [ "cmd/frpc" "cmd/frps" ]; 19 + 20 + passthru.tests = { 21 + frp = nixosTests.frp; 22 + }; 23 24 meta = with lib; { 25 description = "Fast reverse proxy";