Skip to content

Releases: donislawdev/BeanNetworkTester

0.4.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 12:31
fad537e

If it saved you time, leave a star. That is how the next tester who needs it finds out it exists.
BeanStar

The short version. This release is about numbers you can trust and targeting that catches what
you aimed at. If you read nothing else:

  • Aiming at a process now catches a connection from its first packet, TCP and UDP alike.
    "Drop SYN" combined with a process target previously did nothing at all, and DNS and QUIC walked
    past untouched.
  • "Effective loss" was wrong and is now right. It counts every impairment, over the traffic you
    aimed at. A session losing 90% of its traffic to a speed limit used to report 0.0%.
  • Presets and the shipped scenarios were recalculated against published measurements. Latency
    was applied twice, and three presets were eight times too fast.
  • A session moves about 1.3x more packets a second, and a delay you ask for arrives without the
    old few-millisecond surcharge.
  • New: "Capture only the targeted traffic". On a real run without it, the driver threw away 43%
    of the traffic you had aimed at before this tool ever saw it.
  • New: "Show only the targeted traffic", five new presets, a "Driver queue wait" reading, and a
    warning when your target shares a port with another program.
  • Config and scenario files now reject a typo instead of ignoring it.
  • Plus a long list of fixes to the counters, the Connections table and session start/stop.

If you script this tool, read the BREAKING section: presets, "Effective loss", profiles, the
statistics CSV, the connections CSV and the reproduction report all changed shape or meaning.

BREAKING

  • A misspelled setting in a config file is now an error. "latancy": 300 used to load in
    silence, so --dry-run said "Configuration is valid" and the run went out with no latency at
    all. Unknown settings now fail with code 3, naming the key and suggesting the near miss. Files
    this tool saved keep loading. A hand-written file with an unknown name will not.

  • A mistake in a scenario file now says so instead of doing nothing. "duraton" used to leave a
    reset at its default and "lop" used to turn looping off, both silently, so the tool looked like
    it was ignoring your file. Unknown keys, in a step or at the top level, are now an error naming
    the key. A correct file keeps working.

  • A scenario that ends now ends the run. A non-looping scenario with a timeline used to print
    "Scenario finished." and then run forever, which in a pipeline is a job that hangs to its own
    timeout and writes no summary. Such a run now stops with stop_reason: "scenario_done" and says
    so at the start. --duration still wins wherever you pass it.

  • The old reset_now scenario action is gone. reset_tcp does the same thing and is now the
    only action. A file still using reset_now will not load and says which step to fix. The
    "Reset TCP now" button is unaffected.

  • The presets were wrong and are now checked against published measurements. Latency was set as
    if it were a ping, but it is added in both directions, so "Satellite link" at 600 ms delivered a
    1200 ms ping. Three presets held kilobits where the field wants kilobytes, making them
    eight times too fast. If you scripted --preset, your traffic changes. Ids are unchanged, but
    --preset "Satellite link" is now "Satellite (geostationary)".

  • The shipped scenarios in scenarios/ were recalculated the same way, so a scenario and a
    preset describe the same network with the same numbers. The ping you get is now the number written
    in the file.

  • "Effective loss" now means what its name says, and your numbers will change. It used to be the
    configured Loss percentage over every packet seen, ignoring speed limits, blocking, LAN cut, link
    outages, resets, dropped SYNs and expired NAT. It now counts every impairment, over the traffic you
    aimed at. effective_loss_pct and effective_corruption_pct moved with it, so reports from before
    and after are not comparable.

  • "Duplicated" counts packets actually sent twice, not packets the tool decided to duplicate.
    Under load the copy was thrown away while the counter rose anyway: 40 packets in, "Duplicated"
    read 40, nothing reached the wire. This matches "Corrupted", which always counted only real
    changes. Reports from before and after are not comparable on that field.

  • Profiles now remember more of the link: latency spikes, link outages (flapping) and the buffer,
    on top of the original seven fields. Outages are why it was worth doing - a profile can finally
    describe a link that cuts out. Old profiles load exactly as before. Picking a preset now clears
    all of these, so "Perfect network" really does clear everything, and --preset finally does what
    the window does.

  • The Connections table now shows what arrived AND what was offered. "down", "up" and "total"
    held captured bytes under headings meaning delivered, so a row could read 5 MB while the
    application got 0.4 MB. Those three are now delivered, and new "down seen" / "up seen"
    hold what was captured. The connections CSV changed shape: the three old byte columns are
    replaced by six delivered_* and captured_* ones, renamed rather than reused.

  • The reproduction report's "connections reset" counted packets, not connections. One reset
    connection could report itself as 50. The report now carries three keys that answer three
    questions: connections_reset, rst_packets_dropped and rst_sent. The statistics CSV gained a
    matching connections_reset column. Nothing on screen changed.

  • The statistics CSV gained capture_narrowed and packets_in_scope columns. The first records
    whether "Capture only the targeted traffic" was in effect, without which two rows under one header
    can count completely different traffic. Your existing file is moved aside with a timestamp and a
    fresh one started, as it already is whenever columns change, so no row misaligns. A script reading
    by column position needs the new offsets.

  • --gui no longer accepts any other option. --gui --loss 30 --duration 600 used to open no
    window and quietly impair in the background, with no STOP button anywhere. It now stops with a
    usage error (code 2) and says what to do instead. If a script relied on this, delete --gui
    from it.

