public WebHostLanguageWorkerChannelManagerTests() { _eventManager = new ScriptEventManager(); _rpcServer = new TestRpcServer(); _loggerProvider = new TestLoggerProvider(); _loggerFactory = new LoggerFactory(); _testEnvironment = new TestEnvironment(); _loggerFactory.AddProvider(_loggerProvider); _languageWorkerProcess = new Mock <ILanguageWorkerProcess>(); _languageWorkerOptions = new LanguageWorkerOptions { WorkerConfigs = TestHelpers.GetTestWorkerConfigs() }; var applicationHostOptions = new ScriptApplicationHostOptions { IsSelfHost = true, ScriptPath = @"c:\testing\FUNCTIONS-TEST\test$#" }; _optionsMonitor = TestHelpers.CreateOptionsMonitor(applicationHostOptions); _languageWorkerProcessFactory = new Mock <ILanguageWorkerProcessFactory>(); _languageWorkerProcessFactory.Setup(m => m.CreateLanguageWorkerProcess(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(_languageWorkerProcess.Object); _languageWorkerChannelFactory = new TestLanguageWorkerChannelFactory(_eventManager, null, _scriptRootPath); _languageWorkerChannelManager = new WebHostLanguageWorkerChannelManager(_eventManager, _testEnvironment, _loggerFactory, _languageWorkerChannelFactory, _optionsMonitor); }
public TestLanguageWorkerChannelManager(IScriptEventManager eventManager, ILogger testLogger, string scriptRootPath, ILanguageWorkerChannelFactory testLanguageWorkerChannelFactory) { _eventManager = eventManager; _testLogger = testLogger; _scriptRootPath = scriptRootPath; _testLanguageWorkerChannelFactory = testLanguageWorkerChannelFactory; }
public WebHostLanguageWorkerChannelManager(IScriptEventManager eventManager, IEnvironment environment, ILoggerFactory loggerFactory, ILanguageWorkerChannelFactory languageWorkerChannelFactory, IOptionsMonitor <ScriptApplicationHostOptions> applicationHostOptions) { _environment = environment ?? throw new ArgumentNullException(nameof(environment)); _eventManager = eventManager; _loggerFactory = loggerFactory; _languageWorkerChannelFactory = languageWorkerChannelFactory; _logger = loggerFactory.CreateLogger <WebHostLanguageWorkerChannelManager>(); _applicationHostOptions = applicationHostOptions; _shutdownStandbyWorkerChannels = ScheduleShutdownStandbyChannels; _shutdownStandbyWorkerChannels = _shutdownStandbyWorkerChannels.Debounce(milliseconds: 5000); }
public FunctionDispatcher(IOptions <ScriptJobHostOptions> scriptHostOptions, IMetricsLogger metricsLogger, IEnvironment environment, IScriptJobHostEnvironment scriptJobHostEnvironment, IScriptEventManager eventManager, ILoggerFactory loggerFactory, ILanguageWorkerChannelFactory languageWorkerChannelFactory, IOptions <LanguageWorkerOptions> languageWorkerOptions, IWebHostLanguageWorkerChannelManager webHostLanguageWorkerChannelManager, IJobHostLanguageWorkerChannelManager jobHostLanguageWorkerChannelManager, IOptions <ManagedDependencyOptions> managedDependencyOptions, IFunctionDispatcherLoadBalancer functionDispatcherLoadBalancer) { _metricsLogger = metricsLogger; _scriptOptions = scriptHostOptions.Value; _environment = environment; _scriptJobHostEnvironment = scriptJobHostEnvironment; _webHostLanguageWorkerChannelManager = webHostLanguageWorkerChannelManager; _jobHostLanguageWorkerChannelManager = jobHostLanguageWorkerChannelManager; _eventManager = eventManager; _workerConfigs = languageWorkerOptions.Value.WorkerConfigs; _managedDependencyOptions = managedDependencyOptions; _logger = loggerFactory.CreateLogger <FunctionDispatcher>(); _languageWorkerChannelFactory = languageWorkerChannelFactory; _workerRuntime = _environment.GetEnvironmentVariable(LanguageWorkerConstants.FunctionWorkerRuntimeSettingName); var processCount = _environment.GetEnvironmentVariable(LanguageWorkerConstants.FunctionsWorkerProcessCountSettingName); _maxProcessCount = (processCount != null && int.Parse(processCount) > 1) ? int.Parse(processCount) : 1; _maxProcessCount = _maxProcessCount > _maxAllowedProcessCount ? _maxAllowedProcessCount : _maxProcessCount; _functionDispatcherLoadBalancer = functionDispatcherLoadBalancer; State = FunctionDispatcherState.Default; _workerErrorSubscription = _eventManager.OfType <WorkerErrorEvent>() .Subscribe(WorkerError); _rpcChannelReadySubscriptions = _eventManager.OfType <RpcJobHostChannelReadyEvent>() .ObserveOn(NewThreadScheduler.Default) .Subscribe(AddOrUpdateWorkerChannels); _shutdownStandbyWorkerChannels = ShutdownWebhostLanguageWorkerChannels; _shutdownStandbyWorkerChannels = _shutdownStandbyWorkerChannels.Debounce(5000); }