Exemplo n.º 1
0
 public static void AssertPropertyIsDefault(XmlServiceConfig desc, List <string> properties)
 {
     foreach (string prop in properties)
     {
         AssertPropertyIsDefault(desc, prop);
     }
 }
Exemplo n.º 2
0
        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]);
        }
Exemplo n.º 3
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)));
        }
Exemplo n.º 4
0
        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)));
        }
Exemplo n.º 5
0
        public void CanParseLogname()
        {
            const string seedXml = "<service>"
                                   + "<logname>MyTestApp</logname>"
                                   + "</service>";
            var serviceDescriptor = XmlServiceConfig.FromXML(seedXml);

            Assert.That(serviceDescriptor.LogName, Is.EqualTo("MyTestApp"));
        }
Exemplo n.º 6
0
        public void CanParseErrfileDisabled()
        {
            const string seedXml = "<service>"
                                   + "<errfiledisabled>true</errfiledisabled>"
                                   + "</service>";
            var serviceDescriptor = XmlServiceConfig.FromXML(seedXml);

            Assert.That(serviceDescriptor.Log.ErrFileDisabled, Is.True);
        }
Exemplo n.º 7
0
        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"));
        }
Exemplo n.º 8
0
        public void CanParseStopParentProcessFirst()
        {
            const string seedXml = "<service>"
                                   + "<stopparentprocessfirst>false</stopparentprocessfirst>"
                                   + "</service>";
            var serviceDescriptor = XmlServiceConfig.FromXML(seedXml);

            Assert.That(serviceDescriptor.StopParentProcessFirst, Is.False);
        }
Exemplo n.º 9
0
        // 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)));
        }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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));
        }
Exemplo n.º 14
0
        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"));
        }
Exemplo n.º 15
0
        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)));
        }
Exemplo n.º 16
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);
        }
Exemplo n.º 17
0
        /// <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));
        }
Exemplo n.º 18
0
        /// <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());
        }
Exemplo n.º 19
0
 public XmlLogSettings(XmlServiceConfig config)
 {
     this.config = config;
 }
Exemplo n.º 20
0
 public static void AssertAllOptionalPropertiesAreDefault(XmlServiceConfig desc)
 {
     AssertPropertyIsDefault(desc, AllOptionalProperties);
 }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
 public XmlServiceConfig ToServiceDescriptor(bool dumpConfig = false)
 {
     return(XmlServiceConfig.FromXML(this.ToXMLString(dumpConfig)));
 }