62 lines
1.7 KiB
Nix
62 lines
1.7 KiB
Nix
|
{ pkgs }:
|
||
|
let
|
||
|
#hello = pkgs.hello.overrideAttrs { pname = "custom-hello"; };
|
||
|
inherit (pkgs) hello;
|
||
|
references = pkgs.runCommandNoCC "hello-refs" {
|
||
|
exportReferencesGraph.hello = hello;
|
||
|
__structuredAttrs = true;
|
||
|
nativeBuildInputs = [ pkgs.jq ];
|
||
|
} "jq -r \"{closure : .hello}\" < .attrs.json > $out"; # "jq -r '.hello' < .attrs.json > $out";
|
||
|
in
|
||
|
pkgs.testers.runNixOSTest (_: {
|
||
|
name = "cache signature upload test";
|
||
|
nodes = {
|
||
|
cache =
|
||
|
{ config, ... }:
|
||
|
{
|
||
|
imports = [
|
||
|
./common
|
||
|
../modules
|
||
|
];
|
||
|
|
||
|
system.extraDependencies = [
|
||
|
hello
|
||
|
references
|
||
|
];
|
||
|
|
||
|
services.tvix-binary-cache = {
|
||
|
enable = true;
|
||
|
caches = {
|
||
|
cache.port = 8000;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
services.nginx = {
|
||
|
enable = true;
|
||
|
recommendedProxySettings = true;
|
||
|
virtualHosts.cache = {
|
||
|
default = true;
|
||
|
locations = {
|
||
|
"/cache".return = "302 /cache/";
|
||
|
"/cache/" = {
|
||
|
proxyPass = "http://localhost:${toString config.services.tvix-binary-cache.caches.cache.port}/";
|
||
|
};
|
||
|
};
|
||
|
extraConfig = "client_max_body_size 1G;";
|
||
|
|
||
|
};
|
||
|
};
|
||
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||
|
};
|
||
|
};
|
||
|
testScript = ''
|
||
|
import time
|
||
|
start_all()
|
||
|
cache.wait_for_unit("nginx.service")
|
||
|
cache.wait_for_unit("nar-bridge-cache.service")
|
||
|
time.sleep(1)
|
||
|
socket_addr = "grpc+unix:///run/tvix-binary-cache-cache/socket"
|
||
|
cache.succeed(f"BLOB_SERVICE_ADDR={socket_addr} DIRECTORY_SERVICE_ADDR={socket_addr} PATH_INFO_SERVICE_ADDR={socket_addr} tvix-store copy ${builtins.toString references}")
|
||
|
'';
|
||
|
})
|