90 lines
2.8 KiB
Go
90 lines
2.8 KiB
Go
package collector
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"bee/audit/internal/schema"
|
|
)
|
|
|
|
func TestApplySCSISmartctlTelemetry(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
raw := map[string]any{
|
|
"power_on_time": map[string]any{
|
|
"hours": float64(32123),
|
|
},
|
|
"accumulated_start_stop_cycles": float64(17),
|
|
"scsi_grown_defect_list": float64(4),
|
|
"percentage_used_endurance_indicator": float64(12),
|
|
"logical_block_size": float64(4096),
|
|
"logical_blocks_written": float64(1000),
|
|
"logical_blocks_read": float64(2000),
|
|
}
|
|
|
|
var disk schema.HardwareStorage
|
|
status := storageHealthStatus{}
|
|
applySCSISmartctlTelemetry(&disk, raw, &status)
|
|
|
|
if disk.PowerOnHours == nil || *disk.PowerOnHours != 32123 {
|
|
t.Fatalf("power_on_hours=%v want 32123", disk.PowerOnHours)
|
|
}
|
|
if disk.PowerCycles == nil || *disk.PowerCycles != 17 {
|
|
t.Fatalf("power_cycles=%v want 17", disk.PowerCycles)
|
|
}
|
|
if disk.ReallocatedSectors == nil || *disk.ReallocatedSectors != 4 {
|
|
t.Fatalf("reallocated=%v want 4", disk.ReallocatedSectors)
|
|
}
|
|
if disk.WrittenBytes == nil || *disk.WrittenBytes != 4096000 {
|
|
t.Fatalf("written_bytes=%v want 4096000", disk.WrittenBytes)
|
|
}
|
|
if disk.ReadBytes == nil || *disk.ReadBytes != 8192000 {
|
|
t.Fatalf("read_bytes=%v want 8192000", disk.ReadBytes)
|
|
}
|
|
if disk.LifeUsedPct == nil || *disk.LifeUsedPct != 12 {
|
|
t.Fatalf("life_used_pct=%v want 12", disk.LifeUsedPct)
|
|
}
|
|
if disk.LifeRemainingPct == nil || *disk.LifeRemainingPct != 88 {
|
|
t.Fatalf("life_remaining_pct=%v want 88", disk.LifeRemainingPct)
|
|
}
|
|
if status.reallocatedSectors != 4 {
|
|
t.Fatalf("status.reallocated=%d want 4", status.reallocatedSectors)
|
|
}
|
|
if status.lifeRemainingPct != 88 {
|
|
t.Fatalf("status.life_remaining_pct=%d want 88", status.lifeRemainingPct)
|
|
}
|
|
}
|
|
|
|
func TestApplySCSISmartctlTelemetryDoesNotOverwriteExistingValues(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
powerOnHours := int64(10)
|
|
writtenBytes := int64(20)
|
|
lifeRemaining := 30.0
|
|
disk := schema.HardwareStorage{
|
|
PowerOnHours: &powerOnHours,
|
|
WrittenBytes: &writtenBytes,
|
|
LifeRemainingPct: &lifeRemaining,
|
|
}
|
|
raw := map[string]any{
|
|
"power_on_time": map[string]any{"hours": float64(999)},
|
|
"logical_block_size": float64(512),
|
|
"logical_blocks_written": float64(999),
|
|
"percentage_used_endurance_indicator": float64(50),
|
|
}
|
|
|
|
applySCSISmartctlTelemetry(&disk, raw, nil)
|
|
|
|
if *disk.PowerOnHours != 10 {
|
|
t.Fatalf("power_on_hours overwritten: got %d want 10", *disk.PowerOnHours)
|
|
}
|
|
if *disk.WrittenBytes != 20 {
|
|
t.Fatalf("written_bytes overwritten: got %d want 20", *disk.WrittenBytes)
|
|
}
|
|
if *disk.LifeRemainingPct != 30 {
|
|
t.Fatalf("life_remaining_pct overwritten: got %v want 30", *disk.LifeRemainingPct)
|
|
}
|
|
if disk.LifeUsedPct == nil || *disk.LifeUsedPct != 50 {
|
|
t.Fatalf("life_used_pct=%v want 50", disk.LifeUsedPct)
|
|
}
|
|
}
|