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")); } } }