Exemple #1
0
        public async Task <TestClientServer <TService> > SetupTestClientServer <TService>(
            ILayerStackProvider serviceLayerStackProvider = null, ILayerStackProvider clientLayerStackProvider = null
            ) where TService : class, IService, new()
        {
            var testService = new TService();

            EpoxyTransport serviceTransport = new EpoxyTransportBuilder()
                                              .SetLayerStackProvider(serviceLayerStackProvider)
                                              .Construct();

            listener = serviceTransport.MakeListener(new IPEndPoint(IPAddress.Loopback, EpoxyTransport.DefaultInsecurePort));
            listener.AddService(testService);
            await listener.StartAsync();

            EpoxyTransport clientTransport = new EpoxyTransportBuilder()
                                             .SetLayerStackProvider(clientLayerStackProvider)
                                             .Construct();
            EpoxyConnection clientConnection = await clientTransport.ConnectToAsync("epoxy://127.0.0.1");

            return(new TestClientServer <TService>
            {
                Service = testService,
                ServiceTransport = serviceTransport,
                Listener = listener,
                ClientConnection = clientConnection,
                ClientTransport = clientTransport
            });
        }
        public EpoxyTransport(
            ILayerStackProvider layerStackProvider,
            Func <string, Task <IPAddress> > resolver,
            EpoxyServerTlsConfig serverTlsConfig,
            EpoxyClientTlsConfig clientTlsConfig,
            TimeoutConfig timeoutConfig,
            ILogSink logSink, bool enableDebugLogs,
            IMetricsSink metricsSink)
        {
            // Layer stack provider may be null
            this.layerStackProvider = layerStackProvider;

            // Always need a resolver, so substitute in default if given null
            this.resolver = resolver ?? ResolveViaDnsAsync;

            // may be null - indicates no TLS for listeners
            this.serverTlsConfig = serverTlsConfig;

            // Client-side TLS is determined by how the connection is
            // established, so we substitute in the Default TLS config if we
            // happened to get null
            this.clientTlsConfig = clientTlsConfig ?? EpoxyClientTlsConfig.Default;

            this.timeoutConfig = timeoutConfig;

            // Log sink may be null
            logger = new Logger(logSink, enableDebugLogs);
            // Metrics sink may be null
            metrics = new Metrics(metricsSink);

            connections = new CleanupCollection <EpoxyConnection>();
            listeners   = new CleanupCollection <EpoxyListener>();
        }
        private static async Task <PingPongProxy <EpoxyConnection> > SetupProxyAsync(ILayerStackProvider layerStack)
        {
            var transport = new EpoxyTransportBuilder().SetLayerStackProvider(layerStack).Construct();

            var endpoint = new EpoxyTransport.Endpoint(IPAddress.Loopback.ToString(), 25188, false);
            var conn     = await transport.ConnectToAsync(endpoint, CancellationToken.None);

            return(new PingPongProxy <EpoxyConnection>(conn));
        }
Exemple #4
0
 public EpoxyTransport(
     ILayerStackProvider layerStackProvider,
     ILogSink logSink, bool enableDebugLogs,
     IMetricsSink metricsSink)
 {
     // Layer stack provider may be null
     this.layerStackProvider = layerStackProvider;
     // Log sink may be null
     logger = new Logger(logSink, enableDebugLogs);
     // Metrics sink may be null
     metrics = new Metrics(metricsSink);
 }
        private static async Task SetupAsync(ILayerStackProvider layerStackProvider)
        {
            var            endpoint         = new IPEndPoint(IPAddress.Loopback, (int)PingConstants.Port);
            EpoxyTransport transport        = new EpoxyTransportBuilder().SetLayerStackProvider(layerStackProvider).Construct();
            EpoxyListener  pingPongListener = transport.MakeListener(endpoint);

            var pingPongService = new PingPongService();

            pingPongListener.AddService(pingPongService);

            await pingPongListener.StartAsync();
        }
Exemple #6
0
 public SimpleInMemTransport(ILayerStackProvider layerStackProvider, Logger logger, Metrics metrics)
 {
     this.layerStackProvider = layerStackProvider;
     this.logger             = logger;
     this.metrics            = metrics;
 }
Exemple #7
0
        public static async Task <TestClientServer <TService> > SetupTestClientServer <TService>(ILayerStackProvider serviceLayerStackProvider = null,
                                                                                                 ILayerStackProvider clientLayerStackProvider  = null) where TService : class, IService, new()
        {
            var testService = new TService();

            EpoxyTransport serviceTransport = new EpoxyTransportBuilder()
                                              .SetLayerStackProvider(serviceLayerStackProvider)
                                              .Construct();
            EpoxyListener listener = serviceTransport.MakeListener(new IPEndPoint(IPAddress.Loopback, 0));

            listener.AddService(testService);
            await listener.StartAsync();

            EpoxyTransport clientTransport = new EpoxyTransportBuilder()
                                             // some tests rely on the use of DebugExceptionHandler to assert things about the error message
                                             .SetLayerStackProvider(clientLayerStackProvider)
                                             .Construct();
            EpoxyConnection clientConnection = await clientTransport.ConnectToAsync(listener.ListenEndpoint);

            return(new TestClientServer <TService>
            {
                Service = testService,
                ServiceTransport = serviceTransport,
                Listener = listener,
                ClientConnection = clientConnection,
                ClientTransport = clientTransport
            });
        }
Exemple #8
0
 /// <summary>
 /// Set the layer stack.
 /// </summary>
 /// <param name="layerStackProvider">The layer stack provider. May be null</param>
 /// <returns>The builder.</returns>
 /// <remarks>
 /// The layer stack provider supplies the set of layers to be used
 /// by the built transport. May be null.
 /// </remarks>
 public virtual TransportBuilder <TTransport> SetLayerStackProvider(ILayerStackProvider layerStackProvider)
 {
     this.LayerStackProvider = layerStackProvider;
     return(this);
 }