Repository navigation
Releases: altrdev/torchio
Releases · altrdev/torchio
Release list
v4.6.2
Changed
watchneeds a server of version 4.5.0 or newer (/infowithconnectionsandscenario). Before, it left out the lines that an older server did not report; now it stops withThis server is torchio 4.2.1, and watch needs 4.5.0 or newer. A server newer thanwatchis read as before.- When a command or an option is wrong, the usage is printed on the standard error, after the message, and not on the standard output, so it no longer ends up in a file or a pipe that receives the output of a command.
--help,-handhelpstill print it on the standard output.
v4.6.1
Added
watchand the control panel have a line for each/memory,/leak,/disk,/fdand/connectionsthat is holding something, with what it holds and the seconds left (/memory: 100 MB, 18 s left), as/cpualready had./inforeports it assecondsLeftinmemory,disk,fdandconnections(nullwhen nothing is held), the time until the last hold of that resource lets go.
Changed
/inforeports the limit of descriptors of the process (fd.processLimit, the softulimit -n), and the descriptors bar ofwatchand of the control panel compares with the lower of that andMAX_FD, so it is full whenEMFILEcomes and not at a quarter of a limit the process can't reach.watchmarks it with(ulimit).
Documentation
- The site has
llms.txt(an index of the pages) andllms-full.txt(all of them in one file) for language models, and a skill for agents that use torchio, at/SKILL.mdand inskills/torchio/. The page For AI agents says how to install it.
v4.6.0
Added
torchio version(also--versionand-V) prints the version of the binary, which was only in/infountil now. It is in the shell completions.
v4.5.0
Added
/payload?mb=answers withmbMB of data, streamed and announced with itsContent-Length, andPOST /payloadtakes an upload, throws it away and reports its bytes, time and speed (413over the limit).MAX_PAYLOAD_MB(1024by default) limits both, andTOKENprotects it. It is for testing the limits on the size of a body and the timeouts of proxies, ingresses and load balancers./scenarioruns a list of steps one after the other, so a test can be repeated without calling the endpoints by hand:POSTa JSON list like[{"cpu": 80, "seconds": 60}, {"memory": 500, "seconds": 30}, {"ready": "off", "seconds": 20}],GETto see where it is andDELETEto stop it. The steps arecpu(withworkers),memory,disk,fd,connections,ready,blockand a pause, with the limits of their endpoints. The whole scenario is checked before it starts, and a wrong step is a400that says which. One runs at a time (409), a step that does not fit the budget at its turn stops it with the reason, andTOKENprotects it./info(scenario),watchand the control panel show it, and the documentation has a page about it.torchio scenario <file|-> [--wait]starts a scenario from a file or stdin and, with--wait, follows it and exits with0only if it finished, so a pipeline can run it and go on;torchio scenario statusandstopdo the other two requests.torchio payload get [mb]downloads and throws the data away, reporting the speed and failing on a body that is cut short, andtorchio payload post <file|->uploads a file or stdin and reports what the server counted. They are in the shell completions, in the reference of the endpoints and in the page Starting a test.- The control panel has a card for
/payload(download and upload, from the page, with the speed and a body cut short reported), one for/flaky(sends 20 requests and counts the failures) and one for/status/:code./inforeportslimits.maxPayloadMbfor the sliders./oomhas no card.
Documentation
- The reference of the endpoints names the command that does the same (
torchio cpu [percent] [hold] [workers]), in a column of the table and in the section of each endpoint. It comes from the list of commands the program itself uses, and a test checks that every command calls an endpoint of the catalog.
v4.4.0
Added
/block?ms=freezes the server: after answering, every thread of the runtime sleeps forms(up toMAX_BLOCK_MS,30000by default), so the process is alive but accepts and answers nothing, to test liveness probes and timeouts./info(block), the control panel andtorchio block [ms]have it, andTOKENprotects it./oomallocates memory without a budget until the kernel kills the process, to testOOMKilled, the exit code137and restart policies. It needsALLOW_OOM=1(otherwise it answers403and does nothing) and, withTOKENset, the token./configshowsallowOom.
Changed
- The installer is also served by the site:
curl -fsSL https://torchio.altr.dev/install | sh, which the README and the install page now show. The address on raw.githubusercontent.com keeps working and is the one to use if the site is down; the binary comes from the GitHub release either way.
v4.3.0
Added
/flaky?rate=&code=&ms=failsratepercent of the requests withcode(503by default) and answers200to the rest, to test retries, circuit breakers and outlier detection.msmakes a failing answer wait first, like/delay.torchio flaky [rate] [code] [ms]calls it./cpu?workers=loads only the first workers and leaves the others idle, to simulate an uneven load across the cores./info(stress.burn.workers),torchio_cpu_burn_workers,watchand the control panel show how many are loaded. By default it is all of them, as before./connections?count=&hold=opens TCP connections to the server itself and holds them, with the budgetMAX_CONNECTIONS(500by default,429when it does not fit), to test connection limits, load balancers and a shutdown with open sockets./info(connections),/metrics(torchio_connections_heldandtorchio_connections_limit),watch, the control panel andtorchio connections [count] [hold]have it. Like the other endpoints that change the state,TOKENprotects it.SHUTDOWN_GRACE_SECONDSmakes SIGTERM and SIGINT drain before the process ends: the port closes, the requests and connections already open are served, and it ends when none is left or the time is up. A line each second says what is open,/info(shutdown) and/metrics(torchio_draining,torchio_open_requests,torchio_open_connections) report it, and another signal ends it at once. The default0ends the process right away, as before, and now says which signal arrived.
Documentation
- The documentation is a site, at https://torchio.altr.dev, with a page for each part of what used to be the README: the endpoints and their reference (written from the catalog that
/helpis built from), the command line,watchand the control panel, the configuration, Docker and Kubernetes. It is published with each release. - The README is short: the install, the first test and the links to the site. It has a section for each way to install (Docker, Homebrew, the install script, the release binary and the source), and it now fits in Docker Hub whole.
v4.2.0
Added
/metricshastorchio_http_request_duration_seconds, a histogram of the time taken to answer, by route and status code, with buckets from 5 ms to 60 s.LOG_FORMAT=jsonwrites the logs as one JSON object a line (timestamp,level,message), the lines of/logincluded, and a line for each request with its method, path, status and duration. The default is still plain text, with no line for each request.- The
deployfolder has Kubernetes manifests (a Deployment and a Service, with kustomize) and a Helm chart, with the probes, the limits and a non-root container with a read-only filesystem.
v4.1.2
Added
- The Docker image is tagged with the version without the
v(X.Y.Z), with the minor (X.Y) and with the major (X), as well asvX.Y.Zandlatest.
v4.1.1
Changed
- The completions list
serveandwatchfirst, then the commands that start a test, thenhealthcheck,completionsandhelp.
Fixed
- The Homebrew formula written by the release made the binary executable too late for the completions to be generated, and
brew installfailed withEACCES. The formula published for 4.1.0 was corrected in the tap.
Documentation
- The README says what to check when Tab does not complete in zsh after
brew install.
v4.1.0
Added
torchio servestarts the server, the same astorchiowith no command, so the command is inhelpand in the completions. The Docker image still runstorchio.torchio completions <bash|zsh|fish>prints the completion script of a shell: the commands, their options and the words ofready. The Homebrew formula installs them with the binary.- Tab completes the name of a command on the command line of
torchio watch.