public static void AssertPropertyIsDefault(XmlServiceConfig desc, List <string> properties) { foreach (string prop in properties) { AssertPropertyIsDefault(desc, prop); } }
private Download GetSingleEntry(XmlServiceConfig sd) { var downloads = sd.Downloads.ToArray(); Assert.That(downloads.Length, Is.EqualTo(1), "Service Descriptor is expected to have only one entry"); return(downloads[0]); }
public void CanParseStopTimeout() { const string seedXml = "<service>" + "<stoptimeout>60sec</stoptimeout>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromSeconds(60))); }
public void CanParseStopTimeoutFromMinutes() { const string seedXml = "<service>" + "<stoptimeout>10min</stoptimeout>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.StopTimeout, Is.EqualTo(TimeSpan.FromMinutes(10))); }
public void CanParseLogname() { const string seedXml = "<service>" + "<logname>MyTestApp</logname>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.LogName, Is.EqualTo("MyTestApp")); }
public void CanParseErrfileDisabled() { const string seedXml = "<service>" + "<errfiledisabled>true</errfiledisabled>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.Log.ErrFileDisabled, Is.True); }
public void CanParseErrfilePattern() { const string seedXml = "<service>" + "<errfilepattern>.err.test.log</errfilepattern>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.Log.ErrFilePattern, Is.EqualTo(".err.test.log")); }
public void CanParseStopParentProcessFirst() { const string seedXml = "<service>" + "<stopparentprocessfirst>false</stopparentprocessfirst>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.StopParentProcessFirst, Is.False); }
// TODO: convert to Extension attributes once the .NET dependency is upgraded // BTW there is a way to get them working in .NET2, but KISS public static void AssertPropertyIsDefault(XmlServiceConfig desc, string property) { var actualProperty = typeof(XmlServiceConfig).GetProperty(property); Assert.That(actualProperty, Is.Not.Null); var defaultProperty = typeof(DefaultSettings).GetProperty(property); Assert.That(defaultProperty, Is.Not.Null); Assert.That(actualProperty.GetValue(desc, null), Is.EqualTo(defaultProperty.GetValue(XmlServiceConfig.Defaults, null))); }
public void Priority() { var sd = XmlServiceConfig.FromXML("<service><id>test</id><priority>normal</priority></service>"); Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal)); sd = XmlServiceConfig.FromXML("<service><id>test</id><priority>idle</priority></service>"); Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Idle)); sd = XmlServiceConfig.FromXML("<service><id>test</id></service>"); Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal)); }
public void VerifyServiceLogonRightOmitted() { const string seedXml = "<service>" + "<serviceaccount>" + "<domain>" + Domain + "</domain>" + "<user>" + Username + "</user>" + "<password>" + Password + "</password>" + "</serviceaccount>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); Assert.That(serviceDescriptor.ServiceAccount.AllowServiceLogonRight, Is.False); }
public void SetUp() { string seedXml = $@"<service> <id>SERVICE_NAME</id> <name>Jenkins Slave</name> <description>This service runs a slave for Jenkins continuous integration system.</description> <executable>C:\Program Files\Java\jre7\bin\java.exe</executable> <arguments>-Xrs -jar \""%BASE%\slave.jar\"" -jnlpUrl ...</arguments> <log mode=""roll""></log> <extensions> <extension enabled=""true"" className=""{this.testExtension}"" id=""killRunawayProcess""> <pidfile>foo/bar/pid.txt</pidfile> <stopTimeout>5000</stopTimeout> <stopParentFirst>true</stopParentFirst> </extension> </extensions> </service>"; this._testServiceDescriptor = XmlServiceConfig.FromXML(seedXml); string seedYaml = $@"--- id: jenkins name: Jenkins description: This service runs Jenkins automation server. env: - name: JENKINS_HOME value: '%LocalAppData%\Jenkins.jenkins' executable: java arguments: >- -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar E:\Winsw Test\yml6\jenkins.war --httpPort=8081 extensions: - id: killRunawayProcess enabled: yes className: ""{this.testExtension}"" settings: pidFile: 'foo/bar/pid.txt' stopTimeout: 5000 stopParentFirst: true"; this._testServiceDescriptorYaml = YamlServiceConfig.FromYaml(seedYaml); }
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 = XmlServiceConfig.FromXML(seedXml); serviceDescriptor.BaseName = "service"; var logHandler = serviceDescriptor.Log.CreateLogHandler() as SizeBasedRollingLogAppender; Assert.That(logHandler, Is.Not.Null); Assert.That(logHandler.SizeTheshold, Is.EqualTo(112 * 1024)); Assert.That(logHandler.FilesToKeep, Is.EqualTo(113)); }
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 = XmlServiceConfig.FromXML(seedXml); serviceDescriptor.BaseName = "service"; var logHandler = serviceDescriptor.Log.CreateLogHandler() as TimeBasedRollingLogAppender; Assert.That(logHandler, Is.Not.Null); Assert.That(logHandler.Period, Is.EqualTo(7)); Assert.That(logHandler.Pattern, Is.EqualTo("log pattern")); }
public void LogModeRollBySizeTime() { const string seedXml = "<service>" + "<logpath>c:\\</logpath>" + "<log mode=\"roll-by-size-time\">" + "<sizeThreshold>10240</sizeThreshold>" + "<pattern>yyyy-MM-dd</pattern>" + "<autoRollAtTime>00:00:00</autoRollAtTime>" + "</log>" + "</service>"; var serviceDescriptor = XmlServiceConfig.FromXML(seedXml); serviceDescriptor.BaseName = "service"; var logHandler = serviceDescriptor.Log.CreateLogHandler() as RollingSizeTimeLogAppender; Assert.That(logHandler, Is.Not.Null); Assert.That(logHandler.SizeTheshold, Is.EqualTo(10240 * 1024)); Assert.That(logHandler.FilePattern, Is.EqualTo("yyyy-MM-dd")); Assert.That(logHandler.AutoRollAtTime, Is.EqualTo((TimeSpan?)new TimeSpan(0, 0, 0))); }
public void SetUp() { string seedXml = $@"<service> <id>service.exe</id> <name>Service</name> <description>The service.</description> <executable>node.exe</executable> <arguments>My Arguments</arguments> <log mode=""roll""></log> <serviceaccount> <domain>{Domain}</domain> <user>{Username}</user> <password>{Password}</password> <allowservicelogon>{AllowServiceAccountLogonRight}</allowservicelogon> </serviceaccount> <workingdirectory>{ExpectedWorkingDirectory}</workingdirectory> <logpath>C:\logs</logpath> </service>"; this._extendedServiceDescriptor = XmlServiceConfig.FromXML(seedXml); }
/// <summary> /// Runs a simle test, which returns the output CLI /// </summary> /// <param name="arguments">CLI arguments to be passed</param> /// <param name="descriptor">Optional Service descriptor (will be used for initializationpurposes)</param> /// <returns>Test results</returns> public static CLITestResult CLIErrorTest(string[] arguments, XmlServiceConfig descriptor = null) { Exception testEx = null; var tmpOut = Console.Out; var tmpErr = Console.Error; using var swOut = new StringWriter(); using var swErr = new StringWriter(); Console.SetOut(swOut); Console.SetError(swErr); try { Program.Run(arguments, descriptor ?? DefaultServiceDescriptor); } catch (Exception ex) { testEx = ex; } finally { Console.SetOut(tmpOut); Console.SetError(tmpErr); } Console.WriteLine("\n>>> Output: "); Console.Write(swOut.ToString()); Console.WriteLine("\n>>> Error: "); Console.Write(swErr.ToString()); if (testEx != null) { Console.WriteLine("\n>>> Exception: "); Console.WriteLine(testEx); } return(new CLITestResult(swOut.ToString(), swErr.ToString(), testEx)); }
/// <summary> /// Runs a simle test, which returns the output CLI /// </summary> /// <param name="arguments">CLI arguments to be passed</param> /// <param name="descriptor">Optional Service descriptor (will be used for initializationpurposes)</param> /// <returns>STDOUT if there's no exceptions</returns> /// <exception cref="Exception">Command failure</exception> public static string CLITest(string[] arguments, XmlServiceConfig descriptor = null) { var tmpOut = Console.Out; var tmpErr = Console.Error; using var swOut = new StringWriter(); using var swErr = new StringWriter(); Console.SetOut(swOut); Console.SetError(swErr); try { Program.Run(arguments, descriptor ?? DefaultServiceDescriptor); } finally { Console.SetOut(tmpOut); Console.SetError(tmpErr); } Assert.That(swErr.GetStringBuilder().Length, Is.Zero); Console.Write(swOut.ToString()); return(swOut.ToString()); }
public XmlLogSettings(XmlServiceConfig config) { this.config = config; }
public static void AssertAllOptionalPropertiesAreDefault(XmlServiceConfig desc) { AssertPropertyIsDefault(desc, AllOptionalProperties); }
public void SetUp() { string seedXml = $@"<service> <id>SERVICE_NAME</id> <name>Jenkins Slave</name> <description>This service runs a slave for Jenkins continuous integration system.</description> <executable>C:\Program Files\Java\jre7\bin\java.exe</executable> <arguments>-Xrs -jar \""%BASE%\slave.jar\"" -jnlpUrl ...</arguments> <log mode=""roll""></log> <extensions> <extension enabled=""true"" className=""{this.testExtension}"" id=""mapNetworDirs""> <mapping> <map enabled=""false"" label=""N:"" uncpath=""\\UNC""/> <map enabled=""false"" label=""M:"" uncpath=""\\UNC2""/> </mapping> </extension> <extension enabled=""true"" className=""{this.testExtension}"" id=""mapNetworDirs2""> <mapping> <map enabled=""false"" label=""X:"" uncpath=""\\UNC""/> <map enabled=""false"" label=""Y:"" uncpath=""\\UNC2""/> </mapping> </extension> </extensions> </service>"; this._testServiceDescriptor = XmlServiceConfig.FromXML(seedXml); string seedYaml = $@"--- id: jenkins name: Jenkins description: This service runs Jenkins automation server. env: - name: JENKINS_HOME value: '%LocalAppData%\Jenkins.jenkins' executable: java arguments: >- -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar E:\Winsw Test\yml6\jenkins.war --httpPort=8081 extensions: - id: mapNetworDirs className: ""{this.testExtension}"" enabled: true settings: mapping: - enabled: false label: N uncPath: \\UNC - enabled: false label: M uncPath: \\UNC2 - id: mapNetworDirs2 className: ""{this.testExtension}"" enabled: true settings: mapping: - enabled: false label: X uncPath: \\UNC - enabled: false label: Y uncPath: \\UNC2"; this._testServiceDescriptorYaml = YamlServiceConfig.FromYaml(seedYaml); }
public XmlServiceConfig ToServiceDescriptor(bool dumpConfig = false) { return(XmlServiceConfig.FromXML(this.ToXMLString(dumpConfig))); }