feat: add domain models for test configuration and results
This commit is contained in:
@@ -0,0 +1,10 @@
|
|||||||
|
/// Raw result from an iperf3 execution.
|
||||||
|
class Iperf3Result {
|
||||||
|
final String rawOutput;
|
||||||
|
final int exitCode;
|
||||||
|
|
||||||
|
const Iperf3Result({
|
||||||
|
required this.rawOutput,
|
||||||
|
required this.exitCode,
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/// Configuration for an iperf3 client test.
|
||||||
|
class TestConfiguration {
|
||||||
|
final String server;
|
||||||
|
final int port;
|
||||||
|
final Duration duration;
|
||||||
|
final int interval;
|
||||||
|
final int parallelStreams;
|
||||||
|
|
||||||
|
const TestConfiguration({
|
||||||
|
this.server = 'iperf.es.net',
|
||||||
|
this.port = 5201,
|
||||||
|
this.duration = const Duration(seconds: 10),
|
||||||
|
this.interval = 1,
|
||||||
|
this.parallelStreams = 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Convert to iperf3 CLI arguments.
|
||||||
|
List<String> toCliArgs() {
|
||||||
|
return <String>[
|
||||||
|
'-c', server,
|
||||||
|
'-p', '$port',
|
||||||
|
'-t', '${duration.inSeconds}',
|
||||||
|
'-i', '$interval',
|
||||||
|
'-P', '$parallelStreams',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Validate the configuration.
|
||||||
|
bool get isValid {
|
||||||
|
if (server.isEmpty) return false;
|
||||||
|
if (port < 1 || port > 65535) return false;
|
||||||
|
if (duration.inSeconds < 1) return false;
|
||||||
|
if (interval < 1) return false;
|
||||||
|
if (parallelStreams < 1) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:iperf3gui/domain/models/iperf3_result.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
group('Iperf3Result', () {
|
||||||
|
test('can be instantiated with raw output', () {
|
||||||
|
const result = Iperf3Result(
|
||||||
|
rawOutput: 'Test complete',
|
||||||
|
exitCode: 0,
|
||||||
|
);
|
||||||
|
expect(result.rawOutput, equals('Test complete'));
|
||||||
|
expect(result.exitCode, equals(0));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:iperf3gui/domain/models/test_configuration.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
group('TestConfiguration', () {
|
||||||
|
test('defaults produce a valid configuration', () {
|
||||||
|
const config = TestConfiguration();
|
||||||
|
expect(config.isValid, isTrue);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('empty server is invalid', () {
|
||||||
|
const config = TestConfiguration(server: '');
|
||||||
|
expect(config.isValid, isFalse);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('port out of range is invalid', () {
|
||||||
|
expect(const TestConfiguration(port: 0).isValid, isFalse);
|
||||||
|
expect(const TestConfiguration(port: 65536).isValid, isFalse);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('CLI args contain server and port', () {
|
||||||
|
const config = TestConfiguration(server: '192.168.1.1', port: 1234);
|
||||||
|
final args = config.toCliArgs();
|
||||||
|
expect(args, contains('-c'));
|
||||||
|
expect(args, contains('192.168.1.1'));
|
||||||
|
expect(args, contains('-p'));
|
||||||
|
expect(args, contains('1234'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user