public void TestServerConsideredNotCompletedBeforeStarted(IIpcProvider provider) { var m1 = provider.CreateNewConnectionString(); using (var server = provider.GetServer(m1, new ServerConfig())) { Assert.False(server.Completion.IsCompleted); } }
/// <summary> /// If no server has been created for a given moniker, creates and returns a new server; /// otherwise, returns the server previously created for the same moniker. /// </summary> /// <inheritdoc /> public IServer GetServer(string connectionString, IServerConfig config) { lock (m_connectionString2Server) { return(m_connectionString2Server.GetOrAdd( key: connectionString, valueFactory: (s) => m_provider.GetServer(s, config))); } }
public void TestCreateStartStopDisposeServer(IIpcProvider provider) { var m1 = provider.CreateNewConnectionString(); using (var server = provider.GetServer(m1, new ServerConfig())) { server.Start(EchoingExecutor); Assert.False(server.Completion.IsCompleted); server.RequestStop(); WaitServerDone(server); } }
public void TestServerMultipleDispose(IIpcProvider provider) { var m1 = provider.CreateNewConnectionString(); using (var server = provider.GetServer(m1, new ServerConfig())) { server.Start(EchoingExecutor); server.RequestStop(); WaitServerDone(server); server.Dispose(); } }
public void TestServerMultipleStartFails(IIpcProvider provider) { var testName = nameof(TestServerMultipleStartFails); var m1 = provider.CreateNewConnectionString(); using (var server = provider.GetServer(m1, ServerConfigWithLogger(testName))) { server.Start(EchoingExecutor); var ex = Assert.Throws <IpcException>(() => server.Start(EchoingExecutor)); Assert.Equal(IpcException.IpcExceptionKind.MultiStart, ex.Kind); server.RequestStop(); WaitServerDone(server); } }
/// <nodoc /> public ServicePipDaemon(IParser parser, DaemonConfig daemonConfig, IIpcLogger logger, IIpcProvider rpcProvider = null, Client client = null) { Contract.Requires(daemonConfig != null); Config = daemonConfig; m_parser = parser; ApiClient = client; m_logger = logger; rpcProvider = rpcProvider ?? IpcFactory.GetProvider(); m_server = rpcProvider.GetServer(Config.Moniker, Config); m_etwLogger = new BuildXLBasedCloudBuildLogger(Config.Logger, Config.EnableCloudBuildIntegration); }
/// <nodoc /> public ApiServer( IIpcProvider ipcProvider, string ipcMonikerId, FileContentManager fileContentManager, PipExecutionContext context, IServerConfig config) { Contract.Requires(ipcMonikerId != null); Contract.Requires(fileContentManager != null); Contract.Requires(context != null); Contract.Requires(config != null); m_fileContentManager = fileContentManager; m_server = ipcProvider.GetServer(ipcProvider.LoadAndRenderMoniker(ipcMonikerId), config); m_context = context; }
/// <summary> /// Async version of <see cref="WithIpcServer(IIpcProvider, IIpcOperationExecutor, IServerConfig, Action{IIpcMoniker, IServer})"/> /// </summary> protected static async Task WithIpcServer(IIpcProvider provider, IIpcOperationExecutor executor, IServerConfig config, Func <IIpcMoniker, IServer, Task> testAction) { var moniker = provider.CreateNewMoniker(); var server = provider.GetServer(provider.RenderConnectionString(moniker), config); server.Start(executor); try { await testAction(moniker, server); } finally { server.RequestStop(); await server.Completion; server.Dispose(); } }
/// <nodoc /> public Daemon(IParser parser, DaemonConfig daemonConfig, DropConfig dropConfig, Task <IDropClient> dropClientTask, IIpcProvider rpcProvider = null, Client client = null) { Contract.Requires(daemonConfig != null); Contract.Requires(dropConfig != null); Config = daemonConfig; DropConfig = dropConfig; m_parser = parser; ApiClient = client; m_logger = !string.IsNullOrWhiteSpace(dropConfig.LogDir) ? new FileLogger(dropConfig.LogDir, LogFileName, Config.Moniker, dropConfig.Verbose, DropDLogPrefix) : Config.Logger; m_logger.Info("Using DropDaemon config: " + JsonConvert.SerializeObject(Config)); rpcProvider = rpcProvider ?? IpcFactory.GetProvider(); m_server = rpcProvider.GetServer(Config.Moniker, Config); m_etwLogger = new BuildXLBasedCloudBuildLogger(Config.Logger, Config.EnableCloudBuildIntegration); m_dropClientTask = dropClientTask ?? Task.Run(() => (IDropClient) new VsoClient(m_logger, dropConfig)); }