Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 13:04
· 91 commits to main since this release
d9bd40d

The first release. You describe a point-to-point link in a file or in code (delay, jitter, loss, a rate, different values in each direction), run it in network namespaces with the Kernel backend, send constant-rate UDP streams through it, and get loss, one-way delay percentiles and throughput back, per packet if you ask for it, together with the seed and the versions that made the result. From the command line (netscenario run, validate, schema, doctor, clean), from Python, and as pytest tests with the plugin pytest-netscenario. Wheels for Linux on x86_64 and aarch64; the crates netscenario-cli and netscenario-agent for the command line. The README says what 0.1 does and does not do yet, and docs/ACCEPTANCE.md how each criterion of the release is proven.

This is the state of 0.1.0-rc.2; the release only removes the notes "not published yet" from the documentation and adds the badges. The format of the scenario file and of the result is version 0: a minor release may change them, and the changelog says how (docs/VERSIONING.md).

Features

  • Add the Rust workspace, the lints, the tooling and a first command line (#11)
  • Add the Python packages, the bindings crate and the Python tooling (#12)
  • Add the scenario model with strict units, validation and the JSON Schema (#16)
  • Add the backend interface, the capability check and the Kernel declaration (#17)
  • Provision real namespaces in the Kernel backend with a supervisor, limits and crash tests (#18)
  • Record the seed of a run, show lines in capability errors and test root mode and seeded loss on the CI (#19)
  • Add the doctor and clean commands, and wait for the last words of a supervisor that died (#20)
  • Add the agent that sends and receives the packets of a workload and records each one (#21)
  • Read the output of programs in the nodes, write to them, and limit their memory (#22)
  • Run a scenario in the nodes and write a result with statistics, provenance and the seed (#23)
  • Add the commands run, validate and schema, and make the program its own supervisor (#24)
  • Let a run be observed and cancelled, and show its progress on a terminal (#28)
  • Add the Python bindings and the typed Python package (#29)
  • Add the pytest plugin with a runner, a marker, a guard for the environment and a report (#30)
  • Build the wheels with the programs inside and test them in a clean environment (#31)
  • Add the release workflow, one version for everything, the changelog and the versioning policy (#33)
  • Count the packets in the queue of each direction with loss and compare them with the packets of the workloads (#37)

Fixes

  • Build a direction with a jitter and a rate from two qdiscs, in the order of its stages (#26)
  • Take the rights of the process for a run when it has them and they work (#36)