61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package interrupts
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseInterrupts(t *testing.T) {
|
|
interruptStr := ` CPU0 CPU1
|
|
0: 134 0 IO-APIC-edge timer
|
|
1: 7 3 IO-APIC-edge i8042
|
|
NMI: 0 0 Non-maskable interrupts
|
|
LOC: 2338608687 2334309625 Local timer interrupts
|
|
MIS: 0
|
|
NET_RX: 867028 225
|
|
TASKLET: 205 0`
|
|
f := bytes.NewBufferString(interruptStr)
|
|
parsed := []IRQ{
|
|
IRQ{
|
|
ID: "0", Type: "IO-APIC-edge", Device: "timer",
|
|
Cpus: []int64{int64(134), int64(0)}, Total: int64(134),
|
|
},
|
|
IRQ{
|
|
ID: "1", Type: "IO-APIC-edge", Device: "i8042",
|
|
Cpus: []int64{int64(7), int64(3)}, Total: int64(10),
|
|
},
|
|
IRQ{
|
|
ID: "NMI", Type: "Non-maskable interrupts",
|
|
Cpus: []int64{int64(0), int64(0)}, Total: int64(0),
|
|
},
|
|
IRQ{
|
|
ID: "LOC", Type: "Local timer interrupts",
|
|
Cpus: []int64{int64(2338608687), int64(2334309625)},
|
|
Total: int64(4672918312),
|
|
},
|
|
IRQ{
|
|
ID: "MIS", Cpus: []int64{int64(0)}, Total: int64(0),
|
|
},
|
|
IRQ{
|
|
ID: "NET_RX", Cpus: []int64{int64(867028), int64(225)},
|
|
Total: int64(867253),
|
|
},
|
|
IRQ{
|
|
ID: "TASKLET", Cpus: []int64{int64(205), int64(0)},
|
|
Total: int64(205),
|
|
},
|
|
}
|
|
got, err := parseInterrupts(f)
|
|
require.Equal(t, nil, err)
|
|
require.NotEqual(t, 0, len(got))
|
|
require.Equal(t, len(got), len(parsed))
|
|
for i := 0; i < len(parsed); i++ {
|
|
assert.Equal(t, parsed[i], got[i])
|
|
for k := 0; k < len(parsed[i].Cpus); k++ {
|
|
assert.Equal(t, parsed[i].Cpus[k], got[i].Cpus[k])
|
|
}
|
|
}
|
|
}
|