id = "siege" name = "Siege" homepage = "https://github.com/JoeDog/siege" description = "An HTTP load-testing and benchmarking utility" executables = ["siege"] [dotfiles] # Siege's official initialization source creates and reads the per-user # resource file at ~/.siege/siege.conf. Its `login` directives carry HTTP # authentication credentials and are therefore secret-bearing lines. # https://github.com/JoeDog/siege/blob/master/src/init.c paths = ["~/.siege/siege.conf"] secret = [] [[dotfiles.secret_paths]] file = "~/.siege/siege.conf" match = { prefix = ["login"] } [commands] format = 1 label = "Load-test a URL" description = "Run siege against one URL or a list of URLs in a file. Config-file directives, POST bodies in URLs, log files and rc files are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true } [[commands.source]] id = "siege-man" kind = "manual" url = "https://manpages.debian.org/unstable/siege/siege.1.en.html" revision = "siege 4.1.7 man page" evidence = '''siege [options] siege [options] -f urls.txt -c NUM, --concurrent=NUM This option allows you to set the concurrent number of users. -r NUM, --reps=NUM|once -t NUMm, --time=NUMm -d NUM, --delay=NUM -b, --benchmark -i, --internet -f FILE, --file=FILE -H "header: value", --header="Header: value" -v, --verbose -q, --quiet --no-parser --no-follow''' [[commands.field]] id = "url" label = "URL" description = "Quote the URL. Leave empty when using a URL file." type = "url" position = 0 sources = ["siege-man"] [[commands.field]] id = "file" label = "URL list file" type = "path" option = ["--file", "-f"] path = { kind = "file", role = "input" } sources = ["siege-man"] [[commands.field]] id = "concurrent" label = "Concurrent users" type = "integer" option = ["--concurrent", "-c"] sources = ["siege-man"] [[commands.field]] id = "reps" label = "Repetitions per user" description = "A number, or the keyword once." type = "string" option = ["--reps", "-r"] sources = ["siege-man"] [[commands.field]] id = "time" label = "Run time" description = "Number plus S, M or H, with no space, e.g. 1M." type = "string" option = ["--time", "-t"] sources = ["siege-man"] [[commands.field]] id = "delay" label = "Delay between requests (seconds)" type = "number" option = ["--delay", "-d"] sources = ["siege-man"] [[commands.field]] id = "benchmark" label = "Benchmark mode (no delay)" type = "boolean" option = ["--benchmark", "-b"] sources = ["siege-man"] [[commands.field]] id = "internet" label = "Internet mode (random URL order)" type = "boolean" option = ["--internet", "-i"] sources = ["siege-man"] [[commands.field]] id = "header" label = "Extra header" description = "Format: \"Header: value\"." type = "string" option = ["--header", "-H"] multiple = true sources = ["siege-man"] [[commands.field]] id = "no_parser" label = "Do not fetch page elements" type = "boolean" option = ["--no-parser"] sources = ["siege-man"] [[commands.field]] id = "no_follow" label = "Do not follow redirects" type = "boolean" option = ["--no-follow"] sources = ["siege-man"] [[commands.field]] id = "verbose" label = "Verbose" type = "count" option = ["--verbose", "-v"] sources = ["siege-man"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["siege-man"] [[commands.task]] id = "quick" label = "Quick test of one URL" set = { concurrent = [10], reps = ["5"] } fields = ["url", "concurrent", "reps", "delay"] required = ["url"] [[commands.task]] id = "timed" label = "Timed benchmark" set = { benchmark = [true] } fields = ["url", "concurrent", "time", "benchmark"] required = ["url", "time"] [[commands.task]] id = "urlfile" label = "Run a URL list" fields = ["file", "concurrent", "reps", "internet"] required = ["file"] [[commands.group]] id = "basic" label = "Basic" fields = ["url", "file", "concurrent", "reps", "time", "delay"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["benchmark", "internet", "header", "no_parser", "no_follow", "verbose", "quiet"]