1
0
Fork 0
telegraf/plugins/inputs/win_services/win_services_integration_test.go

79 lines
1.9 KiB
Go
Raw Permalink Normal View History

//go:build windows
// these tests must be run under administrator account
package win_services
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/testutil"
)
var invalidServices = []string{"XYZ1@", "ZYZ@", "SDF_@#"}
var knownServices = []string{"LanmanServer", "TermService"}
func TestListIntegration(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration test in short mode")
}
provider := &mgProvider{}
scmgr, err := provider.connect()
require.NoError(t, err)
defer func() {
err := scmgr.disconnect()
require.NoError(t, err)
}()
winServices := &WinServices{
ServiceNames: knownServices,
}
require.NoError(t, winServices.Init())
services, err := winServices.listServices(scmgr)
require.NoError(t, err)
require.Len(t, services, 2, "Different number of services")
require.Equal(t, services[0], knownServices[0])
require.Equal(t, services[1], knownServices[1])
}
func TestEmptyListIntegration(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration test in short mode")
}
provider := &mgProvider{}
scmgr, err := provider.connect()
require.NoError(t, err)
defer func() {
err := scmgr.disconnect()
require.NoError(t, err)
}()
winServices := &WinServices{
ServiceNames: make([]string, 0),
}
require.NoError(t, winServices.Init())
services, err := winServices.listServices(scmgr)
require.NoError(t, err)
require.Condition(t, func() bool { return len(services) > 20 }, "Too few service")
}
func TestGatherErrorsIntegration(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration test in short mode")
}
ws := &WinServices{
Log: testutil.Logger{},
ServiceNames: invalidServices,
mgrProvider: &mgProvider{},
}
require.NoError(t, ws.Init())
require.Len(t, ws.ServiceNames, 3, "Different number of services")
var acc testutil.Accumulator
require.NoError(t, ws.Gather(&acc))
require.Len(t, acc.Errors, 3, "There should be 3 errors after gather")
}