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:
+26
-1
@@ -324,6 +324,31 @@ let
|
|||||||
done
|
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 =
|
withPgrst =
|
||||||
checkedShellScript
|
checkedShellScript
|
||||||
{
|
{
|
||||||
@@ -381,7 +406,7 @@ in
|
|||||||
buildToolbox
|
buildToolbox
|
||||||
{
|
{
|
||||||
name = "postgrest-with";
|
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
|
# make withTools available for other nix files
|
||||||
extra = { inherit withGit withPg withPgAll withPgrst withSlowPg withSlowPgrst; };
|
extra = { inherit withGit withPg withPgAll withPgrst withSlowPg withSlowPgrst; };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user