daemon_windows_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //go:build windows
  2. package daemon // import "github.com/docker/docker/daemon"
  3. import (
  4. "strings"
  5. "testing"
  6. "golang.org/x/sys/windows/svc/mgr"
  7. )
  8. const existingService = "Power"
  9. func TestEnsureServicesExist(t *testing.T) {
  10. m, err := mgr.Connect()
  11. if err != nil {
  12. t.Fatal("failed to connect to service manager, this test needs admin")
  13. }
  14. defer m.Disconnect()
  15. s, err := m.OpenService(existingService)
  16. if err != nil {
  17. t.Fatalf("expected to find known inbox service %q, this test needs a known inbox service to run correctly", existingService)
  18. }
  19. defer s.Close()
  20. input := []string{existingService}
  21. err = ensureServicesInstalled(input)
  22. if err != nil {
  23. t.Fatalf("unexpected error for input %q: %q", input, err)
  24. }
  25. }
  26. func TestEnsureServicesExistErrors(t *testing.T) {
  27. m, err := mgr.Connect()
  28. if err != nil {
  29. t.Fatal("failed to connect to service manager, this test needs admin")
  30. }
  31. defer m.Disconnect()
  32. s, err := m.OpenService(existingService)
  33. if err != nil {
  34. t.Fatalf("expected to find known inbox service %q, this test needs a known inbox service to run correctly", existingService)
  35. }
  36. defer s.Close()
  37. for _, testcase := range []struct {
  38. input []string
  39. expectedError string
  40. }{
  41. {
  42. input: []string{"daemon_windows_test_fakeservice"},
  43. expectedError: "failed to open service daemon_windows_test_fakeservice",
  44. },
  45. {
  46. input: []string{"daemon_windows_test_fakeservice1", "daemon_windows_test_fakeservice2"},
  47. expectedError: "failed to open service daemon_windows_test_fakeservice1",
  48. },
  49. {
  50. input: []string{existingService, "daemon_windows_test_fakeservice"},
  51. expectedError: "failed to open service daemon_windows_test_fakeservice",
  52. },
  53. } {
  54. t.Run(strings.Join(testcase.input, ";"), func(t *testing.T) {
  55. err := ensureServicesInstalled(testcase.input)
  56. if err == nil {
  57. t.Fatalf("expected error for input %v", testcase.input)
  58. }
  59. if !strings.Contains(err.Error(), testcase.expectedError) {
  60. t.Fatalf("expected error %q to contain %q", err.Error(), testcase.expectedError)
  61. }
  62. })
  63. }
  64. }