예제 #1
0
        /// <summary>
        /// Initializes common resources.
        /// </summary>
        /// <param name="container">The composition container.</param>
        protected void EtpSetUp(IContainer container)
        {
            _container = container;

            // Clean up any remaining resources
            _client?.Dispose();
            _server?.Dispose();

            // Get next available port number
            var listener = new TcpListener(IPAddress.Loopback, 0);

            listener.Start();
            var port = ((IPEndPoint)listener.LocalEndpoint).Port;

            listener.Stop();

            // Update EtpServerUrl setting
            var uri = new Uri(TestSettings.EtpServerUrl);
            var url = TestSettings.EtpServerUrl.Replace($":{uri.Port}", $":{port}");

            // Create server and client instances
            _server = CreateServer(port);
            _client = InitClient(CreateClient(url));

            // Resolve dependencies early to avoid object disposed
            var streaming = container.Resolve <IChannelStreamingProducer>();
            var discovery = container.Resolve <IDiscoveryStore>();
            var store     = container.Resolve <IStoreStore>();

            // Register server handlers
            _server.Register(() => streaming);
            _server.Register(() => discovery);
            _server.Register(() => store);
        }
예제 #2
0
 /// <summary>
 /// Disposes common resources.
 /// </summary>
 protected void EtpCleanUp()
 {
     TestSettings.Reset();
     _client.Dispose();
     _server.Dispose();
 }