From dc16574a04d127506140143cc00f595025ab8a5e Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Thu, 9 May 2024 14:51:41 +0800 Subject: [PATCH] fix: disk parse --- ios/Runner.xcodeproj/project.pbxproj | 36 +++++----- lib/core/extension/context/dialog.dart | 3 +- lib/core/utils/ssh_auth.dart | 6 +- lib/data/model/server/conn.dart | 2 +- lib/data/model/server/disk.dart | 44 +++++++----- lib/data/res/build_data.dart | 8 +-- lib/data/res/misc.dart | 3 - lib/data/res/status.dart | 2 +- lib/view/page/server/detail/view.dart | 4 +- macos/Runner.xcodeproj/project.pbxproj | 12 ++-- test/disk_test.dart | 97 ++++++++++++++++++++++++++ test/status_prase_test.dart | 87 ----------------------- 12 files changed, 163 insertions(+), 141 deletions(-) create mode 100644 test/disk_test.dart delete mode 100644 test/status_prase_test.dart diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 24f11f45..9c39e2c0 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -690,7 +690,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -700,7 +700,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -826,7 +826,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -836,7 +836,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -854,7 +854,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -864,7 +864,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -885,7 +885,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -898,7 +898,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -924,7 +924,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -937,7 +937,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -960,7 +960,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -973,7 +973,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -996,7 +996,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1008,7 +1008,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -1037,7 +1037,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1049,7 +1049,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -1075,7 +1075,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1087,7 +1087,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/core/extension/context/dialog.dart b/lib/core/extension/context/dialog.dart index 93b96789..4736d0a2 100644 --- a/lib/core/extension/context/dialog.dart +++ b/lib/core/extension/context/dialog.dart @@ -67,6 +67,7 @@ extension DialogX on BuildContext { Future showPwdDialog({ String? hostId, String? title, + String? label, }) async { if (!mounted) return null; return await showRoundDialog( @@ -82,7 +83,7 @@ extension DialogX on BuildContext { _recoredPwd[hostId] = val; } }, - label: l10n.pwd, + label: label ?? l10n.pwd, ), ); } diff --git a/lib/core/utils/ssh_auth.dart b/lib/core/utils/ssh_auth.dart index 43227148..a9113dce 100644 --- a/lib/core/utils/ssh_auth.dart +++ b/lib/core/utils/ssh_auth.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; +import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/data/model/server/server_private_info.dart'; import 'package:toolbox/data/res/provider.dart'; @@ -11,7 +12,10 @@ abstract final class KeybordInteractive { BuildContext? ctx, }) async { try { - final res = await (ctx ?? Pros.app.ctx)?.showPwdDialog(title: spi.id); + final res = await (ctx ?? Pros.app.ctx)?.showPwdDialog( + title: '2FA ${l10n.pwd}', + label: spi.id, + ); return res == null ? null : [res]; } catch (e) { return null; diff --git a/lib/data/model/server/conn.dart b/lib/data/model/server/conn.dart index 81621717..b150a738 100644 --- a/lib/data/model/server/conn.dart +++ b/lib/data/model/server/conn.dart @@ -18,7 +18,7 @@ class Conn { final idx = lines.lastWhere((element) => element.startsWith('Tcp:'), orElse: () => ''); if (idx != '') { - final vals = idx.split(Miscs.numReg); + final vals = idx.split(Miscs.blankReg); return Conn( maxConn: int.tryParse(vals[5]) ?? 0, active: int.tryParse(vals[6]) ?? 0, diff --git a/lib/data/model/server/disk.dart b/lib/data/model/server/disk.dart index 329b6752..fffc9a03 100644 --- a/lib/data/model/server/disk.dart +++ b/lib/data/model/server/disk.dart @@ -5,7 +5,7 @@ import 'package:toolbox/data/model/server/time_seq.dart'; import '../../res/misc.dart'; class Disk { - final String dev; + final String fs; final String mount; final int usedPercent; final BigInt used; @@ -13,7 +13,7 @@ class Disk { final BigInt avail; const Disk({ - required this.dev, + required this.fs, required this.mount, required this.usedPercent, required this.used, @@ -30,7 +30,7 @@ class Disk { if (item.isEmpty) { continue; } - final vals = item.split(Miscs.numReg); + final vals = item.split(Miscs.blankReg); if (vals.length == 1) { pathCache = vals[0]; continue; @@ -40,15 +40,16 @@ class Disk { pathCache = ''; } try { - final dev = vals[0]; - if (!_shouldCalc(dev)) continue; + final fs = vals[0]; + final mount = vals[5]; + if (!_shouldCalc(fs, mount)) continue; list.add(Disk( - dev: dev, - mount: vals[5], + fs: fs, + mount: mount, usedPercent: int.parse(vals[4].replaceFirst('%', '')), - used: BigInt.tryParse(vals[2]) ?? BigInt.zero, - size: BigInt.tryParse(vals[1]) ?? BigInt.one, - avail: BigInt.tryParse(vals[3]) ?? BigInt.one, + used: BigInt.parse(vals[2]), + size: BigInt.parse(vals[1]), + avail: BigInt.parse(vals[3]), )); } catch (e) { continue; @@ -56,6 +57,11 @@ class Disk { } return list; } + + @override + String toString() { + return 'Disk{dev: $fs, mount: $mount, usedPercent: $usedPercent, used: $used, size: $size, avail: $avail}'; + } } class DiskIO extends TimeSeq> { @@ -169,9 +175,9 @@ class DiskUsage { var used = BigInt.zero; var size = BigInt.zero; for (var disk in disks) { - if (!_shouldCalc(disk.dev)) continue; - if (devs.contains(disk.dev)) continue; - devs.add(disk.dev); + if (!_shouldCalc(disk.fs, disk.mount)) continue; + if (devs.contains(disk.fs)) continue; + devs.add(disk.fs); used += disk.used; size += disk.size; } @@ -179,9 +185,13 @@ class DiskUsage { } } -// Some NAS may have mounted path like this `//192.168.1.2/` -bool _shouldCalc(String dev) { - if (dev.startsWith('/dev')) return true; - if (dev.startsWith('//')) return true; +bool _shouldCalc(String fs, String mount) { + if (fs.startsWith('/dev')) return true; + // Some NAS may have mounted path like this `//192.168.1.2/` + if (fs.startsWith('//')) return true; + if (mount.startsWith('/mnt')) return true; + // if (fs.startsWith('shm') || + // fs.startsWith('overlay') || + // fs.startsWith('tmpfs')) return false; return false; } diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 8f9238b4..0a298990 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,9 +2,9 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 880; + static const int build = 881; static const String engine = "3.19.6"; - static const String buildAt = "2024-05-09 13:38:11"; - static const int modifications = 7; - static const int script = 45; + static const String buildAt = "2024-05-09 14:50:53"; + static const int modifications = 12; + static const int script = 46; } diff --git a/lib/data/res/misc.dart b/lib/data/res/misc.dart index b0f9dee5..4ff832b0 100644 --- a/lib/data/res/misc.dart +++ b/lib/data/res/misc.dart @@ -1,9 +1,6 @@ import 'dart:convert'; abstract final class Miscs { - /// RegExp for number - static final numReg = RegExp(r'\s{1,}'); - static final blankReg = RegExp(r'\s+'); /// RegExp for password request diff --git a/lib/data/res/status.dart b/lib/data/res/status.dart index 3580c7df..2fe0d00a 100644 --- a/lib/data/res/status.dart +++ b/lib/data/res/status.dart @@ -42,7 +42,7 @@ abstract final class InitStatus { ), disk: [ Disk( - dev: '/', + fs: '/', mount: '/', usedPercent: 0, used: BigInt.zero, diff --git a/lib/view/page/server/detail/view.dart b/lib/view/page/server/detail/view.dart index 91e738a8..2610d788 100644 --- a/lib/view/page/server/detail/view.dart +++ b/lib/view/page/server/detail/view.dart @@ -504,7 +504,7 @@ class _ServerDetailPageState extends State } Widget _buildDiskItem(Disk disk, ServerStatus ss) { - final (read, write) = ss.diskIO.getSpeed(disk.dev); + final (read, write) = ss.diskIO.getSpeed(disk.fs); final text = () { final use = '${l10n.used} ${disk.used.kb2Str} / ${disk.size.kb2Str}'; if (read == null || write == null) return use; @@ -521,7 +521,7 @@ class _ServerDetailPageState extends State crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - disk.dev, + disk.fs, style: UIs.text12, textScaler: _textFactor, ), diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 9ae062d6..935c74b5 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -471,7 +471,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -481,7 +481,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -608,7 +608,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -618,7 +618,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -638,7 +638,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 880; + CURRENT_PROJECT_VERSION = 881; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; @@ -649,7 +649,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.880; + MARKETING_VERSION = 1.0.881; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/test/disk_test.dart b/test/disk_test.dart new file mode 100644 index 00000000..b68d5d36 --- /dev/null +++ b/test/disk_test.dart @@ -0,0 +1,97 @@ +// ignore_for_file: avoid_print + +import 'package:flutter_test/flutter_test.dart'; +import 'package:toolbox/data/model/server/disk.dart'; + +void main() { + test('parse disk', () { + for (final raw in _raws) { + print('---' * 10); + final disks = Disk.parse(raw); + print(disks.join('\n')); + print('\n'); + } + }); +} + +const _raws = [ +// ''' +// Filesystem 1K-blocks Used Available Use% Mounted on +// udev 864088 0 864088 0% /dev +// tmpfs 176724 688 176036 1% /run +// /dev/vda3 40910528 18067948 20951380 47% / +// tmpfs 883612 0 883612 0% /dev/shm +// tmpfs 5120 0 5120 0% /run/lock +// /dev/vda2 192559 11807 180752 7% /boot/efi +// tmpfs 176720 104 176616 1% /run/user/1000 +// ''', + ''' +Filesystem 1K-blocks Used Available Use% Mounted on +udev 16181648 0 16181648 0% /dev +tmpfs 3270528 37268 3233260 2% /run +boot-pool/ROOT/23.10.2 467090304 3083008 464007296 1% / +tmpfs 16352624 112 16352512 1% /dev/shm +tmpfs 102400 0 102400 0% /run/lock +tmpfs 16352624 12 16352612 1% /tmp +boot-pool/grub 464015744 8448 464007296 1% /boot/grub +v2000pro 1906569472 128 1906569344 1% /mnt/v2000pro +v2000pro/local-app 1921857408 15288064 1906569344 1% /mnt/v2000pro/local-app +v2000pro/ix-applications 1906569472 128 1906569344 1% /mnt/v2000pro/ix-applications +v2000pro/sdd 1906569472 128 1906569344 1% /mnt/v2000pro/sdd +v2000pro/ix-applications/catalogs 1907647744 1078400 1906569344 1% /mnt/v2000pro/ix-applications/catalogs +v2000pro/ix-applications/k3s 1907116416 547072 1906569344 1% /mnt/v2000pro/ix-applications/k3s +v2000pro/ix-applications/releases 1906569472 128 1906569344 1% /mnt/v2000pro/ix-applications/releases +v2000pro/ix-applications/default_volumes 1906569472 128 1906569344 1% /mnt/v2000pro/ix-applications/default_volumes +wd16-raidz 19217443072 256 19217442816 1% /mnt/wd16-raidz +wd16-raidz/games 19386510592 169067776 19217442816 1% /mnt/wd16-raidz/games +wd16-raidz/store 20526360832 1308918016 19217442816 7% /mnt/wd16-raidz/store +wd16-raidz/share 62914560 24397312 38517248 39% /mnt/wd16-raidz/share +wd16-raidz/media 60509795968 41292353152 19217442816 69% /mnt/wd16-raidz/media +boot-pool/.system 464007424 128 464007296 1% /var/db/system +boot-pool/.system/cores 1048576 128 1048448 1% /var/db/system/cores +boot-pool/.system/samba4 464007680 384 464007296 1% /var/db/system/samba4 +boot-pool/.system/rrd-ae32c386e13840b2bf9c0083275e7941 464007424 128 464007296 1% /var/db/system/rrd-ae32c386e13840b2bf9c0083275e7941 +boot-pool/.system/configs-ae32c386e13840b2bf9c0083275e7941 464010368 3072 464007296 1% /var/db/system/configs-ae32c386e13840b2bf9c0083275e7941 +boot-pool/.system/webui 464007424 128 464007296 1% /var/db/system/webui +boot-pool/.system/services 464007424 128 464007296 1% /var/db/system/services +boot-pool/.system/glusterd 464007424 128 464007296 1% /var/db/system/glusterd +boot-pool/.system/ctdb_shared_vol 464007424 128 464007296 1% /var/db/system/ctdb_shared_vol +boot-pool/.system/netdata-ae32c386e13840b2bf9c0083275e7941 464239744 232448 464007296 1% /var/db/system/netdata-ae32c386e13840b2bf9c0083275e7941 +v2000pro/ix-applications/k3s/kubelet 1906569728 384 1906569344 1% /var/lib/kubelet +tmpfs 512000 12 511988 1% /var/lib/kubelet/pods/26ae1c0e-18cf-4b75-b29d-8ce9636a7da3/volumes/kubernetes.io~projected/kube-api-access-9q9bx +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/c66db36fb35c6c881949ceb69b6c9da9b3ad92e305783ea3b77e65de791f61ba/shm +tmpfs 409600 12 409588 1% /var/lib/kubelet/pods/df8fac94-f5c1-4d3a-8f45-8e455510a2c8/volumes/kubernetes.io~projected/kube-api-access-4vzjm +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/c66db36fb35c6c881949ceb69b6c9da9b3ad92e305783ea3b77e65de791f61ba/rootfs +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/6f49cc72b9702e2713b67128235c9dd5837b41861022a021c9d315426cc352c4/shm +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/6f49cc72b9702e2713b67128235c9dd5837b41861022a021c9d315426cc352c4/rootfs +tmpfs 174080 12 174068 1% /var/lib/kubelet/pods/4d744e5b-1b98-41bd-8742-8d987f17c4af/volumes/kubernetes.io~projected/kube-api-access-jrzpb +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/ed0264ba5e5beebb1614da00b9fc9ce2f4241173b4ba8f52f83ffb068dc97034/shm +tmpfs 307200 12 307188 1% /var/lib/kubelet/pods/9423f3b8-712e-4539-b473-fb6e4b44481e/volumes/kubernetes.io~projected/kube-api-access-frxkj +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/ed0264ba5e5beebb1614da00b9fc9ce2f4241173b4ba8f52f83ffb068dc97034/rootfs +tmpfs 921600 12 921588 1% /var/lib/kubelet/pods/b6e2f566-3d64-4533-835f-1acf24293db8/volumes/kubernetes.io~projected/kube-api-access-v5rql +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/d6a11b1f80e1406ca31c260b4eadf9c7c0e9db17a98eac5d62cbcaf7ea0a013b/shm +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/76401fc48a79755d503ddac81d37ac2e00e0cccbcbd0de5527e3c132a3d93709/shm +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/d6a11b1f80e1406ca31c260b4eadf9c7c0e9db17a98eac5d62cbcaf7ea0a013b/rootfs +tmpfs 614400 12 614388 1% /var/lib/kubelet/pods/5676e37b-d0a4-4910-b3fd-cf7ec25f201f/volumes/kubernetes.io~projected/kube-api-access-jrm62 +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/76401fc48a79755d503ddac81d37ac2e00e0cccbcbd0de5527e3c132a3d93709/rootfs +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/22f66d268f14cedc9d16ff0c31a4babdb4a082e7444f72a745b8f0e6ccc7cec7/shm +tmpfs 307200 12 307188 1% /var/lib/kubelet/pods/b528d0cb-cf84-4f25-8d5d-eae89f6c853e/volumes/kubernetes.io~projected/kube-api-access-5bgtp +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/22f66d268f14cedc9d16ff0c31a4babdb4a082e7444f72a745b8f0e6ccc7cec7/rootfs +tmpfs 32705248 12 32705236 1% /var/lib/kubelet/pods/c2070b60-ec0a-4107-97ad-f1eb475ebac3/volumes/kubernetes.io~projected/kube-api-access-scxv6 +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/ceb3da406b1d6f38dfab42cc314b69a510947e42867afae6b33d0d8e10e705b5/shm +tmpfs 32705248 12 32705236 1% /var/lib/kubelet/pods/593d00aa-16bb-4d18-906d-37731ba3f8bf/volumes/kubernetes.io~projected/kube-api-access-x54qh +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/26547c6bfd920ed69d0d95c48a3d890695b0238420e4c54ee56075dc43e03ea5/shm +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/ceb3da406b1d6f38dfab42cc314b69a510947e42867afae6b33d0d8e10e705b5/rootfs +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/2119c0e105c80619f630691263450234456349d3ddce64b77a184491bda56dd2/rootfs +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/26547c6bfd920ed69d0d95c48a3d890695b0238420e4c54ee56075dc43e03ea5/rootfs +tmpfs 32705248 12 32705236 1% /var/lib/kubelet/pods/eccfba54-48aa-4950-b3b8-e18ad155e16d/volumes/kubernetes.io~projected/kube-api-access-lc9gs +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dda821508458f2207ebfb53485b33932724c5ede375efebbfc002b511daef1f3/shm +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/dda821508458f2207ebfb53485b33932724c5ede375efebbfc002b511daef1f3/rootfs +shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/510d5900ec9d403ba57689325b5560f713704d69c784487d9c3be127316e1db8/shm +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/510d5900ec9d403ba57689325b5560f713704d69c784487d9c3be127316e1db8/rootfs +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/a873561950eb40a58a6dfa3dd7e74a171a31b598cd3edacd930d09a8fede9ea1/rootfs +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/fa65821375d894f5039a763315734ed51befdafaa5215e30d2f8f889e351c1a3/rootfs +overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/3e463fd96ee1e2ddba7aca7e8cb161b59f33b0a778e5f7d8c1a5939a72a6f4a5/rootfs +v2000pro/pve 1906694784 125440 1906569344 1% /mnt/v2000pro/pve +v2000pro/download 1906569472 128 1906569344 1% /mnt/v2000pro/download''', +]; diff --git a/test/status_prase_test.dart b/test/status_prase_test.dart deleted file mode 100644 index 22b934cf..00000000 --- a/test/status_prase_test.dart +++ /dev/null @@ -1,87 +0,0 @@ -// ignore_for_file: avoid_print - -import 'package:flutter_test/flutter_test.dart'; -import 'package:toolbox/data/model/server/disk.dart'; - -void main() { - test('test parse disk', () { - const raw = ''' -Filesystem Size Used Available Use% Mounted on -none 400.0M 321.0M 79.0M 80% / -devtmpfs 7.7G 4.0K 7.7G 0% /dev -tmpfs 64.0M 1.5M 62.5M 2% /tmp -tmpfs 7.7G 144.0K 7.7G 0% /dev/shm -tmpfs 16.0M 0 16.0M 0% /share -/dev/mmcblk0p5 7.7M 46.0K 7.7M 1% /mnt/boot_config -tmpfs 16.0M 0 16.0M 0% /mnt/snapshot/export -/dev/md9 493.5M 169.3M 324.2M 34% /mnt/HDA_ROOT -cgroup_root 7.7G 0 7.7G 0% /sys/fs/cgroup -/dev/mapper/vg1-lv1312 - 352.1M 232.0K 351.9M 0% /mnt/pool1 -/dev/mapper/cachedev1 - 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA -/dev/mapper/cachedev2 - 792.8G 823.3M 791.5G 0% /share/CACHEDEV2_DATA -/dev/md13 417.0M 387.1M 29.9M 93% /mnt/ext -tmpfs 32.0M 27.2M 4.8M 85% /samba_third_party -tmpfs 48.0M 36.0K 48.0M 0% /share/CACHEDEV1_DATA/.samba/lock/msg.lock -df: /mnt/ext/opt/samba/private/msg.sock: Permission denied -/dev/mapper/vg1-snap10001 - 3.0T 1.4T 1.6T 47% /mnt/snapshot/1/10001 -/dev/mapper/vg1-snap10004 - 3.0T 1.1T 1.9T 36% /mnt/snapshot/1/10004 -/dev/mapper/vg1-snap10007 - 3.0T 1.3T 1.7T 43% /mnt/snapshot/1/10007 -/dev/mapper/vg1-snap10008 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10008 -/dev/mapper/vg1-snap10009 - 3.0T 1.1T 1.9T 37% /mnt/snapshot/1/10009 -/dev/mapper/vg1-snap10010 - 3.0T 1.4T 1.6T 46% /mnt/snapshot/1/10010 -/dev/mapper/vg1-snap10011 - 3.0T 1.1T 1.9T 38% /mnt/snapshot/1/10011 -/dev/mapper/vg1-snap10012 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10012 -/dev/mapper/vg1-snap10013 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10013 -/dev/mapper/vg1-snap10014 - 3.0T 1.2T 1.8T 39% /mnt/snapshot/1/10014 -/dev/mapper/vg1-snap10015 - 3.0T 1.3T 1.7T 43% /mnt/snapshot/1/10015 -/dev/mapper/vg1-snap10017 - 3.0T 1.4T 1.6T 46% /mnt/snapshot/1/10017 -/dev/mapper/cachedev1 - 3.0T 1.4T 1.6T 48% /lib/modules/5.10.60-qnap/container-station -tmpfs 100.0K 0 100.0K 0% /share/CACHEDEV1_DATA/Container/container-station-data/lib/lxd/shmounts -tmpfs 100.0K 0 100.0K 0% /share/CACHEDEV1_DATA/Container/container-station-data/lib/lxd/devlxd -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/a8b24fbc86efcced498db198044bcef8edc3d5d8d34854556d6def3435451092/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/e336c44a9bd40074eab29515da98f6fb5d4930e0d410994980d103678a46d19b/merg ed -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/badd629737c8abc5e18272165d15eca9e307a885d8809224339bc93cc9b8bf13/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/d232b71046f5ecc218e812adc9309f6a95590b2b8ec788a54acec0d33b6a346c/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/de77097c9d1560270bb4e5ad617555f00443c28dd2b4553d38d2eac4db1ed4a5/merged -Overlay 3.0T 1.4T 1.6T 48%/Share/CacheDev1_data/Container/Container-SATA/LIB/DOCKER/OVERLAY2/9E943181C3130C5AD306786CC9F773 E7B698BF87A7549363502D0/Merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/2d997d801b6cd2cf03b8760c8c01b111eec915ac5e57dc4b9d1c6c391e8f951f/merg ed -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/2e73a7857f218c2867ebc7ec69f7764bd5787ea2f9bfdcbfe25cdd2f25d62cd3/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/41c1a6e22899d9d0f8c02f0e9f2683c93b2fd8b2c93d677e9f87552839a1686c/ merged -Overlay 3.0T 1.4T 1.6T 48%/Share/CacheDev1_data/Container/Container-SATA/LIB/DOCKER/OVERLAY2/B23ef7F05050550D2D2D956BBBBBBBBBBBBB D2377575738F3F27D86A0D2/MERGED -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/6a105e8f5e740dceed8a96d16c3fcc95775974e6fbac382b5446b45bb611065b/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/4a25157fa48fcdfc89dcc46e6ff4acb685916a74f1ffbd541f99614dfc825645/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/6a10d2c42c3d2c3057f5c2e8816ddca2e384601666dfeecf19bd1c1d8d7e683b/merged -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/d648e717655504c32365b5145df409c1754d0b20d438c7a156763972ded1bfe0/merg ed -overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/d78d05dca0b50f28e5dcc0846f8034839cc17beb94b16e79095ac4cc00afc6ed/merged -/dev/mapper/vg1-snap10002 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10002 -/dev/mapper/vg1-snap10003 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10003 -/dev/mapper/vg1-snap10005 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10005 -/dev/mapper/vg1-snap10006 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10006 -Overlay 3.0T 1.4t 1.6T 48%/Share/CacheDev1_data/Container/Container-SATA/LIB/DOCKER/Overlay2/67586B522723529842984249DDDDD5F 1A923759CA7ECF626555408/MERGED -/dev/mapper/vg1-snap10016 - 3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10016 -'''; - final disks = Disk.parse(raw); - print(disks.map((e) => '${e.mount} ${e.used}').join('\n')); - }); -}