mirror of https://github.com/winsw/winsw
				
				
				
			
							parent
							
								
									7359e59e81
								
							
						
					
					
						commit
						a4ee776bcc
					
				
							
								
								
									
										4
									
								
								Main.cs
								
								
								
								
							
							
						
						
									
										4
									
								
								Main.cs
								
								
								
								
							|  | @ -421,6 +421,10 @@ namespace winsw | |||
|             process.Start(); | ||||
|             WriteEvent("Started " + process.Id); | ||||
| 
 | ||||
|             var priority = descriptor.Priority; | ||||
|             if (priority != ProcessPriorityClass.Normal) | ||||
|                 process.PriorityClass = priority; | ||||
| 
 | ||||
|             // monitor the completion of the process | ||||
|             StartThread(delegate() | ||||
|             { | ||||
|  |  | |||
|  | @ -72,6 +72,21 @@ namespace winsw | |||
|             dom.Load(BasePath + ".xml"); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Loads descriptor from existing DOM | ||||
|         /// </summary> | ||||
|         public ServiceDescriptor(XmlDocument dom) | ||||
|         { | ||||
|             this.dom = dom; | ||||
|         } | ||||
| 
 | ||||
|         public static ServiceDescriptor FromXML(string xml) | ||||
|         { | ||||
|             var dom = new XmlDocument(); | ||||
|             dom.LoadXml(xml); | ||||
|             return new ServiceDescriptor(dom); | ||||
|         } | ||||
| 
 | ||||
|         private string SingleElement(string tagName) | ||||
|         { | ||||
|             return SingleElement(tagName, false); | ||||
|  | @ -571,5 +586,19 @@ namespace winsw | |||
|                 return SingleTimeSpanElement(dom, "stoptimeout", TimeSpan.FromSeconds(15)); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Desired process priority or null if not specified. | ||||
|         /// </summary> | ||||
|         public ProcessPriorityClass Priority | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 var p = SingleElement("priority",true); | ||||
|                 if (p == null) return ProcessPriorityClass.Normal;  // default value | ||||
| 
 | ||||
|                 return (ProcessPriorityClass)Enum.Parse(typeof(ProcessPriorityClass), p, true); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,29 +1,15 @@ | |||
| using NUnit.Framework; | ||||
| using winsw; | ||||
| using winsw; | ||||
| using System.Diagnostics; | ||||
| using System.Xml; | ||||
| 
 | ||||
| namespace winswTests | ||||
| { | ||||
| 
 | ||||
|     public class ServiceDescriptorExtended : ServiceDescriptor | ||||
|     { | ||||
| 
 | ||||
|         public ServiceDescriptorExtended(string descriptorXml) | ||||
|         { | ||||
|             LoadTestXml(descriptorXml); | ||||
|         } | ||||
| 
 | ||||
|         private void LoadTestXml(string xml) | ||||
|         { | ||||
|             dom.LoadXml(xml); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     [TestFixture] | ||||
|     public class ServiceDescriptorTests | ||||
|     { | ||||
| 
 | ||||
|         private ServiceDescriptorExtended extendedServiceDescriptor; | ||||
|         private ServiceDescriptor extendedServiceDescriptor; | ||||
| 
 | ||||
|         private const string ExpectedWorkingDirectory = @"Z:\Path\SubPath"; | ||||
|         private const string Username = "User"; | ||||
|  | @ -49,9 +35,8 @@ namespace winswTests | |||
|                                    + ExpectedWorkingDirectory | ||||
|                                    + "</workingdirectory>" | ||||
|                                    + @"<logpath>C:\logs</logpath>" | ||||
|                                    + "</service>"; | ||||
| 
 | ||||
|             extendedServiceDescriptor = new ServiceDescriptorExtended(SeedXml); | ||||
|                                    + "</service>"; | ||||
|             extendedServiceDescriptor = ServiceDescriptor.FromXML(SeedXml); | ||||
|         } | ||||
| 
 | ||||
|         [Test] | ||||
|  | @ -73,6 +58,19 @@ namespace winswTests | |||
|         { | ||||
|             System.Diagnostics.Debug.WriteLine("_extendedServiceDescriptor.WorkingDirectory :: " + extendedServiceDescriptor.WorkingDirectory); | ||||
|             Assert.That(extendedServiceDescriptor.ServiceAccountPassword, Is.EqualTo(Password)); | ||||
|         } | ||||
| 
 | ||||
|         [Test] | ||||
|         public void Priority() | ||||
|         { | ||||
|             var sd = ServiceDescriptor.FromXML("<service><id>test</id><priority>normal</priority></service>"); | ||||
|             Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal)); | ||||
| 
 | ||||
|             sd = ServiceDescriptor.FromXML("<service><id>test</id><priority>idle</priority></service>"); | ||||
|             Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Idle)); | ||||
| 
 | ||||
|             sd = ServiceDescriptor.FromXML("<service><id>test</id></service>"); | ||||
|             Assert.That(sd.Priority, Is.EqualTo(ProcessPriorityClass.Normal)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 10.00 | ||||
| # Visual C# Express 2008 | ||||
| # Visual Studio 2008 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winsw", "winsw.csproj", "{0DE77F55-ADE5-43C1-999A-0BC81153B039}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winswTests", "Tests\winswTests\winswTests.csproj", "{93843402-842B-44B4-B303-AEE829BE0B43}" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Kohsuke Kawaguchi
						Kohsuke Kawaguchi