Skip to content

Releases: altrdev/torchio

v4.6.2

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:25

Changed

  • watch needs a server of version 4.5.0 or newer (/info with connections and scenario). Before, it left out the lines that an older server did not report; now it stops with This server is torchio 4.2.1, and watch needs 4.5.0 or newer. A server newer than watch is 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, -h and help still print it on the standard output.

v4.6.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 19:18

Added

  • watch and the control panel have a line for each /memory, /leak, /disk, /fd and /connections that is holding something, with what it holds and the seconds left (/memory: 100 MB, 18 s left), as /cpu already had. /info reports it as secondsLeft in memory, disk, fd and connections (null when nothing is held), the time until the last hold of that resource lets go.

Changed

  • /info reports the limit of descriptors of the process (fd.processLimit, the soft ulimit -n), and the descriptors bar of watch and of the control panel compares with the lower of that and MAX_FD, so it is full when EMFILE comes and not at a quarter of a limit the process can't reach. watch marks it with (ulimit).

Documentation

  • The site has llms.txt (an index of the pages) and llms-full.txt (all of them in one file) for language models, and a skill for agents that use torchio, at /SKILL.md and in skills/torchio/. The page For AI agents says how to install it.

v4.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:13

Added

  • torchio version (also --version and -V) prints the version of the binary, which was only in /info until now. It is in the shell completions.

v4.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 15:34

Added

  • /payload?mb= answers with mb MB of data, streamed and announced with its Content-Length, and POST /payload takes an upload, throws it away and reports its bytes, time and speed (413 over the limit). MAX_PAYLOAD_MB (1024 by default) limits both, and TOKEN protects it. It is for testing the limits on the size of a body and the timeouts of proxies, ingresses and load balancers.
  • /scenario runs a list of steps one after the other, so a test can be repeated without calling the endpoints by hand: POST a JSON list like [{"cpu": 80, "seconds": 60}, {"memory": 500, "seconds": 30}, {"ready": "off", "seconds": 20}], GET to see where it is and DELETE to stop it. The steps are cpu (with workers), memory, disk, fd, connections, ready, block and a pause, with the limits of their endpoints. The whole scenario is checked before it starts, and a wrong step is a 400 that says which. One runs at a time (409), a step that does not fit the budget at its turn stops it with the reason, and TOKEN protects it. /info (scenario), watch and 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 with 0 only if it finished, so a pipeline can run it and go on; torchio scenario status and stop do 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, and torchio 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. /info reports limits.maxPayloadMb for the sliders. /oom has 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 14:17

Added

  • /block?ms= freezes the server: after answering, every thread of the runtime sleeps for ms (up to MAX_BLOCK_MS, 30000 by default), so the process is alive but accepts and answers nothing, to test liveness probes and timeouts. /info (block), the control panel and torchio block [ms] have it, and TOKEN protects it.
  • /oom allocates memory without a budget until the kernel kills the process, to test OOMKilled, the exit code 137 and restart policies. It needs ALLOW_OOM=1 (otherwise it answers 403 and does nothing) and, with TOKEN set, the token. /config shows allowOom.

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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:14
58663c4

Added

  • /flaky?rate=&code=&ms= fails rate percent of the requests with code (503 by default) and answers 200 to the rest, to test retries, circuit breakers and outlier detection. ms makes 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, watch and 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 budget MAX_CONNECTIONS (500 by default, 429 when it does not fit), to test connection limits, load balancers and a shutdown with open sockets. /info (connections), /metrics (torchio_connections_held and torchio_connections_limit), watch, the control panel and torchio connections [count] [hold] have it. Like the other endpoints that change the state, TOKEN protects it.
  • SHUTDOWN_GRACE_SECONDS makes 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 default 0 ends 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 /help is built from), the command line, watch and 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 11:56
9040d12

Added

  • /metrics has torchio_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=json writes the logs as one JSON object a line (timestamp, level, message), the lines of /log included, 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 deploy folder 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 10:11

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 as vX.Y.Z and latest.

v4.1.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 10:01
815273a

Changed

  • The completions list serve and watch first, then the commands that start a test, then healthcheck, completions and help.

Fixed

  • The Homebrew formula written by the release made the binary executable too late for the completions to be generated, and brew install failed with EACCES. 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 09:35
2f2f118

Added

  • torchio serve starts the server, the same as torchio with no command, so the command is in help and in the completions. The Docker image still runs torchio.
  • torchio completions <bash|zsh|fish> prints the completion script of a shell: the commands, their options and the words of ready. The Homebrew formula installs them with the binary.
  • Tab completes the name of a command on the command line of torchio watch.