@@ -23,25 +23,30 @@ func TestFS_MDStat(t *testing.T) {
2323 if err != nil {
2424 t .Fatalf ("parsing of reference-file failed entirely: %s" , err )
2525 }
26+ // TODO: Test cases to capture in future:
27+ // WriteMostly devices
28+ // Journal devices
29+ // Replacement devices
30+ // Global hotspares
2631
2732 refs := map [string ]MDStat {
28- "md127" : {Name : "md127" , Type : "raid1" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 312319552 , BlocksSynced : 312319552 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdi2" , "sdj2" }},
29- "md0" : {Name : "md0" , Type : "raid1" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 248896 , BlocksSynced : 248896 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdi1" , "sdj1" }},
30- "md4" : {Name : "md4" , Type : "raid1" , ActivityState : "inactive" , DisksActive : 0 , DisksTotal : 0 , DisksFailed : 1 , DisksDown : 0 , DisksSpare : 1 , BlocksTotal : 4883648 , BlocksSynced : 4883648 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sda3" , "sdb3" }},
31- "md6" : {Name : "md6" , Type : "raid1" , ActivityState : "recovering" , DisksActive : 1 , DisksTotal : 2 , DisksFailed : 1 , DisksDown : 1 , DisksSpare : 1 , BlocksTotal : 195310144 , BlocksSynced : 16775552 , BlocksSyncedPct : 8.5 , BlocksSyncedFinishTime : 17 , BlocksSyncedSpeed : 259783 , Devices : []string { "sdb2" , "sdc" , "sda2" }},
32- "md3" : {Name : "md3" , Type : "raid6" , ActivityState : "active" , DisksActive : 8 , DisksTotal : 8 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 2 , BlocksTotal : 5853468288 , BlocksSynced : 5853468288 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sda1" , "sdh1" , "sdg1" , "sdf1" , "sde1" , "sdd1" , "sdc1" , "sdb1" , "sdd1" , "sdd2" }},
33- "md8" : {Name : "md8" , Type : "raid1" , ActivityState : "resyncing" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 2 , BlocksTotal : 195310144 , BlocksSynced : 16775552 , BlocksSyncedPct : 8.5 , BlocksSyncedFinishTime : 17 , BlocksSyncedSpeed : 259783 , Devices : []string { "sdb1" , "sda1" , "sdc" , "sde" }},
34- "md7" : {Name : "md7" , Type : "raid6" , ActivityState : "active" , DisksActive : 3 , DisksTotal : 4 , DisksFailed : 1 , DisksDown : 1 , DisksSpare : 0 , BlocksTotal : 7813735424 , BlocksSynced : 7813735424 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdb1" , "sde1" , "sdd1" , "sdc1" }},
35- "md9" : {Name : "md9" , Type : "raid1" , ActivityState : "resyncing" , DisksActive : 4 , DisksTotal : 4 , DisksSpare : 1 , DisksDown : 0 , DisksFailed : 2 , BlocksTotal : 523968 , BlocksSynced : 0 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdc2" , "sdd2" , "sdb2" , "sda2" , "sde" , "sdf" , "sdg" }},
36- "md10" : {Name : "md10" , Type : "raid0" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 314159265 , BlocksSynced : 314159265 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sda1" , "sdb1" }},
37- "md11" : {Name : "md11" , Type : "raid1" , ActivityState : "resyncing" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 1 , DisksDown : 0 , DisksSpare : 2 , BlocksTotal : 4190208 , BlocksSynced : 0 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdb2" , "sdc2" , "sdc3" , "hda" , "ssdc2" }},
38- "md12" : {Name : "md12" , Type : "raid0" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksSpare : 0 , DisksDown : 0 , DisksFailed : 0 , BlocksTotal : 3886394368 , BlocksSynced : 3886394368 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdc2" , "sdd2" }},
39- "md120" : {Name : "md120" , Type : "linear" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 2095104 , BlocksSynced : 2095104 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sda1" , "sdb1" }},
40- "md126" : {Name : "md126" , Type : "raid0" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 1855870976 , BlocksSynced : 1855870976 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdb" , "sdc" }},
41- "md219" : {Name : "md219" , Type : "unknown" , ActivityState : "inactive" , DisksTotal : 0 , DisksFailed : 0 , DisksActive : 0 , DisksDown : 0 , DisksSpare : 3 , BlocksTotal : 7932 , BlocksSynced : 7932 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { " sdc" , "sda" }},
42- "md00" : {Name : "md00" , Type : "raid0" , ActivityState : "active" , DisksActive : 1 , DisksTotal : 1 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 4186624 , BlocksSynced : 4186624 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "xvdb" }},
43- "md101" : {Name : "md101" , Type : "raid0" , ActivityState : "active" , DisksActive : 3 , DisksTotal : 3 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 322560 , BlocksSynced : 322560 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []string { "sdb" , "sdd" , "sdc" }},
44- "md201" : {Name : "md201" , Type : "raid1" , ActivityState : "checking" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 1993728 , BlocksSynced : 114176 , BlocksSyncedPct : 5.7 , BlocksSyncedFinishTime : 0.2 , BlocksSyncedSpeed : 114176 , Devices : []string { "sda3" , "sdb3" }},
33+ "md127" : {Name : "md127" , Type : "raid1" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 312319552 , BlocksSynced : 312319552 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdi2" , DescriptorIndex : 0 }, { Name : "sdj2" , DescriptorIndex : 1 } }},
34+ "md0" : {Name : "md0" , Type : "raid1" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 248896 , BlocksSynced : 248896 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdi1" , DescriptorIndex : 0 }, { Name : "sdj1" , DescriptorIndex : 1 } }},
35+ "md4" : {Name : "md4" , Type : "raid1" , ActivityState : "inactive" , DisksActive : 0 , DisksTotal : 0 , DisksFailed : 1 , DisksDown : 0 , DisksSpare : 1 , BlocksTotal : 4883648 , BlocksSynced : 4883648 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sda3" , Faulty : true , DescriptorIndex : 0 }, { Name : "sdb3" , Spare : true , DescriptorIndex : 1 } }},
36+ "md6" : {Name : "md6" , Type : "raid1" , ActivityState : "recovering" , DisksActive : 1 , DisksTotal : 2 , DisksFailed : 1 , DisksDown : 1 , DisksSpare : 1 , BlocksTotal : 195310144 , BlocksSynced : 16775552 , BlocksSyncedPct : 8.5 , BlocksSyncedFinishTime : 17 , BlocksSyncedSpeed : 259783 , Devices : []MDStatComponent {{ Name : "sdb2" , DescriptorIndex : 2 , Faulty : true }, { Name : "sdc" , DescriptorIndex : 1 , Spare : true }, { Name : "sda2" , DescriptorIndex : 0 } }},
37+ "md3" : {Name : "md3" , Type : "raid6" , ActivityState : "active" , DisksActive : 8 , DisksTotal : 8 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 2 , BlocksTotal : 5853468288 , BlocksSynced : 5853468288 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sda1" , DescriptorIndex : 8 }, { Name : "sdh1" , DescriptorIndex : 7 }, { Name : "sdg1" , DescriptorIndex : 6 }, { Name : "sdf1" , DescriptorIndex : 5 }, { Name : "sde1" , DescriptorIndex : 11 }, { Name : "sdd1" , DescriptorIndex : 3 }, { Name : "sdc1" , DescriptorIndex : 10 }, { Name : "sdb1" , DescriptorIndex : 9 }, { Name : "sdd1" , DescriptorIndex : 10 , Spare : true }, { Name : "sdd2" , DescriptorIndex : 11 , Spare : true } }},
38+ "md8" : {Name : "md8" , Type : "raid1" , ActivityState : "resyncing" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 2 , BlocksTotal : 195310144 , BlocksSynced : 16775552 , BlocksSyncedPct : 8.5 , BlocksSyncedFinishTime : 17 , BlocksSyncedSpeed : 259783 , Devices : []MDStatComponent {{ Name : "sdb1" , DescriptorIndex : 1 }, { Name : "sda1" , DescriptorIndex : 0 }, { Name : "sdc" , DescriptorIndex : 2 , Spare : true }, { Name : "sde" , DescriptorIndex : 3 , Spare : true } }},
39+ "md7" : {Name : "md7" , Type : "raid6" , ActivityState : "active" , DisksActive : 3 , DisksTotal : 4 , DisksFailed : 1 , DisksDown : 1 , DisksSpare : 0 , BlocksTotal : 7813735424 , BlocksSynced : 7813735424 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdb1" , DescriptorIndex : 0 }, { Name : "sde1" , DescriptorIndex : 3 }, { Name : "sdd1" , DescriptorIndex : 2 }, { Name : "sdc1" , DescriptorIndex : 1 , Faulty : true } }},
40+ "md9" : {Name : "md9" , Type : "raid1" , ActivityState : "resyncing" , DisksActive : 4 , DisksTotal : 4 , DisksSpare : 1 , DisksDown : 0 , DisksFailed : 2 , BlocksTotal : 523968 , BlocksSynced : 0 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdc2" , DescriptorIndex : 2 }, { Name : "sdd2" , DescriptorIndex : 3 }, { Name : "sdb2" , DescriptorIndex : 1 }, { Name : "sda2" , DescriptorIndex : 0 }, { Name : "sde" , DescriptorIndex : 4 , Faulty : true }, { Name : "sdf" , DescriptorIndex : 5 , Faulty : true }, { Name : "sdg" , DescriptorIndex : 6 , Spare : true } }},
41+ "md10" : {Name : "md10" , Type : "raid0" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 314159265 , BlocksSynced : 314159265 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sda1" , DescriptorIndex : 0 }, { Name : "sdb1" , DescriptorIndex : 1 } }},
42+ "md11" : {Name : "md11" , Type : "raid1" , ActivityState : "resyncing" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 1 , DisksDown : 0 , DisksSpare : 2 , BlocksTotal : 4190208 , BlocksSynced : 0 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdb2" , DescriptorIndex : 0 }, { Name : "sdc2" , DescriptorIndex : 1 }, { Name : "sdc3" , DescriptorIndex : 2 , Faulty : true }, { Name : "hda" , DescriptorIndex : 4 , Spare : true }, { Name : "ssdc2" , DescriptorIndex : 3 , Spare : true } }},
43+ "md12" : {Name : "md12" , Type : "raid0" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksSpare : 0 , DisksDown : 0 , DisksFailed : 0 , BlocksTotal : 3886394368 , BlocksSynced : 3886394368 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdc2" , DescriptorIndex : 0 }, { Name : "sdd2" , DescriptorIndex : 1 } }},
44+ "md120" : {Name : "md120" , Type : "linear" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 2095104 , BlocksSynced : 2095104 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sda1" , DescriptorIndex : 1 }, { Name : "sdb1" , DescriptorIndex : 0 } }},
45+ "md126" : {Name : "md126" , Type : "raid0" , ActivityState : "active" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 1855870976 , BlocksSynced : 1855870976 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdb" , DescriptorIndex : 1 }, { Name : "sdc" , DescriptorIndex : 0 } }},
46+ "md219" : {Name : "md219" , Type : "unknown" , ActivityState : "inactive" , DisksTotal : 0 , DisksFailed : 0 , DisksActive : 0 , DisksDown : 0 , DisksSpare : 3 , BlocksTotal : 7932 , BlocksSynced : 7932 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdb" , DescriptorIndex : 2 , Spare : true }, { Name : " sdc" , DescriptorIndex : 1 , Spare : true }, { Name : "sda" , DescriptorIndex : 0 , Spare : true } }},
47+ "md00" : {Name : "md00" , Type : "raid0" , ActivityState : "active" , DisksActive : 1 , DisksTotal : 1 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 4186624 , BlocksSynced : 4186624 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "xvdb" , DescriptorIndex : 0 } }},
48+ "md101" : {Name : "md101" , Type : "raid0" , ActivityState : "active" , DisksActive : 3 , DisksTotal : 3 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 322560 , BlocksSynced : 322560 , BlocksSyncedPct : 0 , BlocksSyncedFinishTime : 0 , BlocksSyncedSpeed : 0 , Devices : []MDStatComponent {{ Name : "sdb" , DescriptorIndex : 2 }, { Name : "sdd" , DescriptorIndex : 1 }, { Name : "sdc" , DescriptorIndex : 0 } }},
49+ "md201" : {Name : "md201" , Type : "raid1" , ActivityState : "checking" , DisksActive : 2 , DisksTotal : 2 , DisksFailed : 0 , DisksDown : 0 , DisksSpare : 0 , BlocksTotal : 1993728 , BlocksSynced : 114176 , BlocksSyncedPct : 5.7 , BlocksSyncedFinishTime : 0.2 , BlocksSyncedSpeed : 114176 , Devices : []MDStatComponent {{ Name : "sda3" , DescriptorIndex : 0 }, { Name : "sdb3" , DescriptorIndex : 1 } }},
4550 }
4651
4752 if want , have := len (refs ), len (mdStats ); want != have {
@@ -56,18 +61,32 @@ func TestFS_MDStat(t *testing.T) {
5661}
5762
5863func TestInvalidMdstat (t * testing.T ) {
59- invalidMount := [][]byte {[]byte (`
64+ invalidMount := [][]byte {
65+ // Test invalid Personality and format
66+ []byte (`
6067Personalities : [invalid]
6168md3 : invalid
6269 314159265 blocks 64k chunks
6370
6471unused devices: <none>
6572` ),
73+ // Test extra blank line
6674 []byte (`
6775md12 : active raid0 sdc2[0] sdd2[1]
6876
6977 3886394368 blocks super 1.2 512k chunks
70- ` )}
78+ ` ),
79+ // test for impossible component state
80+ []byte (`
81+ md127 : active raid1 sdi2[0] sdj2[1](Z)
82+ 312319552 blocks [2/2] [UU]
83+ ` ),
84+ // test for malformed component state
85+ []byte (`
86+ md127 : active raid1 sdi2[0] sdj2[X]
87+ 312319552 blocks [2/2] [UU]
88+ ` ),
89+ }
7190
7291 for _ , invalid := range invalidMount {
7392 _ , err := parseMDStat (invalid )
0 commit comments