Added

  • Five new presets: Satellite (low orbit), Distant server (another continent), Congested home
    link (bufferbloat), Train / metro (tunnels) and In-flight Wi-Fi. Two are worth a note: bufferbloat
    only bites once you really saturate the link, and Train / metro is the only preset that takes the
    connection fully down, so your application has to reconnect rather than just slow down.

  • "Show only the targeted traffic" (Settings, off by default) points the counters, the chart, the
    Connections table and the connections CSV at your target alone. It changes what you see, never
    what is captured or impaired. Three things deliberately do not follow it: "Queue overflow",
    "Dropped at stop" and "Send failed" always cover everything, because they count the tool's own
    losses. The statistics CSV carries both totals instead. Reports and --format json are unchanged.

  • "Capture only the targeted traffic" (--narrow-filter) pushes your destination IP and port
    into WinDivert, so traffic that could never be impaired is not handed over at all. It is a
    correctness fix, not just a speed one: measured on a real run, without it the driver threw away
    43% of the traffic you aimed at before the tool saw it. It applies at START, and does nothing
    for a process target, a wildcard or an re: pattern - the run says which.

  • "Driver queue wait (peak)" in the Session tab shows how long packets waited inside WinDivert
    before the tool saw them. That is the one delay the tool adds and counted nowhere. It is measured,
    not estimated. Expect a fraction of a millisecond when idle; above 50 ms the log says so. Blank
    under --simulate.

  • A session now records the WinDivert queue it ran behind (length, time and size) in the log and
    in the reproduction report, so a report from a machine you do not have in front of you says which
    queue produced its numbers.

  • The tool now warns when your target shares a port with another program. Windows lets several
    programs hold one local port - that is how mDNS, SSDP and DHCP work - and this tool decides what to
    break from the port number. On this machine four ports out of 127 were shared, one of them by five
    programs. Applying a target now names the port and who holds it, so you know that part of the
    result is a coin toss.

  • The command line says when your target stops matching, instead of finishing green in silence.
    Measured: aiming by process id and restarting the program left five out of five new connections
    untouched with nothing in the output. Aiming by name recovers on its own and costs only the
    first connection. Aiming by process id never recovers. If the program under test restarts, aim
    by name.

  • Every run with a process target ends by saying how much of the captured traffic was yours -
    "In scope: 40 of 500 captured packets" - and calls it out when that is zero. A run where your
    target caught nothing looks exactly like a run where your application coped. It is a warning, not
    a failure, because a quiet target is perfectly ordinary.

Changed

  • The checkbox is now called "Capture only the targeted traffic", not "Narrow the driver filter
    to the target". The old name described the machinery. The --narrow-filter flag i...
Read more

0.4.0-rc.1

0.4.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 22:14
ae0d1a0

If it saved you time, leave a star. That is how the next tester who needs it finds out it exists.
BeanStar

Full changelog:
https://github.com/donislawdev/BeanNetworkTester/blob/master/CHANGELOG.md

0.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 21:38
6c66511

If it saved you time, leave a star. That is how the next tester who needs it finds out it exists.
BeanStar

Full changelog:
https://github.com/donislawdev/BeanNetworkTester/blob/master/CHANGELOG.md

0.3.0-rc.1

0.3.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Jul 21:48
fa3ef72

There are still some bugs, I'm working on it.

But a lot of people has asked for the open source, so here is it :-)

Full changelog (V0.3.0):
https://github.com/donislawdev/BeanNetworkTester/blob/master/CHANGELOG-INTERNAL.md

⭐ If it saved you time, leave a star. That is how the next tester who needs it finds out it exists.
BeanStar