mikkeli f410a7e0d3 fix(android): run iperf3 tests off the Flutter platform thread
runIperfLive() blocks for the full duration of a test, but the MethodChannel
handler called it directly on the platform thread. That froze the UI for the
whole run, and because output reaches Dart by posting to the main looper, it
also meant no line could be delivered until the test was already over — the
live output the bridge streams had nowhere to go. Tests now run on a
dedicated single-thread executor and the channel call returns immediately.

MainThreadCallback's constructor properties were named onOutput/onError/
onComplete, the same names as the interface methods overriding them, so
`mainHandler.post { onOutput(line) }` resolved to the member function rather
than the lambda and re-posted itself instead of reaching the channel. Renamed
to emit* so the call cannot bind to the wrong declaration.

A failed System.loadLibrary now surfaces as a NATIVE_LIB_MISSING channel
error rather than leaving every later call to hang, and detaching from the
engine stops an in-flight test whose callbacks would fire into a dead
channel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 19:03:22 +09:00

iperf3-gui

A Flutter-based Android GUI wrapper for iperf3, the popular network performance measurement tool.

Features

  • Client-mode network throughput testing
  • Simple UI: enter server address, port, and press GO
  • Raw iperf3 output display
  • Bundled iperf3 v3.21 binaries for arm64-v8a and armeabi-v7a

Architecture

lib/
├── domain/
│   ├── models/          # TestConfiguration, Iperf3Result
│   └── services/        # Iperf3Service (Process runner)
├── ui/
│   └── features/
│       └── test_run/    # TestRunScreen, TestRunViewModel
├── main.dart            # App entry point
└── pubspec.yaml         # Dependencies: provider, path_provider

Building

Prerequisites:

  • Flutter 3.47+
  • Android SDK with platform android-36
  • JDK 17
flutter create . --org novoyuuparosk --project-name iperf3gui
flutter pub get
flutter analyze
flutter build apk --debug

iperf3 Binaries

Pre-compiled binaries are sourced from davidBar-On/android-iperf3 and bundled in assets/iperf3/ (arm64-v8a and armeabi-v7a for Android 28+).

License

MIT — bundled iperf3 v3.21 is BSD-3-Clause licensed.

S
Description
No description provided
Readme MIT 2 MiB
2026-08-26 13:44:11 +00:00
Languages
C 70.4%
Makefile 11.5%
Dart 7.8%
C++ 2.6%
Roff 2.5%
Other 5.2%