2 // ServiceControllerTest.cs -
3 // NUnit Test Cases for ServiceController
6 // Gert Driesen (drieseng@users.sourceforge.net)
8 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using System.Collections.Generic;
35 using System.ComponentModel;
36 using System.ServiceProcess;
37 using TimeoutException = System.ServiceProcess.TimeoutException;
39 using NUnit.Framework;
41 namespace MonoTests.System.ServiceProcess
44 public class ServiceControllerTest
48 public string ServiceName;
49 public string DisplayName;
50 public ServiceType ServiceType = ServiceType.Win32ShareProcess;
51 public string[] Dependents = new string[] {};
52 public string[] DependedOn = new string[] {};
55 static ServiceInfo DISK_DRIVER_SERVICE = new ServiceInfo { ServiceName = "disk", DisplayName = "Disk Driver", ServiceType = ServiceType.KernelDriver };
56 static ServiceInfo ROUTING_AND_REMOTE_ACCESS_SERVICE = new ServiceInfo { ServiceName = "RemoteAccess", DisplayName = "Routing and Remote Access", DependedOn = new [] { "bfe", "http", "rasman", "rpcss" } };
57 static ServiceInfo SECONDARY_LOGON_SERVICE = new ServiceInfo { ServiceName = "seclogon", DisplayName = "Secondary Logon", Dependents = new [] { "te.service" } };
58 static ServiceInfo SECURITY_ACCOUNTS_MANAGER_SERVICE = new ServiceInfo { ServiceName = "SamSs", DisplayName = "Security Accounts Manager", Dependents = new [] { "browser", "ktmrm", "lanmanserver", "msdtc" }, DependedOn = new [] { "rpcss" } };
59 static ServiceInfo WINDOWS_IMAGE_ACQUISITION_SERVICE = new ServiceInfo { ServiceName = "stisvc", DisplayName = "Windows Image Acquisition (WIA)", ServiceType = ServiceType.Win32OwnProcess, DependedOn = new [] { "rpcss" } };
60 static ServiceInfo WINDOWS_SEARCH_SERVICE = new ServiceInfo { ServiceName = "WSearch", DisplayName = "Windows Search", ServiceType = ServiceType.Win32OwnProcess, Dependents = new [] { "wmpnetworksvc", "workfolderssvc" }, DependedOn = new [] { "rpcss" } };
61 static ServiceInfo WINDOWS_TIME_SERVICE = new ServiceInfo { ServiceName = "W32Time", DisplayName = "Windows Time" };
62 static ServiceInfo WINDOWS_UPDATE_SERVICE = new ServiceInfo { ServiceName = "wuauserv", DisplayName = "Windows Update", DependedOn = new [] { "rpcss" } };
63 static ServiceInfo WORKSTATION_SERVICE = new ServiceInfo { ServiceName = "LanmanWorkstation", DisplayName = "Workstation", Dependents = new [] { "browser", "netlogon", "sessionenv" }, DependedOn = new [] { "bowser", "mrxsmb20", "nsi" } };
65 // A service which is expected to be disabled by default on all supported Windows versions.
66 static ServiceInfo DISABLED_SERVICE = ROUTING_AND_REMOTE_ACCESS_SERVICE;
67 // A service which is running by default and can be stopped/paused by the current user when running with admin rights.
68 static ServiceInfo CONTROLLABLE_SERVICE = WINDOWS_IMAGE_ACQUISITION_SERVICE;
69 // A service which cannot be stopped/paused.
70 static ServiceInfo UNCONTROLLABLE_SERVICE = SECURITY_ACCOUNTS_MANAGER_SERVICE;
71 // A service with ServiceType == KernelDriver
72 static ServiceInfo KERNEL_SERVICE = DISK_DRIVER_SERVICE;
73 // A service with ServiceType == Win32ShareProcess.
74 static ServiceInfo SHARE_PROCESS_SERVICE = WORKSTATION_SERVICE;
76 static ServiceInfo SERVICE_1_WITH_DEPENDENTS_AND_DEPENDED_ON = SECURITY_ACCOUNTS_MANAGER_SERVICE;
77 static ServiceInfo SERVICE_2_WITH_DEPENDENTS_AND_DEPENDED_ON = WINDOWS_SEARCH_SERVICE;
78 static ServiceInfo SERVICE_3_WITH_DEPENDENTS_AND_DEPENDED_ON = WORKSTATION_SERVICE;
80 static ServiceInfo SERVICE_WITH_MANY_DEPENDENTS = WORKSTATION_SERVICE;
81 static ServiceInfo SERVICE_WITH_ONE_DEPENDENT = SECONDARY_LOGON_SERVICE;
82 static ServiceInfo SERVICE_WITH_NO_DEPENDENTS = WINDOWS_TIME_SERVICE;
84 static ServiceInfo SERVICE_WITH_MANY_DEPENDED_ON = WORKSTATION_SERVICE;
85 static ServiceInfo SERVICE_WITH_ONE_DEPENDED_ON = WINDOWS_UPDATE_SERVICE;
86 static ServiceInfo SERVICE_WITH_NO_DEPENDED_ON = WINDOWS_TIME_SERVICE;
89 public void FixtureSetUp ()
92 EnsureServiceIsRunning (new ServiceController (CONTROLLABLE_SERVICE.ServiceName));
94 Assert.Ignore ($"Failed to start the service '{CONTROLLABLE_SERVICE.DisplayName}'. Ensure you are running the tests with admin privileges.");
99 public void Constructor1 ()
102 Assert.Ignore ("Running on Unix.");
104 ServiceController sc = new ServiceController ();
107 bool value = sc.CanPauseAndContinue;
108 Assert.Fail ("#A1: " + value.ToString ());
109 } catch (ArgumentException ex) {
110 // Service name contains invalid characters, is empty or is
111 // too long (max length = 80)
112 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
113 Assert.IsNotNull (ex.Message, "#A3");
114 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#A4");
115 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#A5");
116 Assert.IsNull (ex.ParamName, "#A6");
117 Assert.IsNull (ex.InnerException, "#A7");
121 bool value = sc.CanShutdown;
122 Assert.Fail ("#B1: " + value.ToString ());
123 } catch (ArgumentException ex) {
124 // Service name contains invalid characters, is empty or is
125 // too long (max length = 80)
126 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
127 Assert.IsNotNull (ex.Message, "#B3");
128 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#B4");
129 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#B5");
130 Assert.IsNull (ex.ParamName, "#B6");
131 Assert.IsNull (ex.InnerException, "#B7");
135 bool value = sc.CanStop;
136 Assert.Fail ("#C1: " + value.ToString ());
137 } catch (ArgumentException ex) {
138 // Service name contains invalid characters, is empty or is
139 // too long (max length = 80)
140 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
141 Assert.IsNotNull (ex.Message, "#C3");
142 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#C4");
143 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#C5");
144 Assert.IsNull (ex.ParamName, "#C6");
145 Assert.IsNull (ex.InnerException, "#C7");
148 // closing the ServiceController does not result in exception
154 } catch (ArgumentException ex) {
155 // Service name contains invalid characters, is empty or is
156 // too long (max length = 80)
157 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
158 Assert.IsNotNull (ex.Message, "#D3");
159 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#D4");
160 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#D5");
161 Assert.IsNull (ex.ParamName, "#D6");
162 Assert.IsNull (ex.InnerException, "#D7");
166 Assert.Fail ("#E1: " + sc.DependentServices.Length);
167 } catch (ArgumentException ex) {
168 // Service name contains invalid characters, is empty or is
169 // too long (max length = 80)
170 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
171 Assert.IsNotNull (ex.Message, "#E3");
172 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#E4");
173 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#E5");
174 Assert.IsNull (ex.ParamName, "#E6");
175 Assert.IsNull (ex.InnerException, "#E7");
178 Assert.IsNotNull (sc.DisplayName, "#F1");
179 Assert.AreEqual (string.Empty, sc.DisplayName, "#F2");
182 sc.ExecuteCommand (0);
184 } catch (ArgumentException ex) {
185 // Service name contains invalid characters, is empty or is
186 // too long (max length = 80)
187 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#G2");
188 Assert.IsNotNull (ex.Message, "#G3");
189 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#G4");
190 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#G5");
191 Assert.IsNull (ex.ParamName, "#G6");
192 Assert.IsNull (ex.InnerException, "#G7");
195 Assert.IsNotNull (sc.MachineName, "#H1");
196 Assert.AreEqual (".", sc.MachineName, "#H2");
202 } catch (ArgumentException ex) {
203 // Service name contains invalid characters, is empty or is
204 // too long (max length = 80)
205 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#I2");
206 Assert.IsNotNull (ex.Message, "#I3");
207 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#I4");
208 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#I5");
209 Assert.IsNull (ex.ParamName, "#I6");
210 Assert.IsNull (ex.InnerException, "#I7");
215 public void Constructor2 ()
218 Assert.Ignore ("Running on Unix.");
220 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName);
222 Assert.IsTrue (sc.CanPauseAndContinue, "#A1");
223 Assert.IsTrue (sc.CanShutdown, "#B1");
224 Assert.IsTrue (sc.CanStop, "#C1");
229 ServiceController [] dependentServices = sc.DependentServices;
230 Assert.IsNotNull (dependentServices, "#D1");
231 Assert.AreEqual (CONTROLLABLE_SERVICE.Dependents, ServiceNames (dependentServices), "#D2");
233 Assert.IsNotNull (sc.DisplayName, "#E1");
234 Assert.AreEqual (CONTROLLABLE_SERVICE.DisplayName, sc.DisplayName, "#E2");
236 Assert.IsNotNull (sc.MachineName, "#F1");
237 Assert.AreEqual (".", sc.MachineName, "#F2");
241 Assert.IsNotNull (sc.ServiceName, "#G1");
242 Assert.AreEqual (CONTROLLABLE_SERVICE.ServiceName, sc.ServiceName, "#G2");
244 ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
245 Assert.IsNotNull (servicesDependedOn, "#H1");
246 Assert.AreEqual (CONTROLLABLE_SERVICE.DependedOn, ServiceNames (servicesDependedOn), "#H2");
248 Assert.AreEqual (CONTROLLABLE_SERVICE.ServiceType, sc.ServiceType, "#I1");
249 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#J1");
253 public void Constructor2_Name_Empty ()
256 new ServiceController (string.Empty);
258 } catch (ArgumentException ex) {
259 // Invalid value for parameter name
260 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
261 Assert.IsNotNull (ex.Message, "#3");
262 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
263 Assert.IsTrue (ex.Message.IndexOf ("name") != -1, "#5");
264 Assert.IsNull (ex.ParamName, "#6");
265 Assert.IsNull (ex.InnerException, "#7");
270 public void Constructor2_Name_DisplayName ()
273 Assert.Ignore ("Running on Unix.");
275 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.DisplayName);
277 Assert.IsTrue (sc.CanPauseAndContinue, "#A1");
278 Assert.IsTrue (sc.CanShutdown, "#B1");
279 Assert.IsTrue (sc.CanStop, "#C1");
283 public void Constructor2_Name_Null ()
286 new ServiceController (null);
288 } catch (ArgumentException ex) {
289 // Invalid value for parameter name
290 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
291 Assert.IsNotNull (ex.Message, "#3");
292 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
293 Assert.IsTrue (ex.Message.IndexOf ("name") != -1, "#5");
294 Assert.IsNull (ex.ParamName, "#6");
295 Assert.IsNull (ex.InnerException, "#7");
300 public void Constructor2_Name_ServiceName ()
303 Assert.Ignore ("Running on Unix.");
305 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName);
307 Assert.IsTrue (sc.CanPauseAndContinue, "#A1");
308 Assert.IsTrue (sc.CanShutdown, "#B1");
309 Assert.IsTrue (sc.CanStop, "#C1");
313 public void Constructor3 ()
316 Assert.Ignore ("Running on Unix.");
318 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
319 Environment.MachineName);
321 Assert.IsTrue (sc.CanPauseAndContinue, "#A1");
322 Assert.IsTrue (sc.CanShutdown, "#B1");
323 Assert.IsTrue (sc.CanStop, "#C1");
328 ServiceController [] dependentServices = sc.DependentServices;
329 Assert.IsNotNull (dependentServices, "#D1");
330 Assert.AreEqual (CONTROLLABLE_SERVICE.Dependents, ServiceNames (dependentServices), "#D2");
332 Assert.IsNotNull (sc.DisplayName, "#E1");
333 Assert.AreEqual (CONTROLLABLE_SERVICE.DisplayName, sc.DisplayName, "#E2");
335 Assert.IsNotNull (sc.MachineName, "#F1");
336 Assert.AreEqual (Environment.MachineName, sc.MachineName, "#F2");
340 Assert.IsNotNull (sc.ServiceName, "#G1");
341 Assert.AreEqual (CONTROLLABLE_SERVICE.ServiceName, sc.ServiceName, "#G2");
343 ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
344 Assert.IsNotNull (servicesDependedOn, "#H1");
345 Assert.AreEqual (CONTROLLABLE_SERVICE.DependedOn, ServiceNames (servicesDependedOn), "#H2");
347 Assert.AreEqual (CONTROLLABLE_SERVICE.ServiceType, sc.ServiceType, "#I1");
348 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#J1");
352 public void Constructor3_MachineName_Empty ()
355 new ServiceController (CONTROLLABLE_SERVICE.ServiceName, string.Empty);
357 } catch (ArgumentException ex) {
358 // MachineName value is invalid
359 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
360 Assert.IsNotNull (ex.Message, "#3");
361 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
362 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
363 Assert.IsNull (ex.ParamName, "#6");
364 Assert.IsNull (ex.InnerException, "#7");
369 public void Constructor3_MachineName_Null ()
372 new ServiceController (CONTROLLABLE_SERVICE.ServiceName, null);
374 } catch (ArgumentException ex) {
375 // MachineName value is invalid
376 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
377 Assert.IsNotNull (ex.Message, "#3");
378 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
379 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
380 Assert.IsNull (ex.ParamName, "#6");
381 Assert.IsNull (ex.InnerException, "#7");
386 public void Constructor3_Name_Empty ()
389 new ServiceController (string.Empty, ".");
391 } catch (ArgumentException ex) {
392 // Invalid value for parameter name
393 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
394 Assert.IsNotNull (ex.Message, "#3");
395 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
396 Assert.IsTrue (ex.Message.IndexOf ("name") != -1, "#5");
397 Assert.IsNull (ex.ParamName, "#6");
398 Assert.IsNull (ex.InnerException, "#7");
403 public void Constructor3_Name_Null ()
406 new ServiceController (null, ".");
408 } catch (ArgumentException ex) {
409 // Invalid value for parameter name
410 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
411 Assert.IsNotNull (ex.Message, "#3");
412 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
413 Assert.IsTrue (ex.Message.IndexOf ("name") != -1, "#5");
414 Assert.IsNull (ex.ParamName, "#6");
415 Assert.IsNull (ex.InnerException, "#7");
420 public void CanPauseAndContinue ()
423 Assert.Ignore ("Running on Unix.");
425 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
426 Assert.IsTrue (sc.CanPauseAndContinue, "#1");
427 sc.ServiceName = UNCONTROLLABLE_SERVICE.ServiceName;
428 Assert.IsFalse (sc.CanPauseAndContinue, "#2");
429 sc.DisplayName = CONTROLLABLE_SERVICE.DisplayName;
430 Assert.IsTrue (sc.CanPauseAndContinue, "#3");
431 sc.MachineName = "doesnotexist";
433 bool value = sc.CanPauseAndContinue;
434 Assert.Fail ("#4: " + value.ToString ());
435 } catch (InvalidOperationException ex) {
436 // Cannot open Service Control Manager on computer 'doesnotexist'.
437 // This operation might require other priviliges
438 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#5");
439 Assert.IsNotNull (ex.Message, "#6");
440 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#7");
441 Assert.IsNotNull (ex.InnerException, "#8");
443 // The RPC server is unavailable
444 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#9");
445 Win32Exception win32Error = (Win32Exception) ex.InnerException;
446 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#10");
447 Assert.IsNotNull (win32Error.Message, "#11");
448 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#12");
449 Assert.IsNull (win32Error.InnerException, "#13");
454 public void CanPauseAndContinue_Machine_DoesNotExist ()
457 Assert.Ignore ("Running on Unix.");
459 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
462 bool canPauseAndContinue = sc.CanPauseAndContinue;
463 Assert.Fail ("#1: " + canPauseAndContinue);
464 } catch (InvalidOperationException ex) {
465 // Cannot open Service Control Manager on computer 'doesnotexist'.
466 // This operation might require other priviliges
467 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
468 Assert.IsNotNull (ex.Message, "#3");
469 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
470 Assert.IsNotNull (ex.InnerException, "#5");
472 // The RPC server is unavailable
473 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
474 Win32Exception win32Error = (Win32Exception) ex.InnerException;
475 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
476 Assert.IsNotNull (win32Error.Message, "#8");
477 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
478 Assert.IsNull (win32Error.InnerException, "#10");
483 public void CanPauseAndContinue_Service_Disabled ()
486 Assert.Ignore ("Running on Unix.");
488 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
489 Assert.IsFalse (sc1.CanPauseAndContinue);
493 public void CanPauseAndContinue_Service_DoesNotExist ()
496 Assert.Ignore ("Running on Unix.");
498 ServiceController sc = new ServiceController ("doesnotexist", ".");
500 bool canPauseAndContinue = sc.CanPauseAndContinue;
501 Assert.Fail ("#1: " + canPauseAndContinue);
502 } catch (InvalidOperationException ex) {
503 // Cannot open doesnotexist service on computer '.'
504 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
505 Assert.IsNotNull (ex.Message, "#3");
506 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
507 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
508 Assert.IsNotNull (ex.InnerException, "#6");
510 // The filename, directory name, or volume label is incorrect
511 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
512 Win32Exception win32Error = (Win32Exception) ex.InnerException;
513 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
514 Assert.IsNotNull (win32Error.Message, "#9");
515 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
516 Assert.IsNull (win32Error.InnerException, "#11");
521 public void CanPauseAndContinue_Service_OperationNotValid ()
524 Assert.Ignore ("Running on Unix.");
526 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
527 Assert.IsFalse (sc1.CanPauseAndContinue);
531 public void CanPauseAndContinue_Service_Running ()
534 Assert.Ignore ("Running on Unix.");
536 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
537 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#1");
538 Assert.IsTrue (sc.CanPauseAndContinue, "#2");
542 public void CanPauseAndContinue_Service_Paused ()
545 Assert.Ignore ("Running on Unix.");
547 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
548 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
550 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
551 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
553 Assert.IsTrue (sc1.CanPauseAndContinue, "#B1");
554 Assert.IsTrue (sc2.CanPauseAndContinue, "#B2");
559 Assert.IsTrue (sc1.CanPauseAndContinue, "#C1");
560 Assert.IsTrue (sc2.CanPauseAndContinue, "#C2");
562 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
564 Assert.IsTrue (sc1.CanPauseAndContinue, "#D1");
565 Assert.IsTrue (sc2.CanPauseAndContinue, "#D2");
567 EnsureServiceIsRunning (sc1);
571 Assert.IsTrue (sc1.CanPauseAndContinue, "#E1");
572 Assert.IsTrue (sc2.CanPauseAndContinue, "#E2");
574 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
575 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
579 public void CanPauseAndContinue_Service_Stopped ()
582 Assert.Ignore ("Running on Unix.");
584 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
585 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
587 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
588 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
590 Assert.IsTrue (sc1.CanPauseAndContinue, "#B1");
591 Assert.IsTrue (sc2.CanPauseAndContinue, "#B2");
596 Assert.IsTrue (sc1.CanPauseAndContinue, "#C1");
597 Assert.IsTrue (sc2.CanPauseAndContinue, "#C2");
599 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
601 Assert.IsFalse (sc1.CanPauseAndContinue, "#D1");
602 Assert.IsTrue (sc2.CanPauseAndContinue, "#D2");
604 EnsureServiceIsRunning (sc1);
608 Assert.IsTrue (sc1.CanPauseAndContinue, "#E1");
609 Assert.IsTrue (sc2.CanPauseAndContinue, "#E2");
611 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
612 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
616 public void CanPauseAndContinue_ServiceName_Empty ()
618 ServiceController sc = new ServiceController ();
620 bool canPauseAndContinue = sc.CanPauseAndContinue;
621 Assert.Fail ("#1: " + canPauseAndContinue);
622 } catch (ArgumentException ex) {
623 // Service name contains invalid characters, is empty or is
624 // too long (max length = 80)
625 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
626 Assert.IsNotNull (ex.Message, "#3");
627 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
628 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
629 Assert.IsNull (ex.ParamName, "#6");
630 Assert.IsNull (ex.InnerException, "#7");
635 public void CanShutdown ()
638 Assert.Ignore ("Running on Unix.");
640 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
641 Assert.IsTrue (sc.CanShutdown, "#1");
642 sc.ServiceName = UNCONTROLLABLE_SERVICE.ServiceName;
643 Assert.IsFalse (sc.CanShutdown, "#2");
644 sc.DisplayName = CONTROLLABLE_SERVICE.DisplayName;
645 Assert.IsTrue (sc.CanShutdown, "#3");
646 sc.MachineName = "doesnotexist";
648 bool value = sc.CanShutdown;
649 Assert.Fail ("#4: " + value.ToString ());
650 } catch (InvalidOperationException ex) {
651 // Cannot open Service Control Manager on computer 'doesnotexist'.
652 // This operation might require other priviliges
653 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#5");
654 Assert.IsNotNull (ex.Message, "#6");
655 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#7");
656 Assert.IsNotNull (ex.InnerException, "#8");
658 // The RPC server is unavailable
659 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#9");
660 Win32Exception win32Error = (Win32Exception) ex.InnerException;
661 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#10");
662 Assert.IsNotNull (win32Error.Message, "#11");
663 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#12");
664 Assert.IsNull (win32Error.InnerException, "#13");
669 public void CanShutdown_Machine_DoesNotExist ()
672 Assert.Ignore ("Running on Unix.");
674 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
677 bool canShutdown = sc.CanShutdown;
678 Assert.Fail ("#1: " + canShutdown);
679 } catch (InvalidOperationException ex) {
680 // Cannot open Service Control Manager on computer 'doesnotexist'.
681 // This operation might require other priviliges
682 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
683 Assert.IsNotNull (ex.Message, "#3");
684 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
685 Assert.IsNotNull (ex.InnerException, "#5");
687 // The RPC server is unavailable
688 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
689 Win32Exception win32Error = (Win32Exception) ex.InnerException;
690 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
691 Assert.IsNotNull (win32Error.Message, "#8");
692 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
693 Assert.IsNull (win32Error.InnerException, "#10");
698 public void CanShutdown_Service_Disabled ()
701 Assert.Ignore ("Running on Unix.");
703 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
704 Assert.IsFalse (sc1.CanShutdown);
708 public void CanShutdown_Service_DoesNotExist ()
711 Assert.Ignore ("Running on Unix.");
713 ServiceController sc = new ServiceController ("doesnotexist", ".");
715 bool value = sc.CanShutdown;
716 Assert.Fail ("#1: " + value.ToString ());
717 } catch (InvalidOperationException ex) {
718 // Cannot open doesnotexist service on computer '.'
719 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
720 Assert.IsNotNull (ex.Message, "#3");
721 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
722 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
723 Assert.IsNotNull (ex.InnerException, "#6");
725 // The filename, directory name, or volume label is incorrect
726 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
727 Win32Exception win32Error = (Win32Exception) ex.InnerException;
728 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
729 Assert.IsNotNull (win32Error.Message, "#9");
730 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
731 Assert.IsNull (win32Error.InnerException, "#11");
736 public void CanShutdown_Service_OperationNotValid ()
739 Assert.Ignore ("Running on Unix.");
741 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
742 Assert.IsFalse (sc1.CanShutdown);
746 public void CanShutdown_Service_Running ()
749 Assert.Ignore ("Running on Unix.");
751 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
752 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#1");
753 Assert.IsTrue (sc.CanShutdown, "#2");
757 public void CanShutdown_Service_Paused ()
760 Assert.Ignore ("Running on Unix.");
762 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
763 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
765 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
766 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
768 Assert.IsTrue (sc1.CanShutdown, "#B1");
769 Assert.IsTrue (sc2.CanShutdown, "#B2");
774 Assert.IsTrue (sc1.CanShutdown, "#C1");
775 Assert.IsTrue (sc2.CanShutdown, "#C2");
777 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
779 Assert.IsTrue (sc1.CanShutdown, "#D1");
780 Assert.IsTrue (sc2.CanShutdown, "#D2");
782 EnsureServiceIsRunning (sc1);
786 Assert.IsTrue (sc1.CanShutdown, "#E1");
787 Assert.IsTrue (sc2.CanShutdown, "#E2");
789 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
790 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
794 public void CanShutdown_Service_Stopped ()
797 Assert.Ignore ("Running on Unix.");
799 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
800 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
802 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
803 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
805 Assert.IsTrue (sc1.CanShutdown, "#B1");
806 Assert.IsTrue (sc2.CanShutdown, "#B2");
811 Assert.IsTrue (sc1.CanShutdown, "#C1");
812 Assert.IsTrue (sc2.CanShutdown, "#C2");
814 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
816 Assert.IsFalse (sc1.CanShutdown, "#D1");
817 Assert.IsTrue (sc2.CanShutdown, "#D2");
819 EnsureServiceIsRunning (sc1);
823 Assert.IsTrue (sc1.CanShutdown, "#E1");
824 Assert.IsTrue (sc2.CanShutdown, "#E2");
826 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
827 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
831 public void CanShutdown_ServiceName_Empty ()
833 ServiceController sc = new ServiceController ();
835 bool canShutdown = sc.CanShutdown;
836 Assert.Fail ("#1: " + canShutdown);
837 } catch (ArgumentException ex) {
838 // Service name contains invalid characters, is empty or is
839 // too long (max length = 80)
840 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
841 Assert.IsNotNull (ex.Message, "#3");
842 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
843 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
844 Assert.IsNull (ex.ParamName, "#6");
845 Assert.IsNull (ex.InnerException, "#7");
850 public void CanStop ()
853 Assert.Ignore ("Running on Unix.");
855 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
856 Assert.IsTrue (sc.CanStop, "#1");
857 sc.ServiceName = UNCONTROLLABLE_SERVICE.ServiceName;
858 Assert.IsFalse (sc.CanStop, "#2");
859 sc.DisplayName = CONTROLLABLE_SERVICE.DisplayName;
860 Assert.IsTrue (sc.CanStop, "#3");
861 sc.MachineName = "doesnotexist";
863 bool value = sc.CanStop;
864 Assert.Fail ("#4: " + value.ToString ());
865 } catch (InvalidOperationException ex) {
866 // Cannot open Service Control Manager on computer 'doesnotexist'.
867 // This operation might require other priviliges
868 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#5");
869 Assert.IsNotNull (ex.Message, "#6");
870 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#7");
871 Assert.IsNotNull (ex.InnerException, "#8");
873 // The RPC server is unavailable
874 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#9");
875 Win32Exception win32Error = (Win32Exception) ex.InnerException;
876 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#10");
877 Assert.IsNotNull (win32Error.Message, "#11");
878 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#12");
879 Assert.IsNull (win32Error.InnerException, "#13");
884 public void CanStop_Machine_DoesNotExist ()
887 Assert.Ignore ("Running on Unix.");
889 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
892 bool canStop = sc.CanStop;
893 Assert.Fail ("#1: " + canStop);
894 } catch (InvalidOperationException ex) {
895 // Cannot open Service Control Manager on computer 'doesnotexist'.
896 // This operation might require other priviliges
897 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
898 Assert.IsNotNull (ex.Message, "#3");
899 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
900 Assert.IsNotNull (ex.InnerException, "#5");
902 // The RPC server is unavailable
903 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
904 Win32Exception win32Error = (Win32Exception) ex.InnerException;
905 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
906 Assert.IsNotNull (win32Error.Message, "#8");
907 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
908 Assert.IsNull (win32Error.InnerException, "#10");
913 public void CanStop_Service_Disabled ()
916 Assert.Ignore ("Running on Unix.");
918 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
919 Assert.IsFalse (sc1.CanStop);
923 public void CanStop_Service_DoesNotExist ()
926 Assert.Ignore ("Running on Unix.");
928 ServiceController sc = new ServiceController ("doesnotexist", ".");
930 bool canStop = sc.CanStop;
931 Assert.Fail ("#1: " + canStop);
932 } catch (InvalidOperationException ex) {
933 // Cannot open doesnotexist service on computer '.'
934 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
935 Assert.IsNotNull (ex.Message, "#3");
936 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
937 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
938 Assert.IsNotNull (ex.InnerException, "#6");
940 // The filename, directory name, or volume label is incorrect
941 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
942 Win32Exception win32Error = (Win32Exception) ex.InnerException;
943 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
944 Assert.IsNotNull (win32Error.Message, "#9");
945 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
946 Assert.IsNull (win32Error.InnerException, "#11");
951 public void CanStop_Service_OperationNotValid ()
954 Assert.Ignore ("Running on Unix.");
956 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
957 Assert.IsFalse (sc1.CanStop);
961 public void CanStop_Service_Running ()
964 Assert.Ignore ("Running on Unix.");
966 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
967 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#1");
968 Assert.IsTrue (sc.CanStop, "#2");
972 public void CanStop_Service_Paused ()
975 Assert.Ignore ("Running on Unix.");
977 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
978 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
980 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
981 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
983 Assert.IsTrue (sc1.CanStop, "#B1");
984 Assert.IsTrue (sc2.CanStop, "#B2");
989 Assert.IsTrue (sc1.CanStop, "#C1");
990 Assert.IsTrue (sc2.CanStop, "#C2");
992 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
994 Assert.IsTrue (sc1.CanStop, "#D1");
995 Assert.IsTrue (sc2.CanStop, "#D2");
997 EnsureServiceIsRunning (sc1);
1001 Assert.IsTrue (sc1.CanStop, "#E1");
1002 Assert.IsTrue (sc2.CanStop, "#E2");
1004 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
1005 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
1009 public void CanStop_Service_Stopped ()
1012 Assert.Ignore ("Running on Unix.");
1014 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1015 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1017 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
1018 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
1020 Assert.IsTrue (sc1.CanStop, "#B1");
1021 Assert.IsTrue (sc2.CanStop, "#B2");
1026 Assert.IsTrue (sc1.CanStop, "#C1");
1027 Assert.IsTrue (sc2.CanStop, "#C2");
1029 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
1031 Assert.IsFalse (sc1.CanStop, "#D1");
1032 Assert.IsTrue (sc2.CanStop, "#D2");
1034 EnsureServiceIsRunning (sc1);
1038 Assert.IsTrue (sc1.CanShutdown, "#E1");
1039 Assert.IsTrue (sc2.CanShutdown, "#E2");
1041 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
1042 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
1046 public void CanStop_ServiceName_Empty ()
1048 ServiceController sc = new ServiceController ();
1050 bool canStop = sc.CanStop;
1051 Assert.Fail ("#1: " + canStop);
1052 } catch (ArgumentException ex) {
1053 // Service name contains invalid characters, is empty or is
1054 // too long (max length = 80)
1055 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1056 Assert.IsNotNull (ex.Message, "#3");
1057 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
1058 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
1059 Assert.IsNull (ex.ParamName, "#6");
1060 Assert.IsNull (ex.InnerException, "#7");
1065 public void Continue ()
1068 Assert.Ignore ("Running on Unix.");
1070 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1071 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1073 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
1074 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
1079 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
1080 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
1082 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
1084 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#C1");
1085 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
1089 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#D1");
1090 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
1092 sc1.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
1094 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#E1");
1095 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
1097 EnsureServiceIsRunning (sc1);
1103 public void Continue_Machine_DoesNotExist ()
1106 Assert.Ignore ("Running on Unix.");
1108 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
1113 } catch (InvalidOperationException ex) {
1114 // Cannot open Service Control Manager on computer 'doesnotexist'.
1115 // This operation might require other priviliges
1116 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1117 Assert.IsNotNull (ex.Message, "#3");
1118 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
1119 Assert.IsNotNull (ex.InnerException, "#5");
1121 // The RPC server is unavailable
1122 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
1123 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1124 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
1125 Assert.IsNotNull (win32Error.Message, "#8");
1126 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
1127 Assert.IsNull (win32Error.InnerException, "#10");
1132 public void Continue_Service_Disabled ()
1135 Assert.Ignore ("Running on Unix.");
1137 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
1138 ServiceController sc2 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
1140 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#A1");
1141 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#A2");
1145 Assert.Fail ("#B1");
1146 } catch (InvalidOperationException ex) {
1147 // Cannot resume NetDDE service on computer '.'
1148 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
1149 Assert.IsNotNull (ex.Message, "#B3");
1150 Assert.IsTrue (ex.Message.IndexOf (DISABLED_SERVICE.ServiceName) != -1, "#B4");
1151 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
1152 Assert.IsNotNull (ex.InnerException, "#B6");
1154 // The service has not been started
1155 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
1156 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1157 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
1158 Assert.IsNotNull (win32Error.Message, "#B9");
1159 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#B10");
1160 Assert.IsNull (win32Error.InnerException, "#B11");
1163 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
1164 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#C2");
1168 public void Continue_Service_DoesNotExist ()
1171 Assert.Ignore ("Running on Unix.");
1173 ServiceController sc = new ServiceController ("doesnotexist", ".");
1177 } catch (InvalidOperationException ex) {
1178 // Cannot open doesnotexist service on computer '.'
1179 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1180 Assert.IsNotNull (ex.Message, "#3");
1181 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
1182 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
1183 Assert.IsNotNull (ex.InnerException, "#6");
1185 // The filename, directory name, or volume label is incorrect
1186 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
1187 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1188 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
1189 Assert.IsNotNull (win32Error.Message, "#9");
1190 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
1191 Assert.IsNull (win32Error.InnerException, "#11");
1196 public void Continue_Service_OperationNotValid ()
1199 Assert.Ignore ("Running on Unix.");
1201 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
1202 ServiceController sc2 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
1204 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
1205 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
1209 Assert.Fail ("#B1");
1210 } catch (InvalidOperationException ex) {
1211 // Cannot resume service on computer '.'
1212 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
1213 Assert.IsNotNull (ex.Message, "#B3");
1214 Assert.IsTrue (ex.Message.IndexOf (UNCONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
1215 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
1216 Assert.IsNotNull (ex.InnerException, "#B6");
1218 // The requested control is not valid for this service
1219 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
1220 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1221 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
1222 Assert.IsNotNull (win32Error.Message, "#B9");
1223 Assert.AreEqual (1052, win32Error.NativeErrorCode, "#B10");
1224 Assert.IsNull (win32Error.InnerException, "#B11");
1227 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#C1");
1228 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
1232 public void Continue_Service_Running ()
1235 Assert.Ignore ("Running on Unix.");
1237 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1238 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1240 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
1241 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
1245 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
1246 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
1250 public void Continue_Service_Stopped ()
1253 Assert.Ignore ("Running on Unix.");
1255 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1256 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
1258 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
1259 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
1264 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
1265 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
1267 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
1269 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
1270 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
1273 Assert.Fail ("#D1");
1274 } catch (InvalidOperationException ex) {
1275 // Cannot resume the service on computer '.'
1276 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
1277 Assert.IsNotNull (ex.Message, "#D3");
1278 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#D4");
1279 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
1280 Assert.IsNotNull (ex.InnerException, "#D6");
1282 // The service has not been started
1283 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
1284 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1285 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
1286 Assert.IsNotNull (win32Error.Message, "#D9");
1287 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#D10");
1288 Assert.IsNull (win32Error.InnerException, "#D11");
1290 EnsureServiceIsRunning (sc1);
1294 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#E1");
1295 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
1299 public void Continue_ServiceName_Empty ()
1301 ServiceController sc = new ServiceController ();
1305 } catch (ArgumentException ex) {
1306 // Service name contains invalid characters, is empty or is
1307 // too long (max length = 80)
1308 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1309 Assert.IsNotNull (ex.Message, "#3");
1310 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
1311 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
1312 Assert.IsNull (ex.ParamName, "#6");
1313 Assert.IsNull (ex.InnerException, "#7");
1318 public void DependentServices ()
1321 Assert.Ignore ("Running on Unix.");
1323 ServiceController sc = null;
1324 ServiceController [] dependentServices = null;
1326 // single dependent service
1327 sc = new ServiceController (SERVICE_WITH_ONE_DEPENDENT.ServiceName, ".");
1328 dependentServices = sc.DependentServices;
1329 Assert.IsNotNull (dependentServices, "#A1");
1330 Assert.AreEqual (1, dependentServices.Length, "#A2");
1331 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDENT.Dependents, ServiceNames (dependentServices), "#A3");
1333 // modifying ServiceName does not cause cache to be cleared:
1334 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1335 sc.ServiceName = SERVICE_WITH_NO_DEPENDENTS.ServiceName;
1336 dependentServices = sc.DependentServices;
1337 Assert.IsNotNull (dependentServices, "#B1");
1338 Assert.AreEqual (1, dependentServices.Length, "#B2");
1339 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDENT.Dependents, ServiceNames (dependentServices), "#B3");
1341 // modifying DisplayName does not cause cache to be cleared:
1342 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1343 sc.DisplayName = SERVICE_WITH_MANY_DEPENDENTS.DisplayName;
1344 dependentServices = sc.DependentServices;
1345 Assert.IsNotNull (dependentServices, "#C1");
1346 Assert.AreEqual (1, dependentServices.Length, "#C2");
1347 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDENT.Dependents, ServiceNames (dependentServices), "#C3");
1349 // modifying MachineName does not cause cache to be cleared:
1350 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1351 sc.MachineName = "doesnotexist";
1352 dependentServices = sc.DependentServices;
1353 Assert.IsNotNull (dependentServices, "#D1");
1354 Assert.AreEqual (1, dependentServices.Length, "#D");
1355 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDENT.Dependents, ServiceNames (dependentServices), "#D3");
1357 // no dependent services
1358 sc = new ServiceController (SERVICE_WITH_NO_DEPENDENTS.ServiceName, ".");
1359 dependentServices = sc.DependentServices;
1360 Assert.IsNotNull (dependentServices, "#E1");
1361 Assert.AreEqual (0, dependentServices.Length, "#E2");
1363 // modifying ServiceName does not cause cache to be cleared:
1364 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1365 sc.ServiceName = SERVICE_WITH_MANY_DEPENDENTS.ServiceName;
1366 dependentServices = sc.DependentServices;
1367 Assert.IsNotNull (dependentServices, "#F1");
1368 Assert.AreEqual (0, dependentServices.Length, "#F2");
1370 // modifying DisplayName does not cause cache to be cleared:
1371 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1372 sc.DisplayName = SERVICE_WITH_ONE_DEPENDENT.DisplayName;
1373 dependentServices = sc.DependentServices;
1374 Assert.IsNotNull (dependentServices, "#G1");
1375 Assert.AreEqual (0, dependentServices.Length, "#G2");
1377 // modifying MachineName does not cause cache to be cleared:
1378 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1379 sc.MachineName = Environment.MachineName;
1380 dependentServices = sc.DependentServices;
1381 Assert.IsNotNull (dependentServices, "#H1");
1382 Assert.AreEqual (0, dependentServices.Length, "#H2");
1384 // multiple dependent services
1385 sc = new ServiceController (SERVICE_WITH_MANY_DEPENDENTS.ServiceName, ".");
1386 dependentServices = sc.DependentServices;
1387 Assert.IsNotNull (dependentServices, "#I1");
1388 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents.Length, dependentServices.Length, "#I2");
1389 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents, ServiceNames (dependentServices), "#I3");
1391 // modifying ServiceName does not cause cache to be cleared:
1392 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1393 sc.ServiceName = SERVICE_WITH_NO_DEPENDENTS.ServiceName;
1394 dependentServices = sc.DependentServices;
1395 Assert.IsNotNull (dependentServices, "#J1");
1396 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents.Length, dependentServices.Length, "#J3");
1397 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents, ServiceNames (dependentServices), "#J3");
1399 // modifying DisplayName does not cause cache to be cleared:
1400 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1401 sc.DisplayName = SERVICE_WITH_ONE_DEPENDENT.DisplayName;
1402 dependentServices = sc.DependentServices;
1403 Assert.IsNotNull (dependentServices, "#K1");
1404 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents.Length, dependentServices.Length, "#K2");
1405 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents, ServiceNames (dependentServices), "#K3");
1407 // modifying MachineName does not cause cache to be cleared:
1408 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
1409 sc.MachineName = Environment.MachineName;
1410 dependentServices = sc.DependentServices;
1411 Assert.IsNotNull (dependentServices, "#L1");
1412 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents.Length, dependentServices.Length, "#L2");
1413 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDENTS.Dependents, ServiceNames (dependentServices), "#L3");
1417 public void DependentServices_Machine_DoesNotExist ()
1420 Assert.Ignore ("Running on Unix.");
1422 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
1425 ServiceController [] dependenServices = sc.DependentServices;
1426 Assert.Fail ("#1: " + dependenServices.Length);
1427 } catch (InvalidOperationException ex) {
1428 // Cannot open Service Control Manager on computer 'doesnotexist'.
1429 // This operation might require other priviliges
1430 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1431 Assert.IsNotNull (ex.Message, "#3");
1432 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
1433 Assert.IsNotNull (ex.InnerException, "#5");
1435 // The RPC server is unavailable
1436 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
1437 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1438 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
1439 Assert.IsNotNull (win32Error.Message, "#8");
1440 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
1441 Assert.IsNull (win32Error.InnerException, "#10");
1446 public void DependentServices_Service_Disabled ()
1449 Assert.Ignore ("Running on Unix.");
1451 ServiceController sc = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
1452 ServiceController [] dependentServices = sc.DependentServices;
1453 Assert.IsNotNull (dependentServices, "#1");
1454 Assert.AreEqual (DISABLED_SERVICE.Dependents, ServiceNames (dependentServices), "#2");
1458 public void DependentServices_Service_DoesNotExist ()
1461 Assert.Ignore ("Running on Unix.");
1463 ServiceController sc = new ServiceController ("doesnotexist", ".");
1465 ServiceController [] dependenServices = sc.DependentServices;
1466 Assert.Fail ("#1: " + dependenServices.Length);
1467 } catch (InvalidOperationException ex) {
1468 // Cannot open doesnotexist service on computer '.'
1469 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1470 Assert.IsNotNull (ex.Message, "#3");
1471 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
1472 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
1473 Assert.IsNotNull (ex.InnerException, "#6");
1475 // The filename, directory name, or volume label is incorrect
1476 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
1477 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1478 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
1479 Assert.IsNotNull (win32Error.Message, "#9");
1480 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
1481 Assert.IsNull (win32Error.InnerException, "#11");
1486 public void DependentServices_ServiceName_Empty ()
1488 ServiceController sc = new ServiceController ();
1490 ServiceController [] dependenServices = sc.DependentServices;
1491 Assert.Fail ("#1: " + dependenServices.Length);
1492 } catch (ArgumentException ex) {
1493 // Service name contains invalid characters, is empty or is
1494 // too long (max length = 80)
1495 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1496 Assert.IsNotNull (ex.Message, "#3");
1497 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
1498 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
1499 Assert.IsNull (ex.ParamName, "#6");
1500 Assert.IsNull (ex.InnerException, "#7");
1505 public void DisplayName ()
1508 Assert.Ignore ("Running on Unix.");
1510 var s1 = WORKSTATION_SERVICE;
1511 var s2 = WINDOWS_SEARCH_SERVICE;
1513 ServiceController sc = new ServiceController ();
1514 sc.DisplayName = s1.DisplayName.ToLower ();
1515 Assert.AreEqual (s1.DisplayName.ToLower (), sc.DisplayName, "#A1");
1516 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#A2");
1518 sc.DisplayName = s2.DisplayName.ToLower ();
1519 Assert.AreEqual (s2.DisplayName.ToLower (), sc.DisplayName, "#B1");
1520 Assert.AreEqual (s2.ServiceName, sc.ServiceName, "#B2");
1522 sc = new ServiceController (s1.DisplayName.ToLower ());
1523 sc.DisplayName = s2.DisplayName.ToLower ();
1524 Assert.AreEqual (s2.DisplayName.ToLower (), sc.DisplayName, "#C1");
1525 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#C2");
1526 Assert.AreEqual (s1.DisplayName.ToLower (), sc.DisplayName, "#C3");
1528 sc.DisplayName = s2.DisplayName.ToLower ();
1529 Assert.AreEqual (s2.DisplayName.ToLower (), sc.DisplayName, "#D1");
1530 Assert.AreEqual (s2.ServiceName, sc.ServiceName, "#D2");
1532 sc.DisplayName = s1.DisplayName;
1533 Assert.AreEqual (s1.DisplayName, sc.DisplayName, "#E1");
1534 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#E2");
1536 sc = new ServiceController (s1.DisplayName.ToLower ());
1537 Assert.AreEqual (s1.DisplayName.ToLower (), sc.DisplayName, "#F1");
1538 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#F2");
1540 sc.DisplayName = s1.DisplayName;
1541 Assert.AreEqual (s1.DisplayName, sc.DisplayName, "#G1");
1542 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#G2");
1546 public void DisplayName_Machine_DoesNotExist ()
1549 Assert.Ignore ("Running on Unix.");
1551 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
1554 string displayName = sc.DisplayName;
1555 Assert.Fail ("#1: " + displayName);
1556 } catch (InvalidOperationException ex) {
1557 // Cannot open Service Control Manager on computer 'doesnotexist'.
1558 // This operation might require other priviliges
1559 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1560 Assert.IsNotNull (ex.Message, "#3");
1561 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
1562 Assert.IsNotNull (ex.InnerException, "#5");
1564 // The RPC server is unavailable
1565 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
1566 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1567 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
1568 Assert.IsNotNull (win32Error.Message, "#8");
1569 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
1570 Assert.IsNull (win32Error.InnerException, "#10");
1575 public void DisplayName_Service_Disabled ()
1578 Assert.Ignore ("Running on Unix.");
1580 ServiceController sc = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
1581 Assert.AreEqual (DISABLED_SERVICE.DisplayName, sc.DisplayName);
1585 public void DisplayName_Service_DoesNotExist ()
1588 Assert.Ignore ("Running on Unix.");
1590 ServiceController sc = new ServiceController ("doesnotexist", ".");
1592 string displayName = sc.DisplayName;
1593 Assert.Fail ("#1: " + displayName);
1594 } catch (InvalidOperationException ex) {
1595 // Cannot open doesnotexist service on computer '.'
1596 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1597 Assert.IsNotNull (ex.Message, "#3");
1598 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
1599 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
1600 Assert.IsNotNull (ex.InnerException, "#6");
1602 // The filename, directory name, or volume label is incorrect
1603 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
1604 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1605 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
1606 Assert.IsNotNull (win32Error.Message, "#9");
1607 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
1608 Assert.IsNull (win32Error.InnerException, "#11");
1613 public void DisplayName_ServiceName_Empty ()
1616 Assert.Ignore ("Running on Unix.");
1618 ServiceController sc = new ServiceController ();
1619 sc.DisplayName = WORKSTATION_SERVICE.DisplayName.ToLower ();
1620 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName.ToLower (), sc.DisplayName, "#A1");
1621 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#A2");
1625 public void DisplayName_Value_DoesNotExist ()
1628 Assert.Ignore ("Running on Unix.");
1630 ServiceController sc = new ServiceController ();
1631 sc.DisplayName = "doesnotexist";
1632 Assert.AreEqual ("doesnotexist", sc.DisplayName, "#1");
1634 string serviceName = sc.ServiceName;
1635 Assert.Fail ("#2: " + serviceName);
1636 } catch (InvalidOperationException ex) {
1637 // Service doesnotexist was not found on computer '.'
1638 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
1639 Assert.IsNotNull (ex.Message, "#4");
1640 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#5");
1641 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#6");
1642 Assert.IsNotNull (ex.InnerException, "#7");
1644 // The specified service does not exist as an installed service
1645 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#8");
1646 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1647 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#9");
1648 Assert.IsNotNull (win32Error.Message, "#10");
1649 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#11");
1650 Assert.IsNull (win32Error.InnerException, "#12");
1652 Assert.AreEqual ("doesnotexist", sc.DisplayName, "#13");
1656 public void DisplayName_Value_Empty ()
1659 Assert.Ignore ("Running on Unix.");
1661 ServiceController sc = new ServiceController ();
1662 Assert.AreEqual (string.Empty, sc.DisplayName, "#A1");
1663 Assert.AreEqual (string.Empty, sc.ServiceName, "#A2");
1665 sc.DisplayName = WORKSTATION_SERVICE.DisplayName;
1667 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#B1");
1668 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#B2");
1670 sc.DisplayName = string.Empty;
1672 Assert.AreEqual (string.Empty, sc.DisplayName, "#C1");
1673 Assert.AreEqual (string.Empty, sc.ServiceName, "#C2");
1677 public void DisplayName_Value_Null ()
1680 Assert.Ignore ("Running on Unix.");
1682 ServiceController sc = new ServiceController ();
1683 sc.DisplayName = CONTROLLABLE_SERVICE.DisplayName;
1685 sc.DisplayName = null;
1687 } catch (ArgumentNullException ex) {
1688 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1689 Assert.IsNotNull (ex.Message, "#3");
1690 Assert.IsNotNull (ex.ParamName, "#4");
1691 Assert.AreEqual ("value", ex.ParamName, "#5");
1692 Assert.IsNull (ex.InnerException, "#6");
1694 Assert.AreEqual (CONTROLLABLE_SERVICE.DisplayName, sc.DisplayName, "#7");
1698 public void DisplayName_Value_ServiceName ()
1701 Assert.Ignore ("Running on Unix.");
1703 ServiceController sc = new ServiceController ();
1704 sc.DisplayName = WORKSTATION_SERVICE.ServiceName;
1705 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.DisplayName, "#A1");
1706 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#A2");
1707 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#A3");
1711 public void ExecuteCommand_Device_ControlCodes ()
1714 Assert.Ignore ("Running on Unix.");
1716 ServiceController sc = new ServiceController (DISK_DRIVER_SERVICE.ServiceName, ".");
1717 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
1721 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_CONTINUE);
1722 Assert.Fail ("#B1");
1723 } catch (InvalidOperationException ex) {
1724 // Cannot control XXX service on computer '.'
1725 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
1726 Assert.IsNotNull (ex.Message, "#B3");
1727 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#B4");
1728 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
1729 Assert.IsNotNull (ex.InnerException, "#B6");
1732 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
1733 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1734 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
1735 Assert.IsNotNull (win32Error.Message, "#B9");
1736 Assert.AreEqual (5, win32Error.NativeErrorCode, "#B10");
1737 Assert.IsNull (win32Error.InnerException, "#B11");
1741 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_DEVICEEVENT);
1742 Assert.Fail ("#C1");
1743 } catch (InvalidOperationException ex) {
1744 // Cannot control XXX service on computer '.'
1745 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
1746 Assert.IsNotNull (ex.Message, "#C3");
1747 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#C4");
1748 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
1749 Assert.IsNotNull (ex.InnerException, "#C6");
1751 // The parameter is incorrect
1752 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
1753 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1754 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
1755 Assert.IsNotNull (win32Error.Message, "#C9");
1756 Assert.AreEqual (87, win32Error.NativeErrorCode, "#C10");
1757 Assert.IsNull (win32Error.InnerException, "#C11");
1761 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_HARDWAREPROFILECHANGE);
1762 Assert.Fail ("#D1");
1763 } catch (InvalidOperationException ex) {
1764 // Cannot control XXX service on computer '.'
1765 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
1766 Assert.IsNotNull (ex.Message, "#D3");
1767 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#D4");
1768 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
1769 Assert.IsNotNull (ex.InnerException, "#D6");
1771 // The parameter is incorrect
1772 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
1773 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1774 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
1775 Assert.IsNotNull (win32Error.Message, "#D9");
1776 Assert.AreEqual (87, win32Error.NativeErrorCode, "#D10");
1777 Assert.IsNull (win32Error.InnerException, "#D11");
1781 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_INTERROGATE);
1782 Assert.Fail ("#E1");
1783 } catch (InvalidOperationException ex) {
1784 // Cannot control XXX service on computer '.'
1785 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
1786 Assert.IsNotNull (ex.Message, "#E3");
1787 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#E4");
1788 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#E5");
1789 Assert.IsNotNull (ex.InnerException, "#E6");
1792 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#E7");
1793 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1794 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#E8");
1795 Assert.IsNotNull (win32Error.Message, "#E9");
1796 Assert.AreEqual (5, win32Error.NativeErrorCode, "#E10");
1797 Assert.IsNull (win32Error.InnerException, "#E11");
1801 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDADD);
1802 Assert.Fail ("#F1");
1803 } catch (InvalidOperationException ex) {
1804 // Cannot control XXX service on computer '.'
1805 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
1806 Assert.IsNotNull (ex.Message, "#F3");
1807 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#F4");
1808 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#F5");
1809 Assert.IsNotNull (ex.InnerException, "#F6");
1812 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#F7");
1813 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1814 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#F8");
1815 Assert.IsNotNull (win32Error.Message, "#F9");
1816 Assert.AreEqual (5, win32Error.NativeErrorCode, "#F10");
1817 Assert.IsNull (win32Error.InnerException, "#F11");
1821 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDDISABLE);
1822 Assert.Fail ("#G1");
1823 } catch (InvalidOperationException ex) {
1824 // Cannot control XXX service on computer '.'
1825 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
1826 Assert.IsNotNull (ex.Message, "#G3");
1827 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#G4");
1828 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#G5");
1829 Assert.IsNotNull (ex.InnerException, "#G6");
1832 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#G7");
1833 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1834 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#G8");
1835 Assert.IsNotNull (win32Error.Message, "#G9");
1836 Assert.AreEqual (5, win32Error.NativeErrorCode, "#G10");
1837 Assert.IsNull (win32Error.InnerException, "#G11");
1841 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDENABLE);
1842 Assert.Fail ("#H1");
1843 } catch (InvalidOperationException ex) {
1844 // Cannot control XXX service on computer '.'
1845 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#H2");
1846 Assert.IsNotNull (ex.Message, "#H3");
1847 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#H4");
1848 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#H5");
1849 Assert.IsNotNull (ex.InnerException, "#H6");
1852 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#H7");
1853 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1854 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#H8");
1855 Assert.IsNotNull (win32Error.Message, "#H9");
1856 Assert.AreEqual (5, win32Error.NativeErrorCode, "#H10");
1857 Assert.IsNull (win32Error.InnerException, "#H11");
1861 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDREMOVE);
1862 Assert.Fail ("#I1");
1863 } catch (InvalidOperationException ex) {
1864 // Cannot control XXX service on computer '.'
1865 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#I2");
1866 Assert.IsNotNull (ex.Message, "#I3");
1867 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#I4");
1868 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#I5");
1869 Assert.IsNotNull (ex.InnerException, "#I6");
1872 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#I7");
1873 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1874 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#I8");
1875 Assert.IsNotNull (win32Error.Message, "#I9");
1876 Assert.AreEqual (5, win32Error.NativeErrorCode, "#I10");
1877 Assert.IsNull (win32Error.InnerException, "#I11");
1881 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_PARAMCHANGE);
1882 Assert.Fail ("#J1");
1883 } catch (InvalidOperationException ex) {
1884 // Cannot control XXX service on computer '.'
1885 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#J2");
1886 Assert.IsNotNull (ex.Message, "#J3");
1887 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#J4");
1888 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#J5");
1889 Assert.IsNotNull (ex.InnerException, "#J6");
1892 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#J7");
1893 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1894 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#J8");
1895 Assert.IsNotNull (win32Error.Message, "#J9");
1896 Assert.AreEqual (5, win32Error.NativeErrorCode, "#J10");
1897 Assert.IsNull (win32Error.InnerException, "#J11");
1901 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_PAUSE);
1902 Assert.Fail ("#K1");
1903 } catch (InvalidOperationException ex) {
1904 // Cannot control XXX service on computer '.'
1905 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#K2");
1906 Assert.IsNotNull (ex.Message, "#K3");
1907 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#K4");
1908 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#K5");
1909 Assert.IsNotNull (ex.InnerException, "#K6");
1912 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#K7");
1913 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1914 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#K8");
1915 Assert.IsNotNull (win32Error.Message, "#K9");
1916 Assert.AreEqual (5, win32Error.NativeErrorCode, "#K10");
1917 Assert.IsNull (win32Error.InnerException, "#K11");
1921 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_POWEREVENT);
1922 Assert.Fail ("#L1");
1923 } catch (InvalidOperationException ex) {
1924 // Cannot control XXX service on computer '.'
1925 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#L2");
1926 Assert.IsNotNull (ex.Message, "#L3");
1927 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#L4");
1928 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#L5");
1929 Assert.IsNotNull (ex.InnerException, "#L6");
1932 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#L7");
1933 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1934 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#L8");
1935 Assert.IsNotNull (win32Error.Message, "#L9");
1936 Assert.AreEqual (87, win32Error.NativeErrorCode, "#L10");
1937 Assert.IsNull (win32Error.InnerException, "#L11");
1941 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_SESSIONCHANGE);
1942 Assert.Fail ("#M1");
1943 } catch (InvalidOperationException ex) {
1944 // Cannot control XXX service on computer '.'
1945 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#M2");
1946 Assert.IsNotNull (ex.Message, "#M3");
1947 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#M4");
1948 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#M5");
1949 Assert.IsNotNull (ex.InnerException, "#M6");
1951 // The parameter is incorrect
1952 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#M7");
1953 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1954 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#M8");
1955 Assert.IsNotNull (win32Error.Message, "#M9");
1956 Assert.AreEqual (87, win32Error.NativeErrorCode, "#M10");
1957 Assert.IsNull (win32Error.InnerException, "#M11");
1961 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_SHUTDOWN);
1962 Assert.Fail ("#N1");
1963 } catch (InvalidOperationException ex) {
1964 // Cannot control XXX service on computer '.'
1965 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#N2");
1966 Assert.IsNotNull (ex.Message, "#N3");
1967 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#N4");
1968 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#N5");
1969 Assert.IsNotNull (ex.InnerException, "#N6");
1971 // The parameter is incorrect
1972 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#N7");
1973 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1974 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#N8");
1975 Assert.IsNotNull (win32Error.Message, "#N9");
1976 Assert.AreEqual (87, win32Error.NativeErrorCode, "#N10");
1977 Assert.IsNull (win32Error.InnerException, "#N11");
1981 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_STOP);
1982 Assert.Fail ("#O1");
1983 } catch (InvalidOperationException ex) {
1984 // Cannot control XXX service on computer '.'
1985 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#O2");
1986 Assert.IsNotNull (ex.Message, "#O3");
1987 Assert.IsTrue (ex.Message.IndexOf (DISK_DRIVER_SERVICE.ServiceName) != -1, "#O4");
1988 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#O5");
1989 Assert.IsNotNull (ex.InnerException, "#O6");
1992 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#O7");
1993 Win32Exception win32Error = (Win32Exception) ex.InnerException;
1994 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#O8");
1995 Assert.IsNotNull (win32Error.Message, "#O9");
1996 Assert.AreEqual (5, win32Error.NativeErrorCode, "#O10");
1997 Assert.IsNull (win32Error.InnerException, "#O11");
2000 EnsureServiceIsRunning (sc);
2003 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#P");
2007 public void ExecuteCommand_Machine_DoesNotExist ()
2010 Assert.Ignore ("Running on Unix.");
2012 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
2015 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_PAUSE);
2017 } catch (InvalidOperationException ex) {
2018 // Cannot open Service Control Manager on computer 'doesnotexist'.
2019 // This operation might require other priviliges
2020 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
2021 Assert.IsNotNull (ex.Message, "#3");
2022 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
2023 Assert.IsNotNull (ex.InnerException, "#5");
2025 // The RPC server is unavailable
2026 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
2027 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2028 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
2029 Assert.IsNotNull (win32Error.Message, "#8");
2030 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
2031 Assert.IsNull (win32Error.InnerException, "#10");
2036 public void ExecuteCommand_Parameter_Incorrect ()
2039 Assert.Ignore ("Running on Unix.");
2041 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2042 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2046 sc.ExecuteCommand (127);
2047 Assert.Fail ("#B1");
2048 } catch (InvalidOperationException ex) {
2049 // Cannot control XXX service on computer '.'
2050 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2051 Assert.IsNotNull (ex.Message, "#B3");
2052 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
2053 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
2054 Assert.IsNotNull (ex.InnerException, "#B6");
2056 // The parameter is incorrect
2057 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
2058 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2059 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
2060 Assert.IsNotNull (win32Error.Message, "#B9");
2061 Assert.AreEqual (87, win32Error.NativeErrorCode, "#B10");
2062 Assert.IsNull (win32Error.InnerException, "#B11");
2065 sc.ExecuteCommand (128);
2066 sc.ExecuteCommand (255);
2069 sc.ExecuteCommand (256);
2070 Assert.Fail ("#C1");
2071 } catch (InvalidOperationException ex) {
2072 // Cannot control XXX service on computer '.'
2073 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2074 Assert.IsNotNull (ex.Message, "#C3");
2075 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#C4");
2076 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
2077 Assert.IsNotNull (ex.InnerException, "#C6");
2079 // The parameter is incorrect
2080 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
2081 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2082 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
2083 Assert.IsNotNull (win32Error.Message, "#C9");
2084 Assert.AreEqual (87, win32Error.NativeErrorCode, "#C10");
2085 Assert.IsNull (win32Error.InnerException, "#C11");
2088 EnsureServiceIsRunning (sc);
2091 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#D");
2095 public void ExecuteCommand_Service_ContinuePending ()
2098 Assert.Ignore ("Running on Unix.");
2100 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2101 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2106 sc.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
2107 Assert.AreEqual (ServiceControllerStatus.Paused, sc.Status, "#B");
2111 sc.ExecuteCommand (128);
2114 sc.ExecuteCommand (127);
2115 Assert.Fail ("#C1");
2116 } catch (InvalidOperationException ex) {
2117 // Cannot control XXX service on computer '.'
2118 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2119 Assert.IsNotNull (ex.Message, "#C3");
2120 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#C4");
2121 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
2122 Assert.IsNotNull (ex.InnerException, "#C6");
2124 // The parameter is incorrect
2125 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
2126 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2127 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
2128 Assert.IsNotNull (win32Error.Message, "#C9");
2129 Assert.AreEqual (87, win32Error.NativeErrorCode, "#C10");
2130 Assert.IsNull (win32Error.InnerException, "#C11");
2133 EnsureServiceIsRunning (sc);
2136 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#E");
2140 public void ExecuteCommand_Service_ControlCodes ()
2143 Assert.Ignore ("Running on Unix.");
2145 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2146 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2150 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_CONTINUE);
2151 Assert.Fail ("#B1");
2152 } catch (InvalidOperationException ex) {
2153 // Cannot control XXX service on computer '.'
2154 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2155 Assert.IsNotNull (ex.Message, "#B3");
2156 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
2157 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
2158 Assert.IsNotNull (ex.InnerException, "#B6");
2161 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
2162 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2163 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
2164 Assert.IsNotNull (win32Error.Message, "#B9");
2165 Assert.AreEqual (5, win32Error.NativeErrorCode, "#B10");
2166 Assert.IsNull (win32Error.InnerException, "#B11");
2170 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_DEVICEEVENT);
2171 Assert.Fail ("#C1");
2172 } catch (InvalidOperationException ex) {
2173 // Cannot control XXX service on computer '.'
2174 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2175 Assert.IsNotNull (ex.Message, "#C3");
2176 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#C4");
2177 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
2178 Assert.IsNotNull (ex.InnerException, "#C6");
2180 // The parameter is incorrect
2181 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
2182 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2183 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
2184 Assert.IsNotNull (win32Error.Message, "#C9");
2185 Assert.AreEqual (87, win32Error.NativeErrorCode, "#C10");
2186 Assert.IsNull (win32Error.InnerException, "#C11");
2190 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_HARDWAREPROFILECHANGE);
2191 Assert.Fail ("#D1");
2192 } catch (InvalidOperationException ex) {
2193 // Cannot control XXX service on computer '.'
2194 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
2195 Assert.IsNotNull (ex.Message, "#D3");
2196 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#D4");
2197 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
2198 Assert.IsNotNull (ex.InnerException, "#D6");
2200 // The parameter is incorrect
2201 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
2202 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2203 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
2204 Assert.IsNotNull (win32Error.Message, "#D9");
2205 Assert.AreEqual (87, win32Error.NativeErrorCode, "#D10");
2206 Assert.IsNull (win32Error.InnerException, "#D11");
2210 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_INTERROGATE);
2211 Assert.Fail ("#E1");
2212 } catch (InvalidOperationException ex) {
2213 // Cannot control XXX service on computer '.'
2214 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
2215 Assert.IsNotNull (ex.Message, "#E3");
2216 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#E4");
2217 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#E5");
2218 Assert.IsNotNull (ex.InnerException, "#E6");
2221 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#E7");
2222 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2223 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#E8");
2224 Assert.IsNotNull (win32Error.Message, "#E9");
2225 Assert.AreEqual (5, win32Error.NativeErrorCode, "#E10");
2226 Assert.IsNull (win32Error.InnerException, "#E11");
2230 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDADD);
2231 Assert.Fail ("#F1");
2232 } catch (InvalidOperationException ex) {
2233 // Cannot control XXX service on computer '.'
2234 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
2235 Assert.IsNotNull (ex.Message, "#F3");
2236 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#F4");
2237 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#F5");
2238 Assert.IsNotNull (ex.InnerException, "#F6");
2241 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#F7");
2242 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2243 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#F8");
2244 Assert.IsNotNull (win32Error.Message, "#F9");
2245 Assert.AreEqual (5, win32Error.NativeErrorCode, "#F10");
2246 Assert.IsNull (win32Error.InnerException, "#F11");
2250 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDDISABLE);
2251 Assert.Fail ("#G1");
2252 } catch (InvalidOperationException ex) {
2253 // Cannot control XXX service on computer '.'
2254 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
2255 Assert.IsNotNull (ex.Message, "#G3");
2256 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#G4");
2257 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#G5");
2258 Assert.IsNotNull (ex.InnerException, "#G6");
2261 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#G7");
2262 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2263 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#G8");
2264 Assert.IsNotNull (win32Error.Message, "#G9");
2265 Assert.AreEqual (5, win32Error.NativeErrorCode, "#G10");
2266 Assert.IsNull (win32Error.InnerException, "#G11");
2270 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDENABLE);
2271 Assert.Fail ("#H1");
2272 } catch (InvalidOperationException ex) {
2273 // Cannot control XXX service on computer '.'
2274 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#H2");
2275 Assert.IsNotNull (ex.Message, "#H3");
2276 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#H4");
2277 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#H5");
2278 Assert.IsNotNull (ex.InnerException, "#H6");
2281 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#H7");
2282 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2283 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#H8");
2284 Assert.IsNotNull (win32Error.Message, "#H9");
2285 Assert.AreEqual (5, win32Error.NativeErrorCode, "#H10");
2286 Assert.IsNull (win32Error.InnerException, "#H11");
2290 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_NETBINDREMOVE);
2291 Assert.Fail ("#I1");
2292 } catch (InvalidOperationException ex) {
2293 // Cannot control XXX service on computer '.'
2294 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#I2");
2295 Assert.IsNotNull (ex.Message, "#I3");
2296 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#I4");
2297 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#I5");
2298 Assert.IsNotNull (ex.InnerException, "#I6");
2301 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#I7");
2302 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2303 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#I8");
2304 Assert.IsNotNull (win32Error.Message, "#I9");
2305 Assert.AreEqual (5, win32Error.NativeErrorCode, "#I10");
2306 Assert.IsNull (win32Error.InnerException, "#I11");
2310 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_PARAMCHANGE);
2311 Assert.Fail ("#J1");
2312 } catch (InvalidOperationException ex) {
2313 // Cannot control XXX service on computer '.'
2314 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#J2");
2315 Assert.IsNotNull (ex.Message, "#J3");
2316 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#J4");
2317 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#J5");
2318 Assert.IsNotNull (ex.InnerException, "#J6");
2321 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#J7");
2322 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2323 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#J8");
2324 Assert.IsNotNull (win32Error.Message, "#J9");
2325 Assert.AreEqual (5, win32Error.NativeErrorCode, "#J10");
2326 Assert.IsNull (win32Error.InnerException, "#J11");
2330 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_PAUSE);
2331 Assert.Fail ("#K1");
2332 } catch (InvalidOperationException ex) {
2333 // Cannot control XXX service on computer '.'
2334 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#K2");
2335 Assert.IsNotNull (ex.Message, "#K3");
2336 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#K4");
2337 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#K5");
2338 Assert.IsNotNull (ex.InnerException, "#K6");
2341 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#K7");
2342 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2343 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#K8");
2344 Assert.IsNotNull (win32Error.Message, "#K9");
2345 Assert.AreEqual (5, win32Error.NativeErrorCode, "#K10");
2346 Assert.IsNull (win32Error.InnerException, "#K11");
2350 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_POWEREVENT);
2351 Assert.Fail ("#L1");
2352 } catch (InvalidOperationException ex) {
2353 // Cannot control XXX service on computer '.'
2354 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#L2");
2355 Assert.IsNotNull (ex.Message, "#L3");
2356 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#L4");
2357 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#L5");
2358 Assert.IsNotNull (ex.InnerException, "#L6");
2361 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#L7");
2362 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2363 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#L8");
2364 Assert.IsNotNull (win32Error.Message, "#L9");
2365 Assert.AreEqual (87, win32Error.NativeErrorCode, "#L10");
2366 Assert.IsNull (win32Error.InnerException, "#L11");
2370 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_SESSIONCHANGE);
2371 Assert.Fail ("#M1");
2372 } catch (InvalidOperationException ex) {
2373 // Cannot control XXX service on computer '.'
2374 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#M2");
2375 Assert.IsNotNull (ex.Message, "#M3");
2376 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#M4");
2377 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#M5");
2378 Assert.IsNotNull (ex.InnerException, "#M6");
2380 // The parameter is incorrect
2381 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#M7");
2382 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2383 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#M8");
2384 Assert.IsNotNull (win32Error.Message, "#M9");
2385 Assert.AreEqual (87, win32Error.NativeErrorCode, "#M10");
2386 Assert.IsNull (win32Error.InnerException, "#M11");
2390 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_SHUTDOWN);
2391 Assert.Fail ("#N1");
2392 } catch (InvalidOperationException ex) {
2393 // Cannot control XXX service on computer '.'
2394 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#N2");
2395 Assert.IsNotNull (ex.Message, "#N3");
2396 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#N4");
2397 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#N5");
2398 Assert.IsNotNull (ex.InnerException, "#N6");
2400 // The parameter is incorrect
2401 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#N7");
2402 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2403 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#N8");
2404 Assert.IsNotNull (win32Error.Message, "#N9");
2405 Assert.AreEqual (87, win32Error.NativeErrorCode, "#N10");
2406 Assert.IsNull (win32Error.InnerException, "#N11");
2410 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_STOP);
2411 Assert.Fail ("#O1");
2412 } catch (InvalidOperationException ex) {
2413 // Cannot control XXX service on computer '.'
2414 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#O2");
2415 Assert.IsNotNull (ex.Message, "#O3");
2416 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#O4");
2417 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#O5");
2418 Assert.IsNotNull (ex.InnerException, "#O6");
2421 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#O7");
2422 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2423 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#O8");
2424 Assert.IsNotNull (win32Error.Message, "#O9");
2425 Assert.AreEqual (5, win32Error.NativeErrorCode, "#O10");
2426 Assert.IsNull (win32Error.InnerException, "#O11");
2429 EnsureServiceIsRunning (sc);
2432 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#P");
2436 public void ExecuteCommand_Service_DoesNotExist ()
2439 Assert.Ignore ("Running on Unix.");
2441 ServiceController sc = new ServiceController ("doesnotexist", ".");
2443 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_INTERROGATE);
2445 } catch (InvalidOperationException ex) {
2446 // Cannot open doesnotexist service on computer '.'
2447 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
2448 Assert.IsNotNull (ex.Message, "#3");
2449 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
2450 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
2451 Assert.IsNotNull (ex.InnerException, "#6");
2453 // The filename, directory name, or volume label is incorrect
2454 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
2455 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2456 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
2457 Assert.IsNotNull (win32Error.Message, "#9");
2458 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
2459 Assert.IsNull (win32Error.InnerException, "#11");
2464 public void ExecuteCommand_Service_Paused ()
2467 Assert.Ignore ("Running on Unix.");
2469 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2470 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2475 sc.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
2476 Assert.AreEqual (ServiceControllerStatus.Paused, sc.Status, "#B");
2477 sc.ExecuteCommand (154);
2479 Assert.AreEqual (ServiceControllerStatus.Paused, sc.Status, "#C");
2480 //sc.ExecuteCommand (127);
2482 EnsureServiceIsRunning (sc);
2485 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#D");
2489 public void ExecuteCommand_Service_PausePending ()
2492 Assert.Ignore ("Running on Unix.");
2494 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2495 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2500 sc.ExecuteCommand (128);
2503 sc.ExecuteCommand (127);
2504 Assert.Fail ("#B1");
2505 } catch (InvalidOperationException ex) {
2506 // Cannot control XXX service on computer '.'
2507 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2508 Assert.IsNotNull (ex.Message, "#B3");
2509 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
2510 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
2511 Assert.IsNotNull (ex.InnerException, "#B6");
2513 // The parameter is incorrect
2514 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
2515 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2516 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
2517 Assert.IsNotNull (win32Error.Message, "#B9");
2518 Assert.AreEqual (87, win32Error.NativeErrorCode, "#B10");
2519 Assert.IsNull (win32Error.InnerException, "#B11");
2522 EnsureServiceIsRunning (sc);
2525 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#C");
2529 public void ExecuteCommand_Service_StartPending ()
2532 Assert.Ignore ("Running on Unix.");
2534 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2535 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2540 sc.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
2541 Assert.AreEqual (ServiceControllerStatus.Stopped, sc.Status, "#B");
2546 sc.ExecuteCommand (127);
2547 Assert.Fail ("#C1");
2548 } catch (InvalidOperationException ex) {
2549 // Cannot control XXX service on computer '.'
2550 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2551 Assert.IsNotNull (ex.Message, "#C3");
2552 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#C4");
2553 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
2554 Assert.IsNotNull (ex.InnerException, "#C6");
2556 // The parameter is incorrect
2557 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
2558 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2559 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
2560 Assert.IsNotNull (win32Error.Message, "#C9");
2561 Assert.AreEqual (87, win32Error.NativeErrorCode, "#C10");
2562 Assert.IsNull (win32Error.InnerException, "#C11");
2566 sc.ExecuteCommand (128);
2567 Assert.Fail ("#D1");
2568 } catch (InvalidOperationException ex) {
2569 // Cannot control XXX service on computer '.'
2570 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
2571 Assert.IsNotNull (ex.Message, "#D3");
2572 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#D4");
2573 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
2574 Assert.IsNotNull (ex.InnerException, "#D6");
2576 // The service cannot accept control messages at this time
2577 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
2578 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2579 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
2580 Assert.IsNotNull (win32Error.Message, "#D9");
2581 Assert.AreEqual (1061, win32Error.NativeErrorCode, "#D10");
2582 Assert.IsNull (win32Error.InnerException, "#D11");
2585 EnsureServiceIsRunning (sc);
2588 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#D");
2592 public void ExecuteCommand_Service_Stopped ()
2595 Assert.Ignore ("Running on Unix.");
2597 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2598 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2603 sc.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
2604 Assert.AreEqual (ServiceControllerStatus.Stopped, sc.Status, "#B");
2607 sc.ExecuteCommand (127);
2608 Assert.Fail ("#C1");
2609 } catch (InvalidOperationException ex) {
2610 // Cannot control XXX service on computer '.'
2611 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2612 Assert.IsNotNull (ex.Message, "#C3");
2613 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#C4");
2614 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
2615 Assert.IsNotNull (ex.InnerException, "#C6");
2617 // The parameter is incorrect
2618 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
2619 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2620 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
2621 Assert.IsNotNull (win32Error.Message, "#C9");
2622 Assert.AreEqual (87, win32Error.NativeErrorCode, "#C10");
2623 Assert.IsNull (win32Error.InnerException, "#C11");
2627 sc.ExecuteCommand (128);
2628 Assert.Fail ("#D1");
2629 } catch (InvalidOperationException ex) {
2630 // Cannot control XXX service on computer '.'
2631 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
2632 Assert.IsNotNull (ex.Message, "#D3");
2633 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#D4");
2634 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
2635 Assert.IsNotNull (ex.InnerException, "#D6");
2637 // The service has not been started
2638 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
2639 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2640 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
2641 Assert.IsNotNull (win32Error.Message, "#D9");
2642 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#D10");
2643 Assert.IsNull (win32Error.InnerException, "#D11");
2646 EnsureServiceIsRunning (sc);
2649 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#E");
2653 public void ExecuteCommand_Service_StopPending ()
2656 Assert.Ignore ("Running on Unix.");
2658 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
2659 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A");
2665 sc.ExecuteCommand (127);
2666 Assert.Fail ("#B1");
2667 } catch (InvalidOperationException ex) {
2668 // Cannot control XXX service on computer '.'
2669 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2670 Assert.IsNotNull (ex.Message, "#B3");
2671 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
2672 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
2673 Assert.IsNotNull (ex.InnerException, "#B6");
2675 // The parameter is incorrect
2676 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
2677 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2678 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
2679 Assert.IsNotNull (win32Error.Message, "#B9");
2680 Assert.AreEqual (87, win32Error.NativeErrorCode, "#B10");
2681 Assert.IsNull (win32Error.InnerException, "#B11");
2685 sc.ExecuteCommand (128);
2686 Assert.Fail ("#C1");
2687 } catch (InvalidOperationException ex) {
2688 // Cannot control XXX service on computer '.'
2689 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2690 Assert.IsNotNull (ex.Message, "#C3");
2691 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#C4");
2692 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
2693 Assert.IsNotNull (ex.InnerException, "#C6");
2695 // The service cannot accept control messages at this time
2696 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
2697 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2698 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
2699 Assert.IsNotNull (win32Error.Message, "#C9");
2700 Assert.AreEqual (1061, win32Error.NativeErrorCode, "#C10");
2701 Assert.IsNull (win32Error.InnerException, "#C11");
2704 EnsureServiceIsRunning (sc);
2707 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#D");
2711 public void ExecuteCommand_ServiceName_Empty ()
2713 ServiceController sc = new ServiceController ();
2715 sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_INTERROGATE);
2717 } catch (ArgumentException ex) {
2718 // Service name contains invalid characters, is empty or is
2719 // too long (max length = 80)
2720 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2721 Assert.IsNotNull (ex.Message, "#3");
2722 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
2723 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
2724 Assert.IsNull (ex.ParamName, "#6");
2725 Assert.IsNull (ex.InnerException, "#7");
2730 public void GetDevices ()
2733 Assert.Ignore ("Running on Unix.");
2735 ServiceController [] devices = null;
2737 devices = ServiceController.GetDevices ();
2738 Assert.IsNotNull (devices, "#A1");
2740 bool foundKernelService = false;
2741 bool foundShareProcessService = false;
2743 foreach (ServiceController sc in devices) {
2744 if (sc.ServiceName.ToLower () == KERNEL_SERVICE.ServiceName.ToLower ()) {
2745 Assert.AreEqual (KERNEL_SERVICE.DisplayName, sc.DisplayName, "#A2");
2746 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#A3");
2747 foundKernelService = true;
2748 } else if (sc.ServiceName.ToLower () == SHARE_PROCESS_SERVICE.ServiceName.ToLower ()) {
2749 foundShareProcessService = true;
2753 Assert.IsTrue (foundKernelService, "#A4");
2754 Assert.IsFalse (foundShareProcessService, "#A5");
2756 devices = ServiceController.GetDevices (Environment.MachineName);
2757 Assert.IsNotNull (devices, "#B1");
2759 foundKernelService = false;
2760 foundShareProcessService = false;
2762 foreach (ServiceController sc in devices) {
2763 if (sc.ServiceName.ToLower () == KERNEL_SERVICE.ServiceName.ToLower ()) {
2764 Assert.AreEqual (KERNEL_SERVICE.DisplayName, sc.DisplayName, "#B2");
2765 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#B3");
2766 foundKernelService = true;
2767 } else if (sc.ServiceName.ToLower () == SHARE_PROCESS_SERVICE.ServiceName.ToLower ()) {
2768 foundShareProcessService = true;
2772 Assert.IsTrue (foundKernelService, "#B4");
2773 Assert.IsFalse (foundShareProcessService, "#B5");
2777 public void GetDevices_Machine_DoesNotExist ()
2780 Assert.Ignore ("Running on Unix.");
2783 ServiceController [] devices = ServiceController.GetDevices ("doesnotexist");
2784 Assert.Fail ("#1: " + devices.Length);
2785 } catch (InvalidOperationException ex) {
2786 // Cannot open Service Control Manager on computer 'doesnotexist'.
2787 // This operation might require other priviliges
2788 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
2789 Assert.IsNotNull (ex.Message, "#3");
2790 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
2791 Assert.IsNotNull (ex.InnerException, "#5");
2793 // The RPC server is unavailable
2794 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
2795 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2796 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
2797 Assert.IsNotNull (win32Error.Message, "#8");
2798 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
2799 Assert.IsNull (win32Error.InnerException, "#10");
2804 public void GetDevices_MachineName_Empty ()
2807 ServiceController.GetDevices (string.Empty);
2809 } catch (ArgumentException ex) {
2810 // MachineName value is invalid
2811 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2812 Assert.IsNotNull (ex.Message, "#3");
2813 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
2814 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
2815 Assert.IsNull (ex.ParamName, "#6");
2816 Assert.IsNull (ex.InnerException, "#7");
2821 public void GetDevices_MachineName_Null ()
2824 ServiceController.GetDevices (null);
2826 } catch (ArgumentException ex) {
2827 // MachineName value is invalid
2828 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2829 Assert.IsNotNull (ex.Message, "#3");
2830 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
2831 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
2832 Assert.IsNull (ex.ParamName, "#6");
2833 Assert.IsNull (ex.InnerException, "#7");
2838 public void GetServices ()
2841 Assert.Ignore ("Running on Unix.");
2843 ServiceController [] services = null;
2845 services = ServiceController.GetServices ();
2846 Assert.IsNotNull (services, "#A1");
2848 bool foundKernelService = false;
2849 bool foundShareProcessService = false;
2851 foreach (ServiceController sc in services) {
2852 if (sc.ServiceName.ToLower () == KERNEL_SERVICE.ServiceName.ToLower ()) {
2853 foundKernelService = true;
2854 } else if (sc.ServiceName.ToLower () == SHARE_PROCESS_SERVICE.ServiceName.ToLower ()) {
2855 foundShareProcessService = true;
2859 Assert.IsFalse (foundKernelService, "#A4");
2860 Assert.IsTrue (foundShareProcessService, "#A5");
2862 services = ServiceController.GetServices (Environment.MachineName);
2863 Assert.IsNotNull (services, "#B1");
2865 foundKernelService = false;
2866 foundShareProcessService = false;
2868 foreach (ServiceController sc in services) {
2869 if (sc.ServiceName.ToLower () == KERNEL_SERVICE.ServiceName.ToLower ()) {
2870 foundKernelService = true;
2871 } else if (sc.ServiceName.ToLower () == SHARE_PROCESS_SERVICE.ServiceName.ToLower ()) {
2872 Assert.AreEqual (SHARE_PROCESS_SERVICE.DisplayName, sc.DisplayName, "#B2");
2873 Assert.AreEqual (ServiceControllerStatus.Running, sc.Status, "#B3");
2874 foundShareProcessService = true;
2878 Assert.IsFalse (foundKernelService, "#B4");
2879 Assert.IsTrue (foundShareProcessService, "#B5");
2883 public void GetServices_Machine_DoesNotExist ()
2886 Assert.Ignore ("Running on Unix.");
2889 ServiceController [] services = ServiceController.GetServices ("doesnotexist");
2890 Assert.Fail ("#1: " + services.Length);
2891 } catch (InvalidOperationException ex) {
2892 // Cannot open Service Control Manager on computer 'doesnotexist'.
2893 // This operation might require other priviliges
2894 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
2895 Assert.IsNotNull (ex.Message, "#3");
2896 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
2897 Assert.IsNotNull (ex.InnerException, "#5");
2899 // The RPC server is unavailable
2900 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
2901 Win32Exception win32Error = (Win32Exception) ex.InnerException;
2902 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
2903 Assert.IsNotNull (win32Error.Message, "#8");
2904 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
2905 Assert.IsNull (win32Error.InnerException, "#10");
2910 public void GetServices_MachineName_Empty ()
2913 ServiceController.GetServices (string.Empty);
2915 } catch (ArgumentException ex) {
2916 // MachineName value is invalid
2917 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2918 Assert.IsNotNull (ex.Message, "#3");
2919 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
2920 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
2921 Assert.IsNull (ex.ParamName, "#6");
2922 Assert.IsNull (ex.InnerException, "#7");
2927 public void GetServices_MachineName_Null ()
2930 ServiceController.GetServices (null);
2932 } catch (ArgumentException ex) {
2933 // MachineName value is invalid
2934 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2935 Assert.IsNotNull (ex.Message, "#3");
2936 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
2937 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
2938 Assert.IsNull (ex.ParamName, "#6");
2939 Assert.IsNull (ex.InnerException, "#7");
2944 public void MachineName ()
2947 Assert.Ignore ("Running on Unix.");
2949 ServiceController sc = new ServiceController ();
2950 sc.ServiceName = WORKSTATION_SERVICE.ServiceName;
2951 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#A1");
2952 Assert.AreEqual (".", sc.MachineName, "#A2");
2953 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#A3");
2955 sc.MachineName = Environment.MachineName;
2956 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#B1");
2957 Assert.AreEqual (Environment.MachineName, sc.MachineName, "#B2");
2958 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#B3");
2960 sc.MachineName = "doesnotexist";
2961 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#C1");
2962 Assert.AreEqual ("doesnotexist", sc.MachineName, "#C2");
2963 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#C3");
2965 sc.MachineName = "DoesNotExist";
2966 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#D1");
2967 Assert.AreEqual ("DoesNotExist", sc.MachineName, "#D2");
2968 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#D3");
2972 public void MachineName_Empty ()
2975 Assert.Ignore ("Running on Unix.");
2977 ServiceController sc = new ServiceController ();
2978 sc.MachineName = Environment.MachineName;
2980 sc.MachineName = string.Empty;
2982 } catch (ArgumentException ex) {
2983 // MachineName value is invalid
2984 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2985 Assert.IsNotNull (ex.Message, "#3");
2986 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
2987 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
2988 Assert.IsNull (ex.ParamName, "#6");
2989 Assert.IsNull (ex.InnerException, "#7");
2991 Assert.AreEqual (Environment.MachineName, sc.MachineName, "#8");
2995 public void MachineName_Null ()
2998 Assert.Ignore ("Running on Unix.");
3000 ServiceController sc = new ServiceController ();
3001 sc.MachineName = Environment.MachineName;
3003 sc.MachineName = null;
3005 } catch (ArgumentException ex) {
3006 // MachineName value is invalid
3007 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
3008 Assert.IsNotNull (ex.Message, "#3");
3009 Assert.IsTrue (ex.Message.IndexOf ("MachineName") != -1, "#4");
3010 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#5");
3011 Assert.IsNull (ex.ParamName, "#6");
3012 Assert.IsNull (ex.InnerException, "#7");
3014 Assert.AreEqual (Environment.MachineName, sc.MachineName, "#8");
3018 public void Pause ()
3021 Assert.Ignore ("Running on Unix.");
3023 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3024 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3026 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3027 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3032 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
3033 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
3035 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
3037 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#C1");
3038 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
3040 EnsureServiceIsRunning (sc1);
3044 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#D1");
3045 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
3049 public void Pause_Machine_DoesNotExist ()
3052 Assert.Ignore ("Running on Unix.");
3054 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
3059 } catch (InvalidOperationException ex) {
3060 // Cannot open Service Control Manager on computer 'doesnotexist'.
3061 // This operation might require other priviliges
3062 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3063 Assert.IsNotNull (ex.Message, "#3");
3064 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
3065 Assert.IsNotNull (ex.InnerException, "#5");
3067 // The RPC server is unavailable
3068 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
3069 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3070 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
3071 Assert.IsNotNull (win32Error.Message, "#8");
3072 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
3073 Assert.IsNull (win32Error.InnerException, "#10");
3078 public void Pause_Service_Disabled ()
3081 Assert.Ignore ("Running on Unix.");
3083 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
3084 ServiceController sc2 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
3086 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#A1");
3087 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#A2");
3091 Assert.Fail ("#B1");
3092 } catch (InvalidOperationException ex) {
3093 // Cannot pause NetDDE service on computer '.'
3094 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
3095 Assert.IsNotNull (ex.Message, "#B3");
3096 Assert.IsTrue (ex.Message.IndexOf (DISABLED_SERVICE.ServiceName) != -1, "#B4");
3097 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
3098 Assert.IsNotNull (ex.InnerException, "#B6");
3100 // The service has not been started
3101 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
3102 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3103 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
3104 Assert.IsNotNull (win32Error.Message, "#B9");
3105 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#B10");
3106 Assert.IsNull (win32Error.InnerException, "#B11");
3109 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
3110 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#C2");
3114 public void Pause_Service_DoesNotExist ()
3117 Assert.Ignore ("Running on Unix.");
3119 ServiceController sc = new ServiceController ("doesnotexist", ".");
3123 } catch (InvalidOperationException ex) {
3124 // Cannot open doesnotexist service on computer '.'
3125 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3126 Assert.IsNotNull (ex.Message, "#3");
3127 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
3128 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
3129 Assert.IsNotNull (ex.InnerException, "#6");
3131 // The filename, directory name, or volume label is incorrect
3132 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
3133 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3134 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
3135 Assert.IsNotNull (win32Error.Message, "#9");
3136 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
3137 Assert.IsNull (win32Error.InnerException, "#11");
3142 public void Pause_Service_OperationNotValid ()
3145 Assert.Ignore ("Running on Unix.");
3147 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
3148 ServiceController sc2 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
3150 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3151 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3155 Assert.Fail ("#B1");
3156 } catch (InvalidOperationException ex) {
3157 // Cannot pause XXX service on computer '.'
3158 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
3159 Assert.IsNotNull (ex.Message, "#B3");
3160 Assert.IsTrue (ex.Message.IndexOf (UNCONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
3161 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
3162 Assert.IsNotNull (ex.InnerException, "#B6");
3164 // The requested control is not valid for this service
3165 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
3166 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3167 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
3168 Assert.IsNotNull (win32Error.Message, "#B9");
3169 Assert.AreEqual (1052, win32Error.NativeErrorCode, "#B10");
3170 Assert.IsNull (win32Error.InnerException, "#B11");
3173 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#C1");
3174 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
3178 public void Pause_Service_Paused ()
3181 Assert.Ignore ("Running on Unix.");
3183 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3184 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3186 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3187 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3192 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
3193 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
3195 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
3197 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#C1");
3198 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
3202 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#D1");
3203 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
3205 EnsureServiceIsRunning (sc1);
3209 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#E1");
3210 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
3214 public void Pause_Service_Stopped ()
3217 Assert.Ignore ("Running on Unix.");
3219 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3220 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3222 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3223 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3228 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
3229 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
3231 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
3233 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
3234 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
3237 Assert.Fail ("#D1");
3238 } catch (InvalidOperationException ex) {
3239 // Cannot pause XXX service on computer '.'
3240 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
3241 Assert.IsNotNull (ex.Message, "#D3");
3242 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#D4");
3243 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
3244 Assert.IsNotNull (ex.InnerException, "#D6");
3246 // The service has not been started
3247 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
3248 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3249 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
3250 Assert.IsNotNull (win32Error.Message, "#D9");
3251 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#D10");
3252 Assert.IsNull (win32Error.InnerException, "#D11");
3254 EnsureServiceIsRunning (sc1);
3258 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#E1");
3259 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
3263 public void Pause_ServiceName_Empty ()
3265 ServiceController sc = new ServiceController ();
3269 } catch (ArgumentException ex) {
3270 // Service name contains invalid characters, is empty or is
3271 // too long (max length = 80)
3272 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
3273 Assert.IsNotNull (ex.Message, "#3");
3274 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
3275 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
3276 Assert.IsNull (ex.ParamName, "#6");
3277 Assert.IsNull (ex.InnerException, "#7");
3282 public void Refresh ()
3285 Assert.Ignore ("Running on Unix.");
3287 ServiceController sc = null;
3288 ServiceController [] dependentServices = null;
3289 ServiceController [] servicesDependedOn = null;
3291 sc = new ServiceController (SERVICE_1_WITH_DEPENDENTS_AND_DEPENDED_ON.ServiceName, ".");
3292 dependentServices = sc.DependentServices;
3293 Assert.IsNotNull (dependentServices, "#A1");
3294 Assert.AreEqual (SERVICE_1_WITH_DEPENDENTS_AND_DEPENDED_ON.Dependents, ServiceNames (dependentServices), "#A2");
3295 servicesDependedOn = sc.ServicesDependedOn;
3296 Assert.AreEqual (SERVICE_1_WITH_DEPENDENTS_AND_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#A3");
3298 sc.ServiceName = SERVICE_2_WITH_DEPENDENTS_AND_DEPENDED_ON.ServiceName;
3301 dependentServices = sc.DependentServices;
3302 Assert.IsNotNull (dependentServices, "#B1");
3303 Assert.AreEqual (SERVICE_2_WITH_DEPENDENTS_AND_DEPENDED_ON.Dependents, ServiceNames (dependentServices), "#B2");
3304 servicesDependedOn = sc.ServicesDependedOn;
3305 Assert.IsNotNull (servicesDependedOn, "#B3");
3306 Assert.AreEqual (SERVICE_2_WITH_DEPENDENTS_AND_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#A4");
3308 sc.DisplayName = SERVICE_3_WITH_DEPENDENTS_AND_DEPENDED_ON.ServiceName;
3311 dependentServices = sc.DependentServices;
3312 Assert.IsNotNull (dependentServices, "#C1");
3313 Assert.AreEqual (SERVICE_3_WITH_DEPENDENTS_AND_DEPENDED_ON.Dependents, ServiceNames (dependentServices), "#C2");
3314 servicesDependedOn = sc.ServicesDependedOn;
3315 Assert.IsNotNull (servicesDependedOn, "#C3");
3316 Assert.AreEqual (SERVICE_3_WITH_DEPENDENTS_AND_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#C4");
3320 public void Refresh_Machine_DoesNotExist ()
3323 Assert.Ignore ("Running on Unix.");
3325 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
3331 public void Refresh_Service_DoesNotExist ()
3334 Assert.Ignore ("Running on Unix.");
3336 ServiceController sc = new ServiceController ("doesnotexist", ".");
3341 public void Refresh_Service_Paused ()
3344 Assert.Ignore ("Running on Unix.");
3346 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3347 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3349 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3350 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3355 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
3356 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
3360 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#C1");
3361 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
3363 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
3365 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#D1");
3366 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
3370 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#E1");
3371 Assert.AreEqual (ServiceControllerStatus.Paused, sc2.Status, "#E2");
3373 EnsureServiceIsRunning (sc1);
3377 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
3378 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
3382 public void Refresh_Service_Running ()
3385 Assert.Ignore ("Running on Unix.");
3387 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3388 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3390 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3391 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3396 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
3397 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
3399 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
3400 sc2.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
3402 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
3403 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#C2");
3407 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#D1");
3408 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#D2");
3412 Assert.AreEqual (ServiceControllerStatus.StartPending, sc1.Status, "#E1");
3413 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#E2");
3415 sc1.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
3417 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
3418 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#F2");
3422 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#G1");
3423 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#G2");
3425 EnsureServiceIsRunning (sc1);
3429 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#H1");
3430 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#H2");
3434 public void Refresh_Service_Stopped ()
3437 Assert.Ignore ("Running on Unix.");
3439 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3440 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
3442 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
3443 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
3448 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
3449 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
3451 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
3453 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#D1");
3454 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
3458 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#E1");
3459 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#E2");
3461 EnsureServiceIsRunning (sc1);
3465 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
3466 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
3470 public void Refresh_ServiceName_Empty ()
3473 Assert.Ignore ("Running on Unix.");
3475 ServiceController sc = new ServiceController ();
3480 public void ServiceName ()
3483 Assert.Ignore ("Running on Unix.");
3485 var s1 = WORKSTATION_SERVICE;
3486 var s2 = WINDOWS_SEARCH_SERVICE;
3488 ServiceController sc = new ServiceController ();
3489 sc.ServiceName = s1.ServiceName;
3490 Assert.AreEqual (s1.DisplayName, sc.DisplayName, "#A1");
3491 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#A2");
3493 sc.ServiceName = s2.ServiceName;
3494 Assert.AreEqual (s2.DisplayName, sc.DisplayName, "#B1");
3495 Assert.AreEqual (s2.ServiceName, sc.ServiceName, "#B2");
3497 sc = new ServiceController (s1.ServiceName);
3498 sc.ServiceName = s2.ServiceName;
3499 Assert.AreEqual (s2.ServiceName, sc.ServiceName, "#C1");
3500 Assert.AreEqual (s2.DisplayName, sc.DisplayName, "#C2");
3501 Assert.AreEqual (s2.DisplayName, sc.DisplayName, "#C3");
3503 sc.ServiceName = s2.ServiceName;
3504 Assert.AreEqual (s2.ServiceName, sc.ServiceName, "#D1");
3505 Assert.AreEqual (s2.DisplayName, sc.DisplayName, "#D2");
3507 sc.ServiceName = s1.ServiceName;
3508 Assert.AreEqual (s1.ServiceName, sc.ServiceName, "#E1");
3509 Assert.AreEqual (s1.DisplayName, sc.DisplayName, "#E2");
3511 sc = new ServiceController (s1.ServiceName.ToUpper ());
3512 Assert.AreEqual (s1.ServiceName.ToUpper (), sc.ServiceName, "#F1");
3513 Assert.AreEqual (s1.DisplayName, sc.DisplayName, "#F2");
3515 var serviceName = s1.ServiceName [0].ToString ().ToUpper () + s1.ServiceName.Substring (1).ToLower ();
3516 sc.ServiceName = serviceName;
3517 Assert.AreEqual (serviceName, sc.ServiceName, "#G1");
3518 Assert.AreEqual (s1.DisplayName, sc.DisplayName, "#G2");
3522 public void ServiceName_Machine_DoesNotExist ()
3525 Assert.Ignore ("Running on Unix.");
3527 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
3530 string serviceName = sc.ServiceName;
3531 Assert.Fail ("#1: " + serviceName);
3532 } catch (InvalidOperationException ex) {
3533 // Cannot open Service Control Manager on computer 'doesnotexist'.
3534 // This operation might require other priviliges
3535 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3536 Assert.IsNotNull (ex.Message, "#3");
3537 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
3538 Assert.IsNotNull (ex.InnerException, "#5");
3540 // The RPC server is unavailable
3541 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
3542 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3543 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
3544 Assert.IsNotNull (win32Error.Message, "#8");
3545 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
3546 Assert.IsNull (win32Error.InnerException, "#10");
3551 public void ServiceName_Service_Disabled ()
3554 Assert.Ignore ("Running on Unix.");
3556 ServiceController sc = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
3557 Assert.AreEqual (DISABLED_SERVICE.ServiceName, sc.ServiceName);
3561 public void ServiceName_Service_DoesNotExist ()
3564 Assert.Ignore ("Running on Unix.");
3566 ServiceController sc = new ServiceController ("doesnotexist", ".");
3568 string serviceName = sc.ServiceName;
3569 Assert.Fail ("#1: " + serviceName);
3570 } catch (InvalidOperationException ex) {
3571 // Cannot open doesnotexist service on computer '.'
3572 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3573 Assert.IsNotNull (ex.Message, "#3");
3574 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
3575 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
3576 Assert.IsNotNull (ex.InnerException, "#6");
3578 // The filename, directory name, or volume label is incorrect
3579 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
3580 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3581 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
3582 Assert.IsNotNull (win32Error.Message, "#9");
3583 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
3584 Assert.IsNull (win32Error.InnerException, "#11");
3589 public void ServiceName_DisplayName_Empty ()
3592 Assert.Ignore ("Running on Unix.");
3594 ServiceController sc = new ServiceController ();
3595 sc.ServiceName = WORKSTATION_SERVICE.ServiceName;
3596 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#1");
3597 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#2");
3601 public void ServiceName_Value_DoesNotExist ()
3604 Assert.Ignore ("Running on Unix.");
3606 ServiceController sc = new ServiceController ();
3607 sc.ServiceName = "doesnotexist";
3609 string displayName = sc.DisplayName;
3610 Assert.Fail ("#1: " + displayName);
3611 } catch (InvalidOperationException ex) {
3612 // Service doesnotexist was not found on computer '.'
3613 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3614 Assert.IsNotNull (ex.Message, "#3");
3615 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
3616 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
3617 Assert.IsNotNull (ex.InnerException, "#6");
3619 // The specified service does not exist as an installed service
3620 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
3621 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3622 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
3623 Assert.IsNotNull (win32Error.Message, "#9");
3624 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
3625 Assert.IsNull (win32Error.InnerException, "#11");
3627 Assert.AreEqual ("doesnotexist", sc.ServiceName, "#12");
3631 public void ServiceName_Value_Empty ()
3634 Assert.Ignore ("Running on Unix.");
3636 ServiceController sc = new ServiceController ();
3637 Assert.AreEqual (string.Empty, sc.DisplayName, "#A1");
3638 Assert.AreEqual (string.Empty, sc.ServiceName, "#A2");
3640 sc.ServiceName = WORKSTATION_SERVICE.ServiceName;
3642 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName, sc.DisplayName, "#B1");
3643 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#B2");
3646 sc.ServiceName = string.Empty;
3647 Assert.Fail ("#C1");
3648 } catch (ArgumentException ex) {
3649 // Service name contains invalid characters, is empty or is
3650 // too long (max length = 80)
3651 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
3652 Assert.IsNotNull (ex.Message, "#A3");
3653 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#A4");
3654 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#A5");
3655 Assert.IsNull (ex.ParamName, "#A6");
3656 Assert.IsNull (ex.InnerException, "#A7");
3661 public void ServiceName_Value_Null ()
3664 Assert.Ignore ("Running on Unix.");
3666 ServiceController sc = new ServiceController ();
3667 sc.ServiceName = WORKSTATION_SERVICE.ServiceName;
3669 sc.ServiceName = null;
3671 } catch (ArgumentNullException ex) {
3672 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
3673 Assert.IsNotNull (ex.Message, "#3");
3674 Assert.IsNotNull (ex.ParamName, "#4");
3675 Assert.AreEqual ("value", ex.ParamName, "#5");
3676 Assert.IsNull (ex.InnerException, "#6");
3679 Assert.AreEqual (WORKSTATION_SERVICE.ServiceName, sc.ServiceName, "#7");
3683 public void ServiceName_Value_DisplayName ()
3686 Assert.Ignore ("Running on Unix.");
3688 ServiceController sc = new ServiceController ();
3689 sc.ServiceName = WORKSTATION_SERVICE.DisplayName.ToLower ();
3691 string displayName = sc.DisplayName;
3692 Assert.Fail ("#1: " + displayName);
3693 } catch (InvalidOperationException ex) {
3694 // Display name could not be retrieved for service XXX
3696 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3697 Assert.IsNotNull (ex.Message, "#3");
3698 Assert.IsTrue (ex.Message.IndexOf (WORKSTATION_SERVICE.DisplayName.ToLower ()) != -1, "#4");
3699 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
3700 Assert.IsNotNull (ex.InnerException, "#6");
3702 // The specified service does not exist as an installed service
3703 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
3704 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3705 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
3706 Assert.IsNotNull (win32Error.Message, "#9");
3707 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
3708 Assert.IsNull (win32Error.InnerException, "#11");
3710 Assert.AreEqual (WORKSTATION_SERVICE.DisplayName.ToLower (), sc.ServiceName, "#12");
3714 public void ServicesDependedOn ()
3717 Assert.Ignore ("Running on Unix.");
3719 ServiceController sc = null;
3720 ServiceController [] servicesDependedOn = null;
3722 // single depended service
3723 sc = new ServiceController (SERVICE_WITH_ONE_DEPENDED_ON.ServiceName, ".");
3724 servicesDependedOn = sc.ServicesDependedOn;
3725 Assert.IsNotNull (servicesDependedOn, "#A1");
3726 Assert.AreEqual (1, servicesDependedOn.Length, "#A2");
3727 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#A3");
3729 // modifying ServiceName does not cause cache to be cleared:
3730 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3731 sc.ServiceName = SERVICE_WITH_NO_DEPENDED_ON.ServiceName;
3732 servicesDependedOn = sc.ServicesDependedOn;
3733 Assert.IsNotNull (servicesDependedOn, "#B1");
3734 Assert.AreEqual (1, servicesDependedOn.Length, "#B2");
3735 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#B3");
3737 // modifying DisplayName does not cause cache to be cleared:
3738 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3739 sc.DisplayName = SERVICE_WITH_MANY_DEPENDED_ON.DisplayName;
3740 servicesDependedOn = sc.ServicesDependedOn;
3741 Assert.IsNotNull (servicesDependedOn, "#C1");
3742 Assert.AreEqual (1, servicesDependedOn.Length, "#C2");
3743 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#C3");
3745 // modifying MachineName does not cause cache to be cleared:
3746 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3747 sc.MachineName = "doesnotexist";
3748 servicesDependedOn = sc.ServicesDependedOn;
3749 Assert.IsNotNull (servicesDependedOn, "#D1");
3750 Assert.AreEqual (1, servicesDependedOn.Length, "#D2");
3751 Assert.AreEqual (SERVICE_WITH_ONE_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#D3");
3753 // no depended services
3754 sc = new ServiceController (SERVICE_WITH_NO_DEPENDED_ON.ServiceName, ".");
3755 servicesDependedOn = sc.ServicesDependedOn;
3756 Assert.IsNotNull (servicesDependedOn, "#E1");
3757 Assert.AreEqual (0, servicesDependedOn.Length, "#E2");
3759 // modifying ServiceName does not cause cache to be cleared:
3760 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3761 sc.ServiceName = SERVICE_WITH_MANY_DEPENDED_ON.ServiceName;
3762 servicesDependedOn = sc.ServicesDependedOn;
3763 Assert.IsNotNull (servicesDependedOn, "#F1");
3764 Assert.AreEqual (0, servicesDependedOn.Length, "#F2");
3766 // modifying DisplayName does not cause cache to be cleared:
3767 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3768 sc.DisplayName = SERVICE_WITH_ONE_DEPENDED_ON.DisplayName;
3769 servicesDependedOn = sc.ServicesDependedOn;
3770 Assert.IsNotNull (servicesDependedOn, "#G1");
3771 Assert.AreEqual (0, servicesDependedOn.Length, "#G2");
3773 // modifying MachineName does not cause cache to be cleared:
3774 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3775 sc.MachineName = Environment.MachineName;
3776 servicesDependedOn = sc.ServicesDependedOn;
3777 Assert.IsNotNull (servicesDependedOn, "#H1");
3778 Assert.AreEqual (0, servicesDependedOn.Length, "#H2");
3780 // multiple depended services
3781 sc = new ServiceController (SERVICE_WITH_MANY_DEPENDED_ON.ServiceName, ".");
3782 servicesDependedOn = sc.ServicesDependedOn;
3783 Assert.IsNotNull (servicesDependedOn, "#I1");
3784 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn.Length, servicesDependedOn.Length, "#I2");
3785 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#I3");
3787 // modifying ServiceName does not cause cache to be cleared:
3788 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3789 sc.ServiceName = SERVICE_WITH_NO_DEPENDED_ON.ServiceName;
3790 servicesDependedOn = sc.ServicesDependedOn;
3791 Assert.IsNotNull (servicesDependedOn, "#J1");
3792 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn.Length, servicesDependedOn.Length, "#J2");
3793 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#J3");
3795 // modifying DisplayName does not cause cache to be cleared:
3796 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3797 sc.DisplayName = SERVICE_WITH_ONE_DEPENDED_ON.DisplayName;
3798 servicesDependedOn = sc.ServicesDependedOn;
3799 Assert.IsNotNull (servicesDependedOn, "#K1");
3800 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn.Length, servicesDependedOn.Length, "#K2");
3801 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#K3");
3803 // modifying MachineName does not cause cache to be cleared:
3804 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=201762
3805 sc.MachineName = Environment.MachineName;
3806 servicesDependedOn = sc.ServicesDependedOn;
3807 Assert.IsNotNull (servicesDependedOn, "#L1");
3808 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn.Length, servicesDependedOn.Length, "#L2");
3809 Assert.AreEqual (SERVICE_WITH_MANY_DEPENDED_ON.DependedOn, ServiceNames (servicesDependedOn), "#L3");
3813 public void ServicesDependedOn_Machine_DoesNotExist ()
3816 Assert.Ignore ("Running on Unix.");
3818 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
3821 ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
3822 Assert.Fail ("#1: " + servicesDependedOn.Length);
3823 } catch (InvalidOperationException ex) {
3824 // Cannot open Service Control Manager on computer 'doesnotexist'.
3825 // This operation might require other priviliges
3826 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3827 Assert.IsNotNull (ex.Message, "#3");
3828 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
3829 Assert.IsNotNull (ex.InnerException, "#5");
3831 // The RPC server is unavailable
3832 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
3833 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3834 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
3835 Assert.IsNotNull (win32Error.Message, "#8");
3836 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
3837 Assert.IsNull (win32Error.InnerException, "#10");
3842 public void ServicesDependedOn_Service_Disabled ()
3845 Assert.Ignore ("Running on Unix.");
3847 ServiceController sc = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
3848 ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
3849 Assert.IsNotNull (servicesDependedOn, "#1");
3850 Assert.AreEqual (DISABLED_SERVICE.DependedOn, ServiceNames (servicesDependedOn), "#2");
3854 public void ServicesDependedOn_Service_DoesNotExist ()
3857 Assert.Ignore ("Running on Unix.");
3859 ServiceController sc = new ServiceController ("doesnotexist", ".");
3861 ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
3862 Assert.Fail ("#1: " + servicesDependedOn.Length);
3863 } catch (InvalidOperationException ex) {
3864 // Cannot open doesnotexist service on computer '.'
3865 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3866 Assert.IsNotNull (ex.Message, "#3");
3867 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
3868 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
3869 Assert.IsNotNull (ex.InnerException, "#6");
3871 // The filename, directory name, or volume label is incorrect
3872 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
3873 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3874 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
3875 Assert.IsNotNull (win32Error.Message, "#9");
3876 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
3877 Assert.IsNull (win32Error.InnerException, "#11");
3882 public void ServicesDependedOn_ServiceName_Empty ()
3884 ServiceController sc = new ServiceController ();
3886 ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
3887 Assert.Fail ("#1: " + servicesDependedOn.Length);
3888 } catch (ArgumentException ex) {
3889 // Service name contains invalid characters, is empty or is
3890 // too long (max length = 80)
3891 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
3892 Assert.IsNotNull (ex.Message, "#3");
3893 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
3894 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
3895 Assert.IsNull (ex.ParamName, "#6");
3896 Assert.IsNull (ex.InnerException, "#7");
3901 public void ServiceTypeTest ()
3904 Assert.Ignore ("Running on Unix.");
3906 ServiceController sc = null;
3908 sc = new ServiceController (SHARE_PROCESS_SERVICE.ServiceName, ".");
3909 Assert.AreEqual (ServiceType.Win32ShareProcess, sc.ServiceType, "#A1");
3910 sc.ServiceName = KERNEL_SERVICE.ServiceName;
3911 Assert.AreEqual (ServiceType.KernelDriver, sc.ServiceType, "#A2");
3912 sc.DisplayName = SHARE_PROCESS_SERVICE.ServiceName;
3913 Assert.AreEqual (ServiceType.Win32ShareProcess, sc.ServiceType, "#A3");
3914 sc.MachineName = "doesnotexist";
3916 ServiceType serviceType = sc.ServiceType;
3917 Assert.Fail ("#A4: " + serviceType);
3918 } catch (InvalidOperationException ex) {
3919 // Cannot open Service Control Manager on computer 'doesnotexist'.
3920 // This operation might require other priviliges
3921 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A5");
3922 Assert.IsNotNull (ex.Message, "#A6");
3923 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#A7");
3924 Assert.IsNotNull (ex.InnerException, "#A8");
3926 // The RPC server is unavailable
3927 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#A9");
3928 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3929 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#A10");
3930 Assert.IsNotNull (win32Error.Message, "#A11");
3931 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#A12");
3932 Assert.IsNull (win32Error.InnerException, "#A13");
3935 sc = new ServiceController (KERNEL_SERVICE.ServiceName, ".");
3936 Assert.AreEqual (ServiceType.KernelDriver, sc.ServiceType, "#B1");
3937 sc.DisplayName = SHARE_PROCESS_SERVICE.DisplayName;
3938 Assert.AreEqual (ServiceType.Win32ShareProcess, sc.ServiceType, "#B2");
3939 sc.MachineName = Environment.MachineName;
3940 Assert.AreEqual (ServiceType.Win32ShareProcess, sc.ServiceType, "#B3");
3941 sc.ServiceName = KERNEL_SERVICE.ServiceName;
3942 Assert.AreEqual (ServiceType.KernelDriver, sc.ServiceType, "#B4");
3946 public void ServiceType_Machine_DoesNotExist ()
3949 Assert.Ignore ("Running on Unix.");
3951 ServiceController sc = new ServiceController (SHARE_PROCESS_SERVICE.ServiceName,
3954 ServiceType serviceType = sc.ServiceType;
3955 Assert.Fail ("#1: " + serviceType);
3956 } catch (InvalidOperationException ex) {
3957 // Cannot open Service Control Manager on computer 'doesnotexist'.
3958 // This operation might require other priviliges
3959 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3960 Assert.IsNotNull (ex.Message, "#3");
3961 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
3962 Assert.IsNotNull (ex.InnerException, "#5");
3964 // The RPC server is unavailable
3965 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
3966 Win32Exception win32Error = (Win32Exception) ex.InnerException;
3967 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
3968 Assert.IsNotNull (win32Error.Message, "#8");
3969 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
3970 Assert.IsNull (win32Error.InnerException, "#10");
3975 public void ServiceType_Service_Disabled ()
3978 Assert.Ignore ("Running on Unix.");
3980 ServiceController sc = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
3981 Assert.AreEqual (ServiceType.Win32ShareProcess, sc.ServiceType);
3985 public void ServiceType_Service_DoesNotExist ()
3988 Assert.Ignore ("Running on Unix.");
3990 ServiceController sc = new ServiceController ("doesnotexist", ".");
3992 ServiceType serviceType = sc.ServiceType;
3993 Assert.Fail ("#1: " + serviceType);
3994 } catch (InvalidOperationException ex) {
3995 // Cannot open doesnotexist service on computer '.'
3996 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
3997 Assert.IsNotNull (ex.Message, "#3");
3998 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
3999 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
4000 Assert.IsNotNull (ex.InnerException, "#6");
4002 // The filename, directory name, or volume label is incorrect
4003 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
4004 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4005 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
4006 Assert.IsNotNull (win32Error.Message, "#9");
4007 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
4008 Assert.IsNull (win32Error.InnerException, "#11");
4013 public void ServiceType_ServiceName_Empty ()
4016 Assert.Ignore ("Running on Unix.");
4018 ServiceController sc = null;
4020 sc = new ServiceController ();
4021 sc.DisplayName = SHARE_PROCESS_SERVICE.DisplayName.ToLower ();
4022 Assert.AreEqual (ServiceType.Win32ShareProcess, sc.ServiceType, "#1");
4024 sc = new ServiceController ();
4025 sc.DisplayName = KERNEL_SERVICE.DisplayName.ToLower ();
4026 Assert.AreEqual (ServiceType.KernelDriver, sc.ServiceType, "#2");
4030 public void Start ()
4032 // not sure if we need additional tests for this, as it's actually
4033 // tested as part of the other unit tests
4037 public void Status ()
4039 // not sure if we need additional tests for this, as it's actually
4040 // tested as part of the other unit tests
4047 Assert.Ignore ("Running on Unix.");
4049 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4050 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4052 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4053 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4058 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
4059 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
4061 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
4063 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
4064 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4066 EnsureServiceIsRunning (sc1);
4070 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#D1");
4071 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
4075 public void Stop_Machine_DoesNotExist ()
4078 Assert.Ignore ("Running on Unix.");
4080 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
4085 } catch (InvalidOperationException ex) {
4086 // Cannot open Service Control Manager on computer 'doesnotexist'.
4087 // This operation might require other priviliges
4088 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
4089 Assert.IsNotNull (ex.Message, "#3");
4090 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
4091 Assert.IsNotNull (ex.InnerException, "#5");
4093 // The RPC server is unavailable
4094 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
4095 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4096 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
4097 Assert.IsNotNull (win32Error.Message, "#8");
4098 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
4099 Assert.IsNull (win32Error.InnerException, "#10");
4104 public void Stop_Service_Disabled ()
4107 Assert.Ignore ("Running on Unix.");
4109 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
4110 ServiceController sc2 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
4112 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#A1");
4113 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#A2");
4117 Assert.Fail ("#B1");
4118 } catch (InvalidOperationException ex) {
4119 // Cannot stop NetDDE service on computer '.'
4120 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
4121 Assert.IsNotNull (ex.Message, "#B3");
4122 Assert.IsTrue (ex.Message.IndexOf (DISABLED_SERVICE.ServiceName) != -1, "#B4");
4123 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
4124 Assert.IsNotNull (ex.InnerException, "#B6");
4126 // The service has not been started
4127 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
4128 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4129 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
4130 Assert.IsNotNull (win32Error.Message, "#B9");
4131 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#B10");
4132 Assert.IsNull (win32Error.InnerException, "#B11");
4135 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
4136 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#C2");
4140 public void Stop_Service_DoesNotExist ()
4143 Assert.Ignore ("Running on Unix.");
4145 ServiceController sc = new ServiceController ("doesnotexist", ".");
4149 } catch (InvalidOperationException ex) {
4150 // Cannot open doesnotexist service on computer '.'
4151 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
4152 Assert.IsNotNull (ex.Message, "#3");
4153 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
4154 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
4155 Assert.IsNotNull (ex.InnerException, "#6");
4157 // The filename, directory name, or volume label is incorrect
4158 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
4159 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4160 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
4161 Assert.IsNotNull (win32Error.Message, "#9");
4162 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
4163 Assert.IsNull (win32Error.InnerException, "#11");
4168 public void Stop_Service_OperationNotValid ()
4171 Assert.Ignore ("Running on Unix.");
4173 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
4174 ServiceController sc2 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
4176 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4177 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4181 Assert.Fail ("#B1");
4182 } catch (InvalidOperationException ex) {
4183 // Cannot stop XXX service on computer '.'
4184 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
4185 Assert.IsNotNull (ex.Message, "#B3");
4186 Assert.IsTrue (ex.Message.IndexOf (UNCONTROLLABLE_SERVICE.ServiceName) != -1, "#B4");
4187 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
4188 Assert.IsNotNull (ex.InnerException, "#B6");
4190 // The requested control is not valid for this service
4191 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
4192 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4193 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
4194 Assert.IsNotNull (win32Error.Message, "#B9");
4195 Assert.AreEqual (1052, win32Error.NativeErrorCode, "#B10");
4196 Assert.IsNull (win32Error.InnerException, "#B11");
4199 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#C1");
4200 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4204 public void Stop_Service_Paused ()
4207 Assert.Ignore ("Running on Unix.");
4209 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4210 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4212 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4213 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4218 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
4219 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
4221 sc1.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
4223 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#C1");
4224 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4228 Assert.AreEqual (ServiceControllerStatus.Paused, sc1.Status, "#D1");
4229 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
4231 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
4233 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#E1");
4234 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
4236 EnsureServiceIsRunning (sc1);
4240 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
4241 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
4245 public void Stop_Service_Stopped ()
4248 Assert.Ignore ("Running on Unix.");
4250 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4251 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4253 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4254 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4259 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
4260 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
4262 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
4264 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
4265 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4268 Assert.Fail ("#D1");
4269 } catch (InvalidOperationException ex) {
4270 // Cannot stop XXX service on computer '.'
4271 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
4272 Assert.IsNotNull (ex.Message, "#D3");
4273 Assert.IsTrue (ex.Message.IndexOf (CONTROLLABLE_SERVICE.ServiceName) != -1, "#D4");
4274 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
4275 Assert.IsNotNull (ex.InnerException, "#D6");
4277 // The service has not been started
4278 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
4279 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4280 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
4281 Assert.IsNotNull (win32Error.Message, "#D9");
4282 Assert.AreEqual (1062, win32Error.NativeErrorCode, "#D10");
4283 Assert.IsNull (win32Error.InnerException, "#D11");
4285 EnsureServiceIsRunning (sc1);
4289 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#E1");
4290 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
4294 public void Stop_ServiceName_Empty ()
4296 ServiceController sc = new ServiceController ();
4300 } catch (ArgumentException ex) {
4301 // Service name contains invalid characters, is empty or is
4302 // too long (max length = 80)
4303 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
4304 Assert.IsNotNull (ex.Message, "#3");
4305 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
4306 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
4307 Assert.IsNull (ex.ParamName, "#6");
4308 Assert.IsNull (ex.InnerException, "#7");
4313 public void WaitForStatus ()
4316 Assert.Ignore ("Running on Unix.");
4318 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4319 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4321 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4322 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4327 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#B1");
4328 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#B2");
4330 sc1.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
4332 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
4333 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4335 sc1.WaitForStatus (ServiceControllerStatus.Stopped);
4337 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#D1");
4338 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
4342 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#D1");
4343 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#D2");
4345 sc1.WaitForStatus (ServiceControllerStatus.Running);
4347 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#E1");
4348 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#E2");
4350 EnsureServiceIsRunning (sc1);
4354 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#F1");
4355 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#F2");
4359 public void WaitForStatus_Machine_DoesNotExist ()
4362 Assert.Ignore ("Running on Unix.");
4364 ServiceController sc = new ServiceController (CONTROLLABLE_SERVICE.ServiceName,
4367 sc.WaitForStatus (ServiceControllerStatus.Stopped,
4368 new TimeSpan (0, 0, 1));
4370 } catch (InvalidOperationException ex) {
4371 // Cannot open Service Control Manager on computer 'doesnotexist'.
4372 // This operation might require other priviliges
4373 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
4374 Assert.IsNotNull (ex.Message, "#3");
4375 Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
4376 Assert.IsNotNull (ex.InnerException, "#5");
4378 // The RPC server is unavailable
4379 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#6");
4380 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4381 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#7");
4382 Assert.IsNotNull (win32Error.Message, "#8");
4383 Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
4384 Assert.IsNull (win32Error.InnerException, "#10");
4389 public void WaitForStatus_Service_Disabled ()
4392 Assert.Ignore ("Running on Unix.");
4394 ServiceController sc1 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
4395 ServiceController sc2 = new ServiceController (DISABLED_SERVICE.ServiceName, ".");
4397 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#A1");
4398 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#A2");
4400 sc1.WaitForStatus (ServiceControllerStatus.Stopped,
4401 new TimeSpan (0, 0, 1));
4404 sc1.WaitForStatus (ServiceControllerStatus.Running,
4405 new TimeSpan (0, 0, 1));
4406 Assert.Fail ("#B1");
4407 } catch (TimeoutException ex) {
4408 // Time out has expired and the operation has not been completed
4409 Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
4410 Assert.IsNotNull (ex.Data, "#B3");
4411 Assert.AreEqual (0, ex.Data.Count, "#B4");
4412 Assert.IsNotNull (ex.Message, "#B5");
4413 Assert.IsNull (ex.InnerException, "#B6");
4416 Assert.AreEqual (ServiceControllerStatus.Stopped, sc1.Status, "#C1");
4417 Assert.AreEqual (ServiceControllerStatus.Stopped, sc2.Status, "#C2");
4421 public void WaitForStatus_Service_DoesNotExist ()
4424 Assert.Ignore ("Running on Unix.");
4426 ServiceController sc = new ServiceController ("doesnotexist", ".");
4428 sc.WaitForStatus (ServiceControllerStatus.Stopped);
4430 } catch (InvalidOperationException ex) {
4431 // Cannot open doesnotexist service on computer '.'
4432 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
4433 Assert.IsNotNull (ex.Message, "#3");
4434 Assert.IsTrue (ex.Message.IndexOf ("doesnotexist") != -1, "#4");
4435 Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
4436 Assert.IsNotNull (ex.InnerException, "#6");
4438 // The filename, directory name, or volume label is incorrect
4439 Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
4440 Win32Exception win32Error = (Win32Exception) ex.InnerException;
4441 //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
4442 Assert.IsNotNull (win32Error.Message, "#9");
4443 Assert.AreEqual (1060, win32Error.NativeErrorCode, "#10");
4444 Assert.IsNull (win32Error.InnerException, "#11");
4449 public void WaitForStatus_Service_OperationNotValid ()
4452 Assert.Ignore ("Running on Unix.");
4454 ServiceController sc1 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
4455 ServiceController sc2 = new ServiceController (UNCONTROLLABLE_SERVICE.ServiceName, ".");
4457 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4458 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4460 sc1.WaitForStatus (ServiceControllerStatus.Running,
4461 new TimeSpan (0, 0, 1));
4464 sc1.WaitForStatus (ServiceControllerStatus.Stopped,
4465 new TimeSpan (0, 0, 1));
4466 Assert.Fail ("#B1");
4467 } catch (TimeoutException ex) {
4468 // Time out has expired and the operation has not been completed
4469 Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
4470 Assert.IsNotNull (ex.Data, "#B3");
4471 Assert.AreEqual (0, ex.Data.Count, "#B4");
4472 Assert.IsNotNull (ex.Message, "#B5");
4473 Assert.IsNull (ex.InnerException, "#B6");
4476 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#C1");
4477 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4481 public void WaitForStatus_ServiceName_Empty ()
4483 ServiceController sc = new ServiceController ();
4485 sc.WaitForStatus (ServiceControllerStatus.Stopped,
4486 new TimeSpan (0, 0, 1));
4488 } catch (ArgumentException ex) {
4489 // Service name contains invalid characters, is empty or is
4490 // too long (max length = 80)
4491 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
4492 Assert.IsNotNull (ex.Message, "#3");
4493 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
4494 Assert.IsTrue (ex.Message.IndexOf ("80") != -1, "#5");
4495 Assert.IsNull (ex.ParamName, "#6");
4496 Assert.IsNull (ex.InnerException, "#7");
4501 public void WaitForStatus_Timeout ()
4504 Assert.Ignore ("Running on Unix.");
4506 ServiceController sc1 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4507 ServiceController sc2 = new ServiceController (CONTROLLABLE_SERVICE.ServiceName, ".");
4509 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#A1");
4510 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#A2");
4513 sc1.WaitForStatus (ServiceControllerStatus.Stopped,
4514 new TimeSpan (0, 0, 1));
4515 Assert.Fail ("#B1");
4516 } catch (TimeoutException ex) {
4517 // Time out has expired and the operation has not been completed
4518 Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
4519 Assert.IsNotNull (ex.Data, "#B3");
4520 Assert.AreEqual (0, ex.Data.Count, "#B4");
4521 Assert.IsNotNull (ex.Message, "#B5");
4522 Assert.IsNull (ex.InnerException, "#B6");
4525 Assert.AreEqual (ServiceControllerStatus.Running, sc1.Status, "#C1");
4526 Assert.AreEqual (ServiceControllerStatus.Running, sc2.Status, "#C2");
4529 // Run this on .NET to generate ServiceInfo objects for services on the current machine
4531 public static void DumpServices ()
4533 foreach (ServiceController sc in ServiceController.GetServices ()) {
4535 var si = new ServiceInfo { ServiceName = sc.ServiceName, DisplayName = sc.DisplayName, ServiceType = sc.ServiceType, Dependents = ServiceNames (sc.DependentServices), DependedOn = ServiceNames (sc.ServicesDependedOn) };
4536 var l = new List<string> ();
4537 l.Add ($"ServiceName = \"{si.ServiceName}\"");
4538 l.Add ($"DisplayName = \"{si.DisplayName}\"");
4539 if (si.ServiceType != ServiceType.Win32ShareProcess)
4540 l.Add ($"ServiceType = ServiceType.{si.ServiceType}");
4541 if (si.Dependents.Length > 0)
4542 l.Add ("Dependents = new [] { \"" + String.Join ("\", \"", si.Dependents) + "\" }");
4543 if (si.DependedOn.Length > 0)
4544 l.Add ("DependedOn = new [] { \"" + String.Join ("\", \"", si.DependedOn) + "\" }");
4545 Console.WriteLine ("static ServiceInfo " + si.DisplayName.ToUpper ().Replace (' ', '_').Replace ('-', '_') + "_SERVICE = new ServiceInfo { " + String.Join (", ", l) + " };");
4551 private static void EnsureServiceIsRunning (ServiceController sc)
4554 switch (sc.Status) {
4555 case ServiceControllerStatus.ContinuePending:
4556 sc.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
4558 case ServiceControllerStatus.Paused:
4560 sc.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
4562 case ServiceControllerStatus.PausePending:
4563 sc.WaitForStatus (ServiceControllerStatus.Paused, new TimeSpan (0, 0, 5));
4565 sc.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
4567 case ServiceControllerStatus.StartPending:
4568 sc.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
4570 case ServiceControllerStatus.Stopped:
4572 sc.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
4574 case ServiceControllerStatus.StopPending:
4575 sc.WaitForStatus (ServiceControllerStatus.Stopped, new TimeSpan (0, 0, 5));
4577 sc.WaitForStatus (ServiceControllerStatus.Running, new TimeSpan (0, 0, 5));
4582 private static bool ContainsService (ServiceController [] services, string serviceName)
4584 for (int i = 0; i < services.Length; i++) {
4585 if (services [i].ServiceName == serviceName)
4591 private static string[] ServiceNames (ServiceController [] services)
4593 var result = new string [services.Length];
4594 for (var i = 0; i < result.Length; i++)
4595 result [i] = services [i].ServiceName.ToLower ();
4596 Array.Sort<string> (result);
4600 private bool RunningOnUnix
4603 int p = (int) Environment.OSVersion.Platform;
4604 return ((p == 4) || (p == 128) || (p == 6));
4608 private enum SERVICE_CONTROL_TYPE
4610 SERVICE_CONTROL_STOP = 0x1,
4611 SERVICE_CONTROL_PAUSE = 0x2,
4612 SERVICE_CONTROL_CONTINUE = 0x3,
4613 SERVICE_CONTROL_INTERROGATE = 0x4,
4614 SERVICE_CONTROL_SHUTDOWN = 0x5,
4615 SERVICE_CONTROL_PARAMCHANGE = 0x6,
4616 SERVICE_CONTROL_NETBINDADD = 0x7,
4617 SERVICE_CONTROL_NETBINDREMOVE = 0x8,
4618 SERVICE_CONTROL_NETBINDENABLE = 0x9,
4619 SERVICE_CONTROL_NETBINDDISABLE = 0xA,
4620 SERVICE_CONTROL_DEVICEEVENT = 0xB,
4621 SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0xC,
4622 SERVICE_CONTROL_POWEREVENT = 0xD,
4623 SERVICE_CONTROL_SESSIONCHANGE = 0xE