Δημοσίευση πηγής
Κατεβάστε την πηγή ZIP
CH-J SM Mobile
Περιηγηθείτε σε καταλόγους και αρχεία για μια συγκεκριμένη έκδοση εφαρμογών.
CH-J / SM Mobile
134 αρχεία
sm-mobile-20261016T050549Z-3678f2a05fa9
Προστέθηκε: · Χτισμένο:
1
import 'dart:convert';2
import 'dart:io';3
import 'package:flutter_test/flutter_test.dart';4
import 'package:sm_mobile/models/server_profile.dart';5
import 'package:sm_mobile/services/monitor.dart';6
import 'package:sm_mobile/services/ssh_service.dart';7
import 'package:sm_mobile/services/vault.dart';8
import '../support.dart';10
void main() {11
TestWidgetsFlutterBinding.ensureInitialized();12
final enabled = Platform.environment['SM_LINUX_TEST'] == '1';13
late Vault vault;14
late SshService ssh;15
setUpAll(() async {16
if (!enabled) return;17
vault = Vault(MemoryStore());18
await vault.create('isolated linux test master password');19
ssh = SshService(vault);20
});21
tearDownAll(() {22
if (enabled) {23
ssh.dispose();24
vault.lock();25
}26
});27
test(28
'real Linux OpenSSH: password login and independently pinned host fingerprint',29
() async {30
final p = ServerProfile(31
name: 'Linux test',32
host: '127.0.0.1',33
port: 22239,34
username: 'smtest',35
);36
await ssh.connect(37
p,38
credential: Platform.environment['SM_TEST_PASSWORD']!,39
prompt: (endpoint, type, fp) async {40
expect(fp, Platform.environment['SM_TEST_FINGERPRINT']);41
return true;42
},43
);44
expect(ssh.error, null);45
expect(ssh.connected, true);46
final marker = 'LINUX_PASSWORD_OK_${newId()}';47
final result = await ssh.client.run('printf %s "$marker"');48
expect(utf8.decode(result), marker);49
},50
skip: !enabled,51
);52
test('real Linux metrics, command RTT and cancellable refresh', () async {53
final adapter = LinuxMonitor();54
final metrics = await adapter.sample(ssh.client);55
expect(56
metrics.keys,57
containsAll([58
'cpu',59
'ram',60
'disk',61
'uptime',62
'load',63
'system',64
'release',65
'rtt',66
]),67
);68
expect(metrics['system'], startsWith('Linux'));69
expect(70
double.parse(metrics['cpu']!.replaceAll('%', '')),71
inInclusiveRange(0, 100),72
);73
expect(double.parse(metrics['uptime']!), greaterThan(0));74
expect(metrics['ram'], contains('MiB'));75
expect(metrics['disk'], contains('KiB'));76
final expectedLoad = utf877
.decode(await ssh.client.run('cut -d " " -f 1-3 /proc/loadavg'))78
.trim()79
.split(' ');80
final actualLoad = metrics['load']!.split(' ');81
for (var i = 0; i < 3; i++) {82
expect(83
double.parse(actualLoad[i]),84
closeTo(double.parse(expectedLoad[i]), .5),85
);86
}87
expect(metrics['rtt'], matches(RegExp(r'^\d+ ms$')));88
final pending = adapter.sample(ssh.client);89
adapter.cancel();90
await expectLater(pending, throwsA(anything));91
ssh.disconnect();92
expect(ssh.connected, false);93
}, skip: !enabled);94
}SHA-256
c999103787416ce8ba545e37165ae9869b7c0ecc1148c72fcda58fb1ad785b72CH-J Proprietary Software License 1.14 · Η πηγή παρέχεται στο CH-J Proprietary Software License 1.14. Η διαθεσιμότητά του δεν αλλάζει τους όρους της άδειας χρήσης ούτε χορηγεί πρόσθετα δικαιώματα.
Archive SHA-256
c486a807e4828998b9c57ab0f2e760f7980b31965fe118e89d3e1a5a2b65be65