ServiceDescriptorTests.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using NUnit.Framework;
  2. using winsw;
  3. using System.Diagnostics;
  4. using System.Xml;
  5. namespace winswTests
  6. {
  7. using System;
  8. [TestFixture]
  9. public class ServiceDescriptorTests
  10. {
  11. private ServiceDescriptor extendedServiceDescriptor;
  12. private const string ExpectedWorkingDirectory = @"Z:\Path\SubPath";
  13. private const string Username = "User";
  14. private const string Password = "Password";
  15. private const string Domain = "Domain";
  16. [SetUp]
  17. public void SetUp()
  18. {
  19. const string SeedXml = "<service>"
  20. + "<id>service.exe</id>"
  21. + "<name>Service</name>"
  22. + "<description>The service.</description>"
  23. + "<executable>node.exe</executable>"
  24. + "<arguments>My Arguments</arguments>"
  25. + "<logmode>rotate</logmode>"
  26. + "<serviceaccount>"
  27. + "<domain>" + Domain + "</domain>"
  28. + "<user>" + Username + "</user>"
  29. + "<password>" + Password + "</password>"
  30. + "</serviceaccount>"
  31. + "<workingdirectory>"
  32. + ExpectedWorkingDirectory
  33. + "</workingdirectory>"
  34. + @"<logpath>C:\logs</logpath>"
  35. + "</service>";
  36. extendedServiceDescriptor = ServiceDescriptor.FromXML(SeedXml);
  37. }
  38. [Test]
  39. public void VerifyWorkingDirectory()
  40. {
  41. System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
  42. Assert.That(extendedServiceDescriptor.WorkingDirectory, Is.EqualTo(ExpectedWorkingDirectory));
  43. }
  44. [Test]
  45. public void VerifyUsername()
  46. {
  47. System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
  48. Assert.That(extendedServiceDescriptor.ServiceAccountUser, Is.EqualTo(Domain + "\\" + Username));
  49. }
  50. [Test]
  51. public void VerifyPassword()
  52. {
  53. System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
  54. Assert.That(extendedServiceDescriptor.ServiceAccountPassword, Is.EqualTo(Password));
  55. }
  56. [Test]
  57. public void Priority()
  58. {
  59. var sd = ServiceDescriptor.FromXML("<service><id>test</id><priority>normal</priority></service>");
  60. Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal));
  61. sd = ServiceDescriptor.FromXML("<service><id>test</id><priority>idle</priority></service>");
  62. Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Idle));
  63. sd = ServiceDescriptor.FromXML("<service><id>test</id></service>");
  64. Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal));
  65. }
  66. [Test]
  67. public void StopParentProcessFirstIsFalseByDefault()
  68. {
  69. Assert.False(extendedServiceDescriptor.StopParentProcessFirst);
  70. }
  71. [Test]
  72. public void CanParseStopParentProcessFirst()
  73. {
  74. const string SeedXml = "<service>"
  75. + "<stopparentprocessfirst>true</stopparentprocessfirst>"
  76. + "</service>";
  77. var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
  78. Assert.True(serviceDescriptor.StopParentProcessFirst);
  79. }
  80. [Test]
  81. public void CanParseStopTimeout()
  82. {
  83. const string SeedXml = "<service>"
  84. + "<stoptimeout>60sec</stoptimeout>"
  85. + "</service>";
  86. var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
  87. Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromSeconds(60)));
  88. }
  89. [Test]
  90. public void CanParseStopTimeoutFromMinutes()
  91. {
  92. const string SeedXml = "<service>"
  93. + "<stoptimeout>10min</stoptimeout>"
  94. + "</service>";
  95. var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
  96. Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromMinutes(10)));
  97. }
  98. [Test]
  99. public void LogModeRollBySize()
  100. {
  101. const string SeedXml = "<service>"
  102. + "<logpath>c:\\</logpath>"
  103. + "<log mode=\"roll-by-size\">"
  104. + "<sizeThreshold>112</sizeThreshold>"
  105. + "<keepFiles>113</keepFiles>"
  106. + "</log>"
  107. + "</service>";
  108. var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
  109. serviceDescriptor.BaseName = "service";
  110. var logHandler = serviceDescriptor.LogHandler as SizeBasedRollingLogAppender;
  111. Assert.NotNull(logHandler);
  112. Assert.That(logHandler.SizeTheshold, Is.EqualTo(112 * 1024));
  113. Assert.That(logHandler.FilesToKeep, Is.EqualTo(113));
  114. }
  115. [Test]
  116. public void LogModeRollByTime()
  117. {
  118. const string SeedXml = "<service>"
  119. + "<logpath>c:\\</logpath>"
  120. + "<log mode=\"roll-by-time\">"
  121. + "<period>7</period>"
  122. + "<pattern>log pattern</pattern>"
  123. + "</log>"
  124. + "</service>";
  125. var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
  126. serviceDescriptor.BaseName = "service";
  127. var logHandler = serviceDescriptor.LogHandler as TimeBasedRollingLogAppender;
  128. Assert.NotNull(logHandler);
  129. Assert.That(logHandler.Period, Is.EqualTo(7));
  130. Assert.That(logHandler.Pattern, Is.EqualTo("log pattern"));
  131. }
  132. }
  133. }