package collector import "testing" func TestParseSFPDOM(t *testing.T) { raw := ` Module temperature : 41.23 C Module voltage : 3.30 V Laser bias current : 6.12 mA Laser output power : 0.4712 mW / -3.27 dBm Receiver signal average optical power : 0.4123 mW / -3.85 dBm ` got := parseSFPDOM(raw) if v, ok := got["sfp_temperature_c"].(float64); !ok || v != 41.23 { t.Fatalf("sfp_temperature_c mismatch: %#v", got["sfp_temperature_c"]) } if v, ok := got["sfp_voltage_v"].(float64); !ok || v != 3.30 { t.Fatalf("sfp_voltage_v mismatch: %#v", got["sfp_voltage_v"]) } if v, ok := got["sfp_bias_ma"].(float64); !ok || v != 6.12 { t.Fatalf("sfp_bias_ma mismatch: %#v", got["sfp_bias_ma"]) } if v, ok := got["sfp_tx_power_dbm"].(float64); !ok || v != -3.27 { t.Fatalf("sfp_tx_power_dbm mismatch: %#v", got["sfp_tx_power_dbm"]) } if v, ok := got["sfp_rx_power_dbm"].(float64); !ok || v != -3.85 { t.Fatalf("sfp_rx_power_dbm mismatch: %#v", got["sfp_rx_power_dbm"]) } } func TestDBMValue(t *testing.T) { tests := []struct { in string want float64 ok bool }{ {"0.4123 mW / -3.85 dBm", -3.85, true}, {"-1.23 dBm", -1.23, true}, {"not supported", 0, false}, } for _, tt := range tests { got, ok := dbmValue(tt.in) if ok != tt.ok { t.Fatalf("dbmValue(%q) ok=%v want %v", tt.in, ok, tt.ok) } if ok && got != tt.want { t.Fatalf("dbmValue(%q)=%v want %v", tt.in, got, tt.want) } } }