public async Task RpcInitializationService_Does_Not_Initialize_RpcServerAndChannels_LinuxConsumption_DisabledContainer() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.ContainerName)).Returns("LinuxContainer"); var fileSystem = new Mock <IFileSystem>(); fileSystem.Setup(f => f.File.Exists(It.Is <string>(path => path.EndsWith(ScriptConstants.DisableContainerFileName)))) .Returns(true); FileUtility.Instance = fileSystem.Object; _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.PythonLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.NodeLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.JavaLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.PowerShellLanguageWorkerName), Times.Never); Assert.DoesNotContain("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); FileUtility.Instance = null; }
public async Task RpcInitializationService_Initializes_RpcServerOnly_LinuxConsumption_NoPlaceHolderMode() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode)).Returns("0"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName)).Returns(string.Empty); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.ContainerName)).Returns("LinuxContainer"); var fileSystem = new Mock <IFileSystem>(); fileSystem.Setup(f => f.File.Exists(It.Is <string>(path => path.EndsWith(ScriptConstants.DisableContainerFileName)))) .Returns(false); FileUtility.Instance = fileSystem.Object; _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.PythonLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.NodeLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.JavaLanguageWorkerName), Times.Never); Assert.Contains("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); FileUtility.Instance = null; }
public async Task RpcInitializationService_TriggerShutdown() { Mock <IRpcServer> testRpcServer = new Mock <IRpcServer>(); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, new Mock <IEnvironment>().Object, testRpcServer.Object, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.OuterStopAsync(CancellationToken.None); testRpcServer.Verify(a => a.ShutdownAsync(), Times.Once); testRpcServer.Verify(a => a.KillAsync(), Times.Never); }
public void ShouldStartInPlaceholderMode_Returns_ExpectedValue(string placeholderMode, string siteName, string siteInstanaceId, bool expectedResult) { Mock <IRpcServer> testRpcServer = new Mock <IRpcServer>(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode)).Returns(placeholderMode); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteName)).Returns(siteName); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteInstanceId)).Returns(siteInstanaceId); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer.Object, _mockLanguageWorkerChannelManager.Object, _logger); Assert.Equal(_rpcInitializationService.ShouldStartInPlaceholderMode(), expectedResult); }
public async Task RpcInitializationService_TriggerShutdown_KillGetsCalledWhenShutdownThrowsException() { Mock <IRpcServer> testRpcServer = new Mock <IRpcServer>(); testRpcServer.Setup(a => a.ShutdownAsync()).ThrowsAsync(new Exception("Random Exception")); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, new Mock <IEnvironment>().Object, testRpcServer.Object, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.OuterStopAsync(CancellationToken.None); testRpcServer.Verify(a => a.ShutdownAsync(), Times.Once); testRpcServer.Verify(a => a.KillAsync(), Times.Once); }
public async Task RpcInitializationService_LinuxConsumption_Initializes_RpcServer() { var testEnvironment = new TestEnvironment(); testEnvironment.SetEnvironmentVariable(EnvironmentSettingNames.ContainerName, "testContainer"); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, testEnvironment, _testRpcServer, _mockLanguageWorkerChannelManager.Object, _loggerFactory); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Never); Assert.Contains("testserver", _testRpcServer.Uri.ToString()); }
public async Task RpcInitializationService_Initializes_RpcServerAndChannels_PlaceHolderMode() { var testEnvironment = new TestEnvironment(); testEnvironment.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "1"); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, testEnvironment, _testRpcServer, _mockLanguageWorkerChannelManager.Object, _loggerFactory); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Once); Assert.Contains("testserver", _testRpcServer.Uri.ToString()); }
public async Task RpcInitializationService_Initializes_WorkerRuntime_NotSet_NoPlaceholder() { var testEnvironment = new TestEnvironment(); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, testEnvironment, _testRpcServer, _mockLanguageWorkerChannelManager.Object, _loggerFactory); _rpcInitializationService.AddSupportedRuntime(LanguageWorkerConstants.NodeLanguageWorkerName); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.NodeLanguageWorkerName), Times.Never); Assert.Contains("testserver", _testRpcServer.Uri.ToString()); }
public async Task RpcInitializationService_Initializes_RpcServerAndChannels_WorkerRuntime_Set_Node_NoPlaceHolderMode() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName)).Returns(RpcWorkerConstants.NodeLanguageWorkerName); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.NodeLanguageWorkerName), Times.Never); Assert.Contains("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); }
public async Task RpcInitializationService_LinuxAppService_Initializes_RpcServer() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.FunctionsLogsMountPath)).Returns(@"d:\test"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteInstanceId)).Returns("1234"); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _loggerFactory); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Never); Assert.Contains("testserver", testRpcServer.Uri.ToString()); }
public async Task RpcInitializationService_Initializes_RpcServerAndChannels_PlaceHolderMode() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode)).Returns("1"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(LanguageWorkerConstants.FunctionWorkerRuntimeSettingName)).Returns(string.Empty); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _loggerFactory); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Once); Assert.Contains("testserver", testRpcServer.Uri.ToString()); }
public async Task RpcInitializationService_Initializes_RpcServerOnly_WebHostLevel_WorkerRuntime_NotSet_NoPlaceHolderMode() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); _rpcInitializationService.AddSupportedWebHostLevelRuntime(LanguageWorkerConstants.NodeLanguageWorkerName); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.NodeLanguageWorkerName), Times.Never); Assert.Contains("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); }
public async Task RpcInitializationService_AppOffline() { var testEnvironment = new TestEnvironment(); var offlineFilePath = TestHelpers.CreateOfflineFile(_rootPath); try { _rpcInitializationService = new RpcInitializationService(_optionsMonitor, testEnvironment, _testRpcServer, _mockLanguageWorkerChannelManager.Object, _loggerFactory); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Never); Assert.DoesNotContain("testserver", _testRpcServer.Uri.ToString()); } finally { DeleteTestFile(offlineFilePath); } }
public async Task RpcInitializationService_Initializes_RpcServerOnly_LinuxAppService_NoPlaceHolderMode() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.FunctionsLogsMountPath)).Returns(@"d:\test"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteInstanceId)).Returns("1234"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode)).Returns("0"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName)).Returns(string.Empty); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.PythonLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.NodeLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.JavaLanguageWorkerName), Times.Never); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.PowerShellLanguageWorkerName), Times.Never); Assert.Contains("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); }
public async Task RpcInitializationService_AppOffline() { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); string offlineFilePath = null; try { offlineFilePath = TestHelpers.CreateOfflineFile(); _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(LanguageWorkerConstants.JavaLanguageWorkerName), Times.Never); Assert.DoesNotContain("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); } finally { TestHelpers.DeleteTestFile(offlineFilePath); } }
public async Task RpcInitializationService_Initializes_RpcServer_RpcChannels_PlaceholderMode(string workerRuntime) { IRpcServer testRpcServer = new TestRpcServer(); var mockEnvironment = new Mock <IEnvironment>(); mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode)).Returns("1"); mockEnvironment.Setup(p => p.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerRuntimeSettingName)).Returns(workerRuntime); if (string.IsNullOrEmpty(workerRuntime)) { mockEnvironment.Setup(p => p.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerPlaceholderModeListSettingName)).Returns($"{RpcWorkerConstants.PythonLanguageWorkerName};{RpcWorkerConstants.JavaLanguageWorkerName};{RpcWorkerConstants.NodeLanguageWorkerName}"); } else { mockEnvironment.Setup(p => p.GetEnvironmentVariable(RpcWorkerConstants.FunctionWorkerPlaceholderModeListSettingName)).Returns($"{RpcWorkerConstants.PythonLanguageWorkerName};{RpcWorkerConstants.JavaLanguageWorkerName};"); } _rpcInitializationService = new RpcInitializationService(_optionsMonitor, mockEnvironment.Object, testRpcServer, _mockLanguageWorkerChannelManager.Object, _logger); await _rpcInitializationService.StartAsync(CancellationToken.None); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.NodeLanguageWorkerName), Times.Once); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.JavaLanguageWorkerName), Times.Once); _mockLanguageWorkerChannelManager.Verify(m => m.InitializeChannelAsync(RpcWorkerConstants.PythonLanguageWorkerName), Times.Once); Assert.Contains("testserver", testRpcServer.Uri.ToString()); await testRpcServer.ShutdownAsync(); }