public void ValidOptionTest(string expected, string[] param) { var result = new StandaloneCliOptions(param); result.Count .Should() .Be(1); result.Values.Should() .Equal(expected); }
/// <summary> /// Autofac configuration. /// </summary> /// <param name="configuration"></param> /// <returns></returns> private IContainer ConfigureContainer(IConfiguration configuration) { var config = new Config(configuration); var builder = new ContainerBuilder(); var standaloneCliOptions = new StandaloneCliOptions(configuration); RunInStandaloneMode = standaloneCliOptions.RunInStandaloneMode; // Register configuration interfaces builder.RegisterInstance(config) .AsImplementedInterfaces(); builder.RegisterInstance(config.Configuration) .AsImplementedInterfaces(); builder.RegisterInstance(this) .AsImplementedInterfaces(); builder.RegisterModule <PublisherJobsConfiguration>(); // Register module and agent framework ... builder.RegisterModule <AgentFramework>(); builder.RegisterModule <ModuleFramework>(); builder.RegisterModule <NewtonSoftJsonModule>(); if (RunInStandaloneMode) { builder.AddDiagnostics(config, standaloneCliOptions.ToLoggerConfiguration()); builder.RegisterInstance(standaloneCliOptions) .AsImplementedInterfaces(); // we overwrite the ModuleHost registration from PerLifetimeScope // (in builder.RegisterModule<ModuleFramework>) to Singleton as // we want to reuse the Client from the ModuleHost in sub-scopes. builder.RegisterType <ModuleHost>() .AsImplementedInterfaces().SingleInstance(); // Published nodes file provider builder.RegisterType <PublishedNodesProvider>() .AsImplementedInterfaces().SingleInstance(); // Local orchestrator builder.RegisterType <StandaloneJobOrchestrator>() .AsImplementedInterfaces().SingleInstance(); // Create jobs from published nodes file builder.RegisterType <PublishedNodesJobConverter>() .SingleInstance(); builder.RegisterType <PublisherMethodsController>() .AsImplementedInterfaces().InstancePerLifetimeScope(); // Runtime state reporter. builder.RegisterType <RuntimeStateReporter>() .AsImplementedInterfaces().SingleInstance(); } else { builder.AddDiagnostics(config); // Client instance per job builder.RegisterType <PerDependencyClientAccessor>() .AsImplementedInterfaces().InstancePerLifetimeScope(); // Cloud job orchestrator builder.RegisterType <PublisherOrchestratorClient>() .AsImplementedInterfaces().SingleInstance(); // ... plus controllers builder.RegisterType <ConfigurationSettingsController>() .AsImplementedInterfaces().SingleInstance(); builder.RegisterType <PublisherSettingsController>() .AsImplementedInterfaces().SingleInstance(); // Note that they must be singleton so they can // plug as configuration into the orchestrator client. } builder.RegisterType <IdentityTokenSettingsController>() .AsImplementedInterfaces().SingleInstance(); builder.RegisterType <StackLogger>() .AsImplementedInterfaces().SingleInstance().AutoActivate(); // Opc specific parts builder.RegisterType <DefaultSessionManager>() .AsImplementedInterfaces().SingleInstance(); builder.RegisterType <SubscriptionServices>() .AsImplementedInterfaces().SingleInstance(); builder.RegisterType <VariantEncoderFactory>() .AsImplementedInterfaces(); builder.RegisterType <HealthCheckManager>() .AsImplementedInterfaces().SingleInstance(); return(builder.Build()); }