@@ -1518,6 +1518,84 @@ func TestVolumeEnableSerDes(t *testing.T) {
1518
1518
assert .Equal (t , "Volume" , volDes .Class )
1519
1519
}
1520
1520
1521
+ func TestLocalDiskLedSlotsHandleGet (t * testing.T ) {
1522
+
1523
+ var handle , err = disks .LedSlotsHandleGet ()
1524
+ assert .Nil (t , err )
1525
+ disks .LedSlotsHandleFree (handle )
1526
+ }
1527
+
1528
+ func TestLocalDiskLedSlotsGet (t * testing.T ) {
1529
+
1530
+ var slots []disks.LedSlot
1531
+ var handle , err = disks .LedSlotsHandleGet ()
1532
+ assert .Nil (t , err )
1533
+
1534
+ slots , err = handle .Slots ()
1535
+ assert .Nil (t , err )
1536
+
1537
+ for _ , s := range slots {
1538
+ assert .True (t , (len (s .SlotId ) > 0 ))
1539
+ }
1540
+
1541
+ assert .Nil (t , err )
1542
+ disks .LedSlotsHandleFree (handle )
1543
+ }
1544
+
1545
+ func toggle_status (curr lsm.DiskLedStatusBitField ) lsm.DiskLedStatusBitField {
1546
+ var rc lsm.DiskLedStatusBitField
1547
+ if curr & lsm .DiskLedStatusIdentOn == lsm .DiskLedStatusIdentOn {
1548
+ rc |= lsm .DiskLedStatusIdentOff
1549
+ } else {
1550
+ rc |= lsm .DiskLedStatusIdentOn
1551
+ }
1552
+ if curr & lsm .DiskLedStatusFaultOn == lsm .DiskLedStatusFaultOn {
1553
+ rc |= lsm .DiskLedStatusFaultOff
1554
+ } else {
1555
+ rc |= lsm .DiskLedStatusFaultOn
1556
+ }
1557
+
1558
+ return rc
1559
+ }
1560
+
1561
+ func TestLocalDiskLedSlotsGetSet (t * testing.T ) {
1562
+
1563
+ var slots []disks.LedSlot
1564
+ var handle , err = disks .LedSlotsHandleGet ()
1565
+ assert .Nil (t , err )
1566
+
1567
+ slots , err = handle .Slots ()
1568
+ assert .Nil (t , err )
1569
+
1570
+ for _ , s := range slots {
1571
+
1572
+ if len (s .Device ) > 0 {
1573
+ // We have a device node
1574
+ path_status , err := disks .LedStatusGet (s .Device )
1575
+ assert .Nil (t , err )
1576
+
1577
+ slot_status , err := handle .StatusGet (& s )
1578
+ assert .Nil (t , err )
1579
+
1580
+ assert .Equal (t , path_status , slot_status )
1581
+
1582
+ var expected_status = toggle_status (slot_status )
1583
+ err = handle .StatusSet (& s , expected_status )
1584
+ assert .Nil (t , err )
1585
+ new_status , err := disks .LedStatusGet (s .Device )
1586
+ assert .Nil (t , err )
1587
+ assert .Equal (t , new_status , expected_status )
1588
+
1589
+ // Put led state to original
1590
+ err = handle .StatusSet (& s , path_status )
1591
+ assert .Nil (t , err )
1592
+ }
1593
+ }
1594
+
1595
+ assert .Nil (t , err )
1596
+ disks .LedSlotsHandleFree (handle )
1597
+ }
1598
+
1521
1599
func TestClassSerDes (t * testing.T ) {
1522
1600
objs := map [string ]interface {}{
1523
1601
"System" : & lsm.System {},
0 commit comments