Exemplo n.º 1
0
        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)));
     }
 }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        /// <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;
        }
Exemplo n.º 8
0
        /// <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();
            }
        }
Exemplo n.º 9
0
        /// <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));
        }