id = "siege"
name = "Siege"
homepage = "https://github.com/JoeDog/siege"
description = "An HTTP load-testing and benchmarking utility"
executables = ["siege"]
[dotfiles]
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] <URL>
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"]