using NUnit.Framework;
using winsw;
using System.Diagnostics;
using System.Xml;
namespace winswTests
{
using System;
[TestFixture]
public class ServiceDescriptorTests
{
private ServiceDescriptor extendedServiceDescriptor;
private const string ExpectedWorkingDirectory = @"Z:\Path\SubPath";
private const string Username = "User";
private const string Password = "Password";
private const string Domain = "Domain";
[SetUp]
public void SetUp()
{
const string SeedXml = ""
+ "service.exe"
+ "Service"
+ "The service."
+ "node.exe"
+ "My Arguments"
+ "rotate"
+ ""
+ "" + Domain + ""
+ "" + Username + ""
+ "" + Password + ""
+ ""
+ ""
+ ExpectedWorkingDirectory
+ ""
+ @"C:\logs"
+ "";
extendedServiceDescriptor = ServiceDescriptor.FromXML(SeedXml);
}
[Test]
public void VerifyWorkingDirectory()
{
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
Assert.That(extendedServiceDescriptor.WorkingDirectory, Is.EqualTo(ExpectedWorkingDirectory));
}
[Test]
public void VerifyUsername()
{
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
Assert.That(extendedServiceDescriptor.ServiceAccountUser, Is.EqualTo(Domain + "\\" + Username));
}
[Test]
public void VerifyPassword()
{
System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory);
Assert.That(extendedServiceDescriptor.ServiceAccountPassword, Is.EqualTo(Password));
}
[Test]
public void Priority()
{
var sd = ServiceDescriptor.FromXML("testnormal");
Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal));
sd = ServiceDescriptor.FromXML("testidle");
Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Idle));
sd = ServiceDescriptor.FromXML("test");
Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal));
}
[Test]
public void StopParentProcessFirstIsFalseByDefault()
{
Assert.False(extendedServiceDescriptor.StopParentProcessFirst);
}
[Test]
public void CanParseStopParentProcessFirst()
{
const string SeedXml = ""
+ "true"
+ "";
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
Assert.True(serviceDescriptor.StopParentProcessFirst);
}
[Test]
public void CanParseStopTimeout()
{
const string SeedXml = ""
+ "60sec"
+ "";
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromSeconds(60)));
}
[Test]
public void CanParseStopTimeoutFromMinutes()
{
const string SeedXml = ""
+ "10min"
+ "";
var serviceDescriptor = ServiceDescriptor.FromXML(SeedXml);
Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromMinutes(10)));
}
[Test]
public void LogModeRollBySize()
{
const string SeedXml = ""
+ "c:\\"
+ ""
+ "112"
+ "113"
+ ""
+ "";
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 = ""
+ "c:\\"
+ ""
+ "7"
+ "log pattern"
+ ""
+ "";
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"));
}
}
}