Files
flutter_server_box/test/btrfs_test.dart
2025-05-17 00:45:38 +08:00

93 lines
2.7 KiB
Dart

// 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"
}
]
}
]
}
''';