Update yaml_extension_support

Add unit test
pull/638/head
Buddhika Chathuranga 2020-08-07 20:54:16 +05:30 committed by NextTurn
parent 1fc681af14
commit dcec99c261
No known key found for this signature in database
GPG Key ID: 17A0D50ADDE1A0C4
9 changed files with 47 additions and 24 deletions

View File

@ -648,6 +648,12 @@ namespace WinSW.Configuration
{
var result = new List<string>(0);
var extensions = this.ExtensionsConfiguration;
if (extensions is null)
{
return result;
}
var extensionConfigListObject = new ObjectQuery(extensions).ToList<object>();
foreach (var item in extensionConfigListObject)

View File

@ -1,4 +1,5 @@
using WinSW.Configuration;
using WinSW.Util;
namespace WinSW.Extensions
{
@ -10,7 +11,7 @@ namespace WinSW.Extensions
public WinSWExtensionDescriptor Descriptor { get; set; }
#pragma warning restore CS8618 // Non-nullable field is uninitialized. Consider declaring as nullable.
public virtual void Configure(IWinSWConfiguration descriptor, object settings)
public virtual void Configure(IWinSWConfiguration descriptor, ObjectQuery settings)
{
// Do nothing
}

View File

@ -34,6 +34,12 @@ namespace WinSW.Extensions
var result = new List<WinSWExtensionConfiguration>(0);
var extensions = this.serviceDescriptor.ExtensionsConfiguration;
if (extensions is null)
{
return result;
}
var extensionNodes = new ObjectQuery(extensions).ToList<object>();
foreach (var extension in extensionNodes)

View File

@ -1,4 +1,5 @@
using WinSW.Configuration;
using WinSW.Util;
namespace WinSW.Extensions
{
@ -26,7 +27,7 @@ namespace WinSW.Extensions
/// Init handler. Extension should load it's config during that step
/// </summary>
/// <param name="descriptor">Service descriptor</param>
void Configure(IWinSWConfiguration descriptor, object settings);
void Configure(IWinSWConfiguration descriptor, ObjectQuery settings);
/// <summary>
/// Start handler. Called during startup of the service before the child process.

View File

@ -1,3 +1,5 @@
using WinSW.Util;
namespace WinSW.Extensions
{
public class WinSWExtensionConfiguration
@ -8,9 +10,9 @@ namespace WinSW.Extensions
public string ClassName { get; set; }
public object Settings { get; set; }
public ObjectQuery Settings { get; set; }
public WinSWExtensionConfiguration(string id, bool enabled, string className, object settings)
public WinSWExtensionConfiguration(string id, bool enabled, string className, ObjectQuery settings)
{
this.Id = id;
this.Enabled = enabled;
@ -18,4 +20,4 @@ namespace WinSW.Extensions
this.Settings = settings;
}
}
}
}

View File

@ -136,10 +136,6 @@ namespace WinSW.Extensions
throw new ExtensionException(id, "Cannot get the configuration entry");
}
Console.WriteLine(configNode.Id);
Console.WriteLine(configNode.ClassName);
Console.WriteLine(configNode.Enabled);
var descriptor = new WinSWExtensionDescriptor(configNode.Id, configNode.ClassName, configNode.Enabled);
if (descriptor.Enabled)
{

View File

@ -179,14 +179,12 @@ namespace WinSW.Plugins.RunawayProcessKiller
return parameters.Environment;
}
public override void Configure(IWinSWConfiguration descriptor, object settings)
public override void Configure(IWinSWConfiguration descriptor, ObjectQuery settings)
{
var configQuery = new ObjectQuery(settings);
this.Pidfile = configQuery.On("pidfile").ToString();
this.StopTimeout = TimeSpan.FromMilliseconds(int.Parse(configQuery.On("stopTimeOut").ToString()));
this.StopParentProcessFirst = configQuery.On("StopParentFirst").ToBoolean();
this.CheckWinSWEnvironmentVariable = configQuery.On("checkWinSWEnvironmentVariable").ToBoolean();
this.Pidfile = settings.Get("pidfile").ToString();
this.StopTimeout = TimeSpan.FromMilliseconds(int.Parse(settings.Get("stopTimeOut").ToString()));
this.StopParentProcessFirst = settings.Get("StopParentFirst").ToBoolean();
this.CheckWinSWEnvironmentVariable = settings.Get("checkWinSWEnvironmentVariable").ToBoolean();
this.ServiceId = descriptor.Id;
}

View File

@ -26,18 +26,16 @@ namespace WinSW.Plugins.SharedDirectoryMapper
this._entries.Add(config);
}
public override void Configure(IWinSWConfiguration descriptor, object settings)
public override void Configure(IWinSWConfiguration descriptor, ObjectQuery settings)
{
var configObject = new ObjectQuery(settings);
var maps = configObject.On("mapping").ToList<object>();
var maps = settings.Get("mapping").ToList<object>();
foreach (var map in maps)
{
var mapObject = new ObjectQuery(map);
var enable = mapObject.On("enabled").ToBoolean();
var label = mapObject.On("label").ToString();
var uncpath = mapObject.On("uncpath").ToString();
var enable = mapObject.Get("enabled").ToBoolean();
var label = mapObject.Get("label").ToString();
var uncpath = mapObject.Get("uncpath").ToString();
var config = new SharedDirectoryMapperConfig(enable, label, uncpath);
this._entries.Add(config);

View File

@ -3,6 +3,7 @@ using WinSW;
using WinSW.Configuration;
using WinSW.Extensions;
using WinSW.Plugins.RunawayProcessKiller;
using WinSW.Util;
using winswTests.Extensions;
namespace winswTests
@ -27,7 +28,7 @@ extensions:
enabled: yes
classname: ""{this.testExtension}""
settings:
pidfile: foo/bar/pid.txt
pidfile: pid.txt
stopTimeOut: 5000
StopParentFirst: true";
@ -50,5 +51,19 @@ extensions:
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 Sample_test()
{
ExtensionConfigurationProvider provider = new ExtensionConfigurationProvider(this._testServiceDescriptor);
var config = provider.GetExtenstionConfiguration("killOnStartup");
var pid = config.Settings.On("pidfile").ToString();
var stopTimeOut = config.Settings.Get("stopTimeOut").ToString();
var StopParentFirst = config.Settings.Get("StopParentFirst").ToString();
System.Console.WriteLine(pid);
System.Console.WriteLine(stopTimeOut);
System.Console.WriteLine(StopParentFirst);
}
}
}