mirror of https://github.com/winsw/winsw
Unit tests for PR #47 and minor refactoring
Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>pull/53/head
parent
9a09af2c17
commit
a2f4c7fc5b
|
@ -1,3 +1,6 @@
|
||||||
bin
|
bin
|
||||||
obj
|
obj
|
||||||
*.suo
|
*.suo
|
||||||
|
/UpgradeLog.htm
|
||||||
|
/winsw.csproj.DotSettings.user
|
||||||
|
/winsw.csproj.user
|
||||||
|
|
|
@ -163,6 +163,22 @@ namespace winsw
|
||||||
private string pattern;
|
private string pattern;
|
||||||
private int period;
|
private int period;
|
||||||
|
|
||||||
|
public string Pattern
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return pattern;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Period
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return period;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public TimeBasedRollingLogAppender(string logDirectory, string baseName, string pattern, int period)
|
public TimeBasedRollingLogAppender(string logDirectory, string baseName, string pattern, int period)
|
||||||
: base(logDirectory, baseName)
|
: base(logDirectory, baseName)
|
||||||
{
|
{
|
||||||
|
@ -241,6 +257,22 @@ namespace winsw
|
||||||
private int sizeThreshold;
|
private int sizeThreshold;
|
||||||
private int filesToKeep;
|
private int filesToKeep;
|
||||||
|
|
||||||
|
public int SizeTheshold
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return sizeThreshold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int FilesToKeep
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return filesToKeep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public SizeBasedRollingLogAppender(string logDirectory, string baseName, int sizeThreshold, int filesToKeep)
|
public SizeBasedRollingLogAppender(string logDirectory, string baseName, int sizeThreshold, int filesToKeep)
|
||||||
: base(logDirectory, baseName)
|
: base(logDirectory, baseName)
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,12 +51,10 @@ namespace winsw
|
||||||
|
|
||||||
process.WaitForExit((int)shutdownTimeout.TotalMilliseconds);
|
process.WaitForExit((int)shutdownTimeout.TotalMilliseconds);
|
||||||
|
|
||||||
return process.HasExited;
|
return process.HasExited;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,63 +1,65 @@
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using winsw;
|
using winsw;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
|
||||||
namespace winswTests
|
namespace winswTests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
using System;
|
||||||
public class ServiceDescriptorTests
|
|
||||||
{
|
[TestFixture]
|
||||||
|
public class ServiceDescriptorTests
|
||||||
private ServiceDescriptor extendedServiceDescriptor;
|
{
|
||||||
|
|
||||||
private const string ExpectedWorkingDirectory = @"Z:\Path\SubPath";
|
private ServiceDescriptor extendedServiceDescriptor;
|
||||||
private const string Username = "User";
|
|
||||||
private const string Password = "Password";
|
private const string ExpectedWorkingDirectory = @"Z:\Path\SubPath";
|
||||||
private const string Domain = "Domain";
|
private const string Username = "User";
|
||||||
|
private const string Password = "Password";
|
||||||
[SetUp]
|
private const string Domain = "Domain";
|
||||||
public void SetUp()
|
|
||||||
{
|
[SetUp]
|
||||||
const string SeedXml = "<service>"
|
public void SetUp()
|
||||||
+ "<id>service.exe</id>"
|
{
|
||||||
+ "<name>Service</name>"
|
const string SeedXml = "<service>"
|
||||||
+ "<description>The service.</description>"
|
+ "<id>service.exe</id>"
|
||||||
+ "<executable>node.exe</executable>"
|
+ "<name>Service</name>"
|
||||||
+ "<arguments>My Arguments</arguments>"
|
+ "<description>The service.</description>"
|
||||||
+ "<logmode>rotate</logmode>"
|
+ "<executable>node.exe</executable>"
|
||||||
+ "<serviceaccount>"
|
+ "<arguments>My Arguments</arguments>"
|
||||||
+ "<domain>" + Domain + "</domain>"
|
+ "<logmode>rotate</logmode>"
|
||||||
+ "<user>" + Username + "</user>"
|
+ "<serviceaccount>"
|
||||||
+ "<password>" + Password + "</password>"
|
+ "<domain>" + Domain + "</domain>"
|
||||||
+ "</serviceaccount>"
|
+ "<user>" + Username + "</user>"
|
||||||
+ "<workingdirectory>"
|
+ "<password>" + Password + "</password>"
|
||||||
+ ExpectedWorkingDirectory
|
+ "</serviceaccount>"
|
||||||
+ "</workingdirectory>"
|
+ "<workingdirectory>"
|
||||||
+ @"<logpath>C:\logs</logpath>"
|
+ ExpectedWorkingDirectory
|
||||||
|
+ "</workingdirectory>"
|
||||||
|
+ @"<logpath>C:\logs</logpath>"
|
||||||
+ "</service>";
|
+ "</service>";
|
||||||
extendedServiceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
extendedServiceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void VerifyWorkingDirectory()
|
public void VerifyWorkingDirectory()
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
|
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
|
||||||
Assert.That(extendedServiceDescriptor.WorkingDirectory, Is.EqualTo(ExpectedWorkingDirectory));
|
Assert.That(extendedServiceDescriptor.WorkingDirectory, Is.EqualTo(ExpectedWorkingDirectory));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void VerifyUsername()
|
public void VerifyUsername()
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
|
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
|
||||||
Assert.That(extendedServiceDescriptor.ServiceAccountUser, Is.EqualTo(Domain + "\\" + Username));
|
Assert.That(extendedServiceDescriptor.ServiceAccountUser, Is.EqualTo(Domain + "\\" + Username));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void VerifyPassword()
|
public void VerifyPassword()
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
|
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
|
||||||
Assert.That(extendedServiceDescriptor.ServiceAccountPassword, Is.EqualTo(Password));
|
Assert.That(extendedServiceDescriptor.ServiceAccountPassword, Is.EqualTo(Password));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -71,6 +73,85 @@ namespace winswTests
|
||||||
|
|
||||||
sd = ServiceDescriptor.FromXML("<service><id>test</id></service>");
|
sd = ServiceDescriptor.FromXML("<service><id>test</id></service>");
|
||||||
Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal));
|
Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
[Test]
|
||||||
|
public void StopParentProcessFirstIsFalseByDefault()
|
||||||
|
{
|
||||||
|
Assert.False(extendedServiceDescriptor.StopParentProcessFirst);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CanParseStopParentProcessFirst()
|
||||||
|
{
|
||||||
|
const string SeedXml = "<service>"
|
||||||
|
+ "<stopparentprocessfirst>true</stopparentprocessfirst>"
|
||||||
|
+ "</service>";
|
||||||
|
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
||||||
|
|
||||||
|
Assert.True(serviceDescriptor.StopParentProcessFirst);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CanParseStopTimeout()
|
||||||
|
{
|
||||||
|
const string SeedXml = "<service>"
|
||||||
|
+ "<stoptimeout>60sec</stoptimeout>"
|
||||||
|
+ "</service>";
|
||||||
|
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
||||||
|
|
||||||
|
Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromSeconds(60)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CanParseStopTimeoutFromMinutes()
|
||||||
|
{
|
||||||
|
const string SeedXml = "<service>"
|
||||||
|
+ "<stoptimeout>10min</stoptimeout>"
|
||||||
|
+ "</service>";
|
||||||
|
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
||||||
|
|
||||||
|
Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromMinutes(10)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void LogModeRollBySize()
|
||||||
|
{
|
||||||
|
const string SeedXml = "<service>"
|
||||||
|
+ "<logpath>c:\\</logpath>"
|
||||||
|
+ "<log mode=\"roll-by-size\">"
|
||||||
|
+ "<sizeThreshold>112</sizeThreshold>"
|
||||||
|
+ "<keepFiles>113</keepFiles>"
|
||||||
|
+ "</log>"
|
||||||
|
+ "</service>";
|
||||||
|
|
||||||
|
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
||||||
|
serviceDescriptor.BaseName = "service";
|
||||||
|
|
||||||
|
var logHandler = serviceDescriptor.LogHandler as SizeBasedRollingLogAppender;
|
||||||
|
Assert.NotNull(logHandler);
|
||||||
|
Assert.That(logHandler.SizeTheshold, Is.EqualTo(112 * 1024));
|
||||||
|
Assert.That(logHandler.FilesToKeep, Is.EqualTo(113));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void LogModeRollByTime()
|
||||||
|
{
|
||||||
|
const string SeedXml = "<service>"
|
||||||
|
+ "<logpath>c:\\</logpath>"
|
||||||
|
+ "<log mode=\"roll-by-time\">"
|
||||||
|
+ "<period>7</period>"
|
||||||
|
+ "<pattern>log pattern</pattern>"
|
||||||
|
+ "</log>"
|
||||||
|
+ "</service>";
|
||||||
|
|
||||||
|
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
|
||||||
|
serviceDescriptor.BaseName = "service";
|
||||||
|
|
||||||
|
var logHandler = serviceDescriptor.LogHandler as TimeBasedRollingLogAppender;
|
||||||
|
Assert.NotNull(logHandler);
|
||||||
|
Assert.That(logHandler.Period, Is.EqualTo(7));
|
||||||
|
Assert.That(logHandler.Pattern, Is.EqualTo("log pattern"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue