138 lines
4.1 KiB
Go
138 lines
4.1 KiB
Go
package nvidia_smi
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/influxdata/telegraf"
|
|
"github.com/influxdata/telegraf/testutil"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGatherValidXML(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
filename string
|
|
expected []telegraf.Metric
|
|
}{
|
|
{
|
|
name: "GeForce GTX 1070 Ti",
|
|
filename: "gtx-1070-ti.xml",
|
|
expected: []telegraf.Metric{
|
|
testutil.MustMetric(
|
|
"nvidia_smi",
|
|
map[string]string{
|
|
"name": "GeForce GTX 1070 Ti",
|
|
"compute_mode": "Default",
|
|
"index": "0",
|
|
"pstate": "P8",
|
|
"uuid": "GPU-f9ba66fc-a7f5-94c5-da19-019ef2f9c665",
|
|
},
|
|
map[string]interface{}{
|
|
"clocks_current_graphics": 135,
|
|
"clocks_current_memory": 405,
|
|
"clocks_current_sm": 135,
|
|
"clocks_current_video": 405,
|
|
"encoder_stats_average_fps": 0,
|
|
"encoder_stats_average_latency": 0,
|
|
"encoder_stats_session_count": 0,
|
|
"fan_speed": 100,
|
|
"memory_free": 4054,
|
|
"memory_total": 4096,
|
|
"memory_used": 42,
|
|
"pcie_link_gen_current": 1,
|
|
"pcie_link_width_current": 16,
|
|
"temperature_gpu": 39,
|
|
"utilization_gpu": 0,
|
|
"utilization_memory": 0,
|
|
},
|
|
time.Unix(0, 0)),
|
|
},
|
|
},
|
|
{
|
|
name: "GeForce GTX 1660 Ti",
|
|
filename: "gtx-1660-ti.xml",
|
|
expected: []telegraf.Metric{
|
|
testutil.MustMetric(
|
|
"nvidia_smi",
|
|
map[string]string{
|
|
"compute_mode": "Default",
|
|
"index": "0",
|
|
"name": "Graphics Device",
|
|
"pstate": "P8",
|
|
"uuid": "GPU-304a277d-3545-63b8-3a36-dfde3c992989",
|
|
},
|
|
map[string]interface{}{
|
|
"clocks_current_graphics": 300,
|
|
"clocks_current_memory": 405,
|
|
"clocks_current_sm": 300,
|
|
"clocks_current_video": 540,
|
|
"encoder_stats_average_fps": 0,
|
|
"encoder_stats_average_latency": 0,
|
|
"encoder_stats_session_count": 0,
|
|
"fan_speed": 0,
|
|
"memory_free": 5912,
|
|
"memory_total": 5912,
|
|
"memory_used": 0,
|
|
"pcie_link_gen_current": 1,
|
|
"pcie_link_width_current": 16,
|
|
"power_draw": 8.93,
|
|
"temperature_gpu": 40,
|
|
"utilization_gpu": 0,
|
|
"utilization_memory": 1,
|
|
},
|
|
time.Unix(0, 0)),
|
|
},
|
|
},
|
|
{
|
|
name: "Quadro P400",
|
|
filename: "quadro-p400.xml",
|
|
expected: []telegraf.Metric{
|
|
testutil.MustMetric(
|
|
"nvidia_smi",
|
|
map[string]string{
|
|
"compute_mode": "Default",
|
|
"index": "0",
|
|
"name": "Quadro P400",
|
|
"pstate": "P8",
|
|
"uuid": "GPU-8f750be4-dfbc-23b9-b33f-da729a536494",
|
|
},
|
|
map[string]interface{}{
|
|
"clocks_current_graphics": 139,
|
|
"clocks_current_memory": 405,
|
|
"clocks_current_sm": 139,
|
|
"clocks_current_video": 544,
|
|
"encoder_stats_average_fps": 0,
|
|
"encoder_stats_average_latency": 0,
|
|
"encoder_stats_session_count": 0,
|
|
"fan_speed": 34,
|
|
"memory_free": 1998,
|
|
"memory_total": 1998,
|
|
"memory_used": 0,
|
|
"pcie_link_gen_current": 1,
|
|
"pcie_link_width_current": 16,
|
|
"temperature_gpu": 33,
|
|
"utilization_gpu": 0,
|
|
"utilization_memory": 3,
|
|
},
|
|
time.Unix(0, 0)),
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
|
|
octets, err := ioutil.ReadFile(filepath.Join("testdata", tt.filename))
|
|
require.NoError(t, err)
|
|
|
|
err = gatherNvidiaSMI(octets, &acc)
|
|
require.NoError(t, err)
|
|
|
|
testutil.RequireMetricsEqual(t, tt.expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
|
|
})
|
|
}
|
|
}
|