mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
92
test/btrfs_test.dart
Normal file
92
test/btrfs_test.dart
Normal file
@@ -0,0 +1,92 @@
|
||||
// ignore_for_file: avoid_print
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:server_box/data/model/server/disk.dart';
|
||||
|
||||
void main() {
|
||||
group('BTRFS RAID1 disk parsing', () {
|
||||
test('correctly handles BTRFS RAID1 with same UUID', () {
|
||||
final disks = Disk.parse(_btrfsRaidJsonOutput);
|
||||
expect(disks, isNotEmpty);
|
||||
expect(disks.length, 4); // Should have 2 parent disks + 2 BTRFS partitions
|
||||
|
||||
// We should get two distinct disks with the same UUID but different paths
|
||||
final nvme1Disk = disks.firstWhere((disk) => disk.path == '/dev/nvme1n1p1');
|
||||
final nvme2Disk = disks.firstWhere((disk) => disk.path == '/dev/nvme2n1p1');
|
||||
|
||||
// Both should exist
|
||||
expect(nvme1Disk, isNotNull);
|
||||
expect(nvme2Disk, isNotNull);
|
||||
|
||||
// They should have the same UUID (since they're part of the same BTRFS volume)
|
||||
expect(nvme1Disk.uuid, nvme2Disk.uuid);
|
||||
|
||||
// But they should be treated as distinct disks
|
||||
expect(identical(nvme1Disk, nvme2Disk), isFalse);
|
||||
|
||||
// Verify DiskUsage counts physical disks correctly
|
||||
final usage = DiskUsage.parse(disks);
|
||||
// With our unique path+kname identifier, both disks should be counted
|
||||
expect(usage.size, nvme1Disk.size + nvme2Disk.size);
|
||||
expect(usage.used, nvme1Disk.used + nvme2Disk.used);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Simulated BTRFS RAID1 lsblk JSON output
|
||||
const _btrfsRaidJsonOutput = '''
|
||||
{
|
||||
"blockdevices": [
|
||||
{
|
||||
"name": "nvme1n1",
|
||||
"kname": "nvme1n1",
|
||||
"path": "/dev/nvme1n1",
|
||||
"fstype": null,
|
||||
"mountpoint": null,
|
||||
"fssize": null,
|
||||
"fsused": null,
|
||||
"fsavail": null,
|
||||
"fsuse%": null,
|
||||
"children": [
|
||||
{
|
||||
"name": "nvme1n1p1",
|
||||
"kname": "nvme1n1p1",
|
||||
"path": "/dev/nvme1n1p1",
|
||||
"fstype": "btrfs",
|
||||
"mountpoint": "/mnt/raid",
|
||||
"fssize": "500000000000",
|
||||
"fsused": "100000000000",
|
||||
"fsavail": "400000000000",
|
||||
"fsuse%": "20%",
|
||||
"uuid": "btrfs-raid-uuid-1234-5678"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "nvme2n1",
|
||||
"kname": "nvme2n1",
|
||||
"path": "/dev/nvme2n1",
|
||||
"fstype": null,
|
||||
"mountpoint": null,
|
||||
"fssize": null,
|
||||
"fsused": null,
|
||||
"fsavail": null,
|
||||
"fsuse%": null,
|
||||
"children": [
|
||||
{
|
||||
"name": "nvme2n1p1",
|
||||
"kname": "nvme2n1p1",
|
||||
"path": "/dev/nvme2n1p1",
|
||||
"fstype": "btrfs",
|
||||
"mountpoint": "/mnt/raid",
|
||||
"fssize": "500000000000",
|
||||
"fsused": "100000000000",
|
||||
"fsavail": "400000000000",
|
||||
"fsuse%": "20%",
|
||||
"uuid": "btrfs-raid-uuid-1234-5678"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
''';
|
||||
Reference in New Issue
Block a user