1
// Copyright 2012 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
17
"github.com/gabriel-samfira/sys/windows/svc/mgr"
20
func TestOpenLanManServer(t *testing.T) {
21
m, err := mgr.Connect()
23
t.Fatalf("SCM connection failed: %s", err)
27
s, err := m.OpenService("LanmanServer")
29
t.Fatalf("OpenService(lanmanserver) failed: %s", err)
35
t.Fatalf("Config failed: %s", err)
39
func install(t *testing.T, m *mgr.Mgr, name, exepath string, c mgr.Config) {
40
// Sometimes it takes a while for the service to get
41
// removed after previous test run.
43
s, err := m.OpenService(name)
50
t.Fatalf("service %s already exists", name)
52
time.Sleep(300 * time.Millisecond)
55
s, err := m.CreateService(name, exepath, c)
57
t.Fatalf("CreateService(%s) failed: %v", name, err)
62
func depString(d []string) string {
67
d[i] = strings.ToLower(d[i])
69
ss := sort.StringSlice(d)
71
return strings.Join([]string(ss), " ")
74
func testConfig(t *testing.T, s *mgr.Service, should mgr.Config) mgr.Config {
77
t.Fatalf("Config failed: %s", err)
79
if should.DisplayName != is.DisplayName {
80
t.Fatalf("config mismatch: DisplayName is %q, but should have %q", is.DisplayName, should.DisplayName)
82
if should.StartType != is.StartType {
83
t.Fatalf("config mismatch: StartType is %v, but should have %v", is.StartType, should.StartType)
85
if should.Description != is.Description {
86
t.Fatalf("config mismatch: Description is %q, but should have %q", is.Description, should.Description)
88
if depString(should.Dependencies) != depString(is.Dependencies) {
89
t.Fatalf("config mismatch: Dependencies is %v, but should have %v", is.Dependencies, should.Dependencies)
94
func remove(t *testing.T, s *mgr.Service) {
97
t.Fatalf("Delete failed: %s", err)
101
func TestMyService(t *testing.T) {
103
t.Skip("skipping test in short mode - it modifies system services")
106
const name = "myservice"
108
m, err := mgr.Connect()
110
t.Fatalf("SCM connection failed: %s", err)
115
StartType: mgr.StartDisabled,
116
DisplayName: "my service",
117
Description: "my service is just a test",
118
Dependencies: []string{"LanmanServer", "W32Time"},
121
exename := os.Args[0]
122
exepath, err := filepath.Abs(exename)
124
t.Fatalf("filepath.Abs(%s) failed: %s", exename, err)
127
install(t, m, name, exepath, c)
129
s, err := m.OpenService(name)
131
t.Fatalf("service %s is not installed", name)
135
c.BinaryPathName = exepath
136
c = testConfig(t, s, c)
138
c.StartType = mgr.StartManual
139
err = s.UpdateConfig(c)
141
t.Fatalf("UpdateConfig failed: %v", err)