nix: add parallel-curl wrapper (#3172)

stock curl doesn't make it easy to make many parallel requests to a
single endpoint. The endpoint has to be repeated N times.

```
curl --parallel https://example.com https://example.com ..
```

This provides a wrapper for parallel curl. It's useful for testing
scenarios like pool timeouts.

```
parallel-curl N https://example.com
```
This commit is contained in:
Steve Chavez
2024-01-18 20:03:01 -05:00
committed by GitHub
parent 6682baebd2
commit 7a387c7a30
+26 -1
View File
@@ -324,6 +324,31 @@ let
done
'';
parallelCurl =
checkedShellScript
{
name = "parallel-curl";
docs = "wrapper for using <num> parallel curl requests on the same <host>";
args = [
"ARG_POSITIONAL_SINGLE([num], [number of parallel requests])"
"ARG_POSITIONAL_SINGLE([host], [host])"
"ARG_LEFTOVERS([extra arguments for curl])"
];
}
''
curl_command="${curl}/bin/curl --parallel --parallel-immediate "
curl_command+="''${_arg_leftovers[*]} "
x=1
while [ $x -le "$1" ]
do
curl_command+="$_arg_host "
x=$((x + 1))
done
eval "$curl_command"
'';
withPgrst =
checkedShellScript
{
@@ -381,7 +406,7 @@ in
buildToolbox
{
name = "postgrest-with";
tools = [ withPgAll withGit withPgrst withSlowPg withSlowPgrst ] ++ withPgVersions;
tools = [ withPgAll withGit withPgrst withSlowPg withSlowPgrst parallelCurl ] ++ withPgVersions;
# make withTools available for other nix files
extra = { inherit withGit withPg withPgAll withPgrst withSlowPg withSlowPgrst; };
}