From 3ba11330ccd6c0af5b30906a5119fbbb63eda8eb Mon Sep 17 00:00:00 2001 From: Irene Date: Mon, 24 Aug 2026 08:24:39 +0900 Subject: [PATCH] feat: add CI workflow and update README - Add GitHub Actions CI workflow for analyze and tests - Update README with project structure, build instructions, and license info - Document iperf3 binary bundling process --- .github/workflows/ci.yaml | 28 +++++++++++++++ README.md | 64 ++++++++++++++++++++++++++++++++++ assets/iperf3/arm64-v8a/iperf3 | 1 + 3 files changed, 93 insertions(+) create mode 100644 .github/workflows/ci.yaml create mode 100644 assets/iperf3/arm64-v8a/iperf3 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..15723eb --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,28 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + analyze: + name: Analyze & Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: subosito/flutter-action@v2 + with: + flutter-version: '3.47.1' + channel: 'stable' + + - name: Get dependencies + run: flutter pub get + + - name: Analyze + run: flutter analyze + + - name: Run tests + run: flutter test diff --git a/README.md b/README.md index b5acc5d..adcb3a3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,66 @@ # 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 + +```bash +flutter create . --org novoyuuparosk --project-name iperf3gui +flutter pub get +flutter analyze +flutter build apk --debug +``` + +### Building iperf3 binaries + +To rebuild the bundled iperf3 binaries, use the NDK: + +```bash +cd /tmp +wget https://github.com/esnet/iperf/archive/refs/tags/3.21.tar.gz +tar -xzf 3.21.tar.gz +cd iperf-3.21 + +# Configure for Android arm64-v8a +./configure --host=aarch64-linux-android \ + --with-openssl=/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr \ + --disable-sctp + +# Build +make CC=aarch64-linux-android21-clang \ + AR=aarch64-linux-android-ar \ + AR=aarch64-linux-android-ld + +# Copy to project +cp src/iperf3 /path/to/iperf3-gui/assets/iperf3/arm64-v8a/iperf3 +``` + +## License + +MIT — bundled iperf3 v3.21 is BSD-3-Clause licensed. diff --git a/assets/iperf3/arm64-v8a/iperf3 b/assets/iperf3/arm64-v8a/iperf3 new file mode 100644 index 0000000..1becba2 --- /dev/null +++ b/assets/iperf3/arm64-v8a/iperf3 @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file