using winsw; using NUnit.Framework; using winsw.Extensions; using winsw.Plugins.SharedDirectoryMapper; using winsw.Plugins.RunawayProcessKiller; namespace winswTests.Extensions { [TestFixture] class RunawayProcessKillerExtensionTest : ExtensionTestBase { ServiceDescriptor _testServiceDescriptor; string testExtension = getExtensionClassNameWithAssembly(typeof(RunawayProcessKillerExtension)); [SetUp] public void SetUp() { string seedXml = "" + " " + " SERVICE_NAME " + " Jenkins Slave " + " This service runs a slave for Jenkins continuous integration system. " + " C:\\Program Files\\Java\\jre7\\bin\\java.exe " + " -Xrs -jar \\\"%BASE%\\slave.jar\\\" -jnlpUrl ... " + " rotate " + " " + " " + " foo/bar/pid.txt" + " 5000 " + " true" + " " + " " + ""; _testServiceDescriptor = ServiceDescriptor.FromXML(seedXml); } [Test] public void LoadExtensions() { WinSWExtensionManager manager = new WinSWExtensionManager(_testServiceDescriptor); manager.LoadExtensions(); Assert.AreEqual(1, manager.Extensions.Count, "One extension should be loaded"); // Check the file is correct var extension = manager.Extensions["killRunawayProcess"] as RunawayProcessKillerExtension; Assert.IsNotNull(extension, "RunawayProcessKillerExtension should be loaded"); Assert.AreEqual("foo/bar/pid.txt", extension.Pidfile, "Loaded PID file path is not equal to the expected one"); Assert.AreEqual(5000, extension.StopTimeout.TotalMilliseconds, "Loaded Stop Timeout is not equal to the expected one"); Assert.AreEqual(true, extension.StopParentProcessFirst, "Loaded StopParentFirst is not equal to the expected one"); } [Test] public void StartStopExtension() { WinSWExtensionManager manager = new WinSWExtensionManager(_testServiceDescriptor); manager.LoadExtensions(); manager.FireOnWrapperStarted(); manager.FireBeforeWrapperStopped(); } } }