Example #1
0
        public async Task ShouldRecoverFromFailerByUpdateMetadataOnce() //Do not debug this test !!
        {
            var log         = new DefaultTraceLog();
            var routerProxy = new BrokerRouterProxy(_kernel);

            routerProxy._cacheExpiration = TimeSpan.FromMilliseconds(1000);
            var router = routerProxy.Create();

            int             partitionId     = 0;
            ProtocolGateway protocolGateway = new ProtocolGateway(router);
            var             fetchRequest    = new FetchRequest();

            int  numberOfCall              = 100;
            long numberOfErrorSend         = 0;
            TaskCompletionSource <int>   x = new TaskCompletionSource <int>();
            Func <Task <FetchResponse> > ShouldReturnNotLeaderForPartitionAndThenNoError = async() =>
            {
                log.DebugFormat("FetchResponse Start ");
                if (!x.Task.IsCompleted)
                {
                    if (Interlocked.Increment(ref numberOfErrorSend) == numberOfCall)
                    {
                        await Task.Delay(routerProxy._cacheExpiration);

                        await Task.Delay(1);

                        x.TrySetResult(1);
                        log.DebugFormat("all is complete ");
                    }

                    await x.Task;
                    log.DebugFormat("SocketException ");
                    throw new BrokerConnectionException("", new KafkaEndpoint());
                }
                log.DebugFormat("Completed ");

                return(new FetchResponse()
                {
                    Error = (short)ErrorResponseCode.NoError
                });
            };

            routerProxy.BrokerConn0.FetchResponseFunction    = ShouldReturnNotLeaderForPartitionAndThenNoError;
            routerProxy.BrokerConn0.MetadataResponseFunction = BrokerRouterProxy.CreateMetadataResponseWithMultipleBrokers;

            Task[] tasks = new Task[numberOfCall];

            for (int i = 0; i < numberOfCall; i++)
            {
                tasks[i] = protocolGateway.SendProtocolRequest(fetchRequest, BrokerRouterProxy.TestTopic, partitionId);
            }

            await Task.WhenAll(tasks);

            Assert.That(numberOfErrorSend, Is.GreaterThan(1), "numberOfErrorSend");
            Assert.That(routerProxy.BrokerConn0.FetchRequestCallCount, Is.EqualTo(numberOfCall + numberOfErrorSend),
                        "FetchRequestCallCount");
            Assert.That(routerProxy.BrokerConn0.MetadataRequestCallCount, Is.EqualTo(2), "MetadataRequestCallCount");
        }
Example #2
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri    = kafkaServerUri.ToList();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     ResponseTimeoutMs      = TimeSpan.FromMilliseconds(DefaultResponseTimeout);
 }
Example #3
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri = kafkaServerUri.ToList();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     ResponseTimeoutMs = DefaultResponseTimeout;
 }
Example #4
0
 public ConsumerOptions(string topic, IBrokerRouter router)
 {
     Topic = topic;
     Router = router;
     PartitionWhitelist = new List<int>();
     Log = new DefaultTraceLog();
     TopicPartitionQueryTimeMs = (int)TimeSpan.FromMinutes(15).TotalMilliseconds;
     ConsumerBufferSize = 50;
 }
Example #5
0
 public ConsumerOptions(string topic, IBrokerRouter router)
 {
     Topic              = topic;
     Router             = router;
     PartitionWhitelist = new List <int>();
     Log = new DefaultTraceLog();
     TopicPartitionQueryTimeMs = (int)TimeSpan.FromMinutes(15).TotalMilliseconds;
     ConsumerBufferSize        = 50;
 }
Example #6
0
 public ConsumerOptions(string topic, IBrokerRouter router)
 {
     Topic              = topic;
     Router             = router;
     PartitionWhitelist = new List <int>();
     Log = new DefaultTraceLog();
     TopicPartitionQueryTimeMs = (int)TimeSpan.FromMinutes(15).TotalMilliseconds;
     ConsumerBufferSize        = DefaultMaxConsumerBufferSize;
     BackoffInterval           = TimeSpan.FromMilliseconds(DefaultBackoffIntervalMS);
     FetchBufferMultiplier     = DefaulFetchBufferMultiplier;
 }
Example #7
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri    = kafkaServerUri.ToList();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     ResponseTimeoutMs      = TimeSpan.FromMilliseconds(DefaultResponseTimeout);
     CacheExpiration        = TimeSpan.FromMilliseconds(DefaultCacheExpirationTimeoutMS);
     RefreshMetadataTimeout = TimeSpan.FromMilliseconds(DefaultRefreshMetadataTimeout);
     MaxRetry = DefaultMaxRetry;
     StatisticsTrackerOptions = new StatisticsTrackerOptions();
 }
Example #8
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri = kafkaServerUri.ToList();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     ResponseTimeoutMs = TimeSpan.FromMilliseconds(DefaultResponseTimeout);
     CacheExpiration = TimeSpan.FromMilliseconds(DefaultCacheExpirationTimeoutMS);
     RefreshMetadataTimeout = TimeSpan.FromMilliseconds(DefaultRefreshMetadataTimeout);
     MaxRetry = DefaultMaxRetry;
     StatisticsTrackerOptions = new StatisticsTrackerOptions();
 }
Example #9
0
 public ConsumerOptions(string topic, IBrokerRouter router)
 {
     Topic = topic;
     Router = router;
     PartitionWhitelist = new List<int>();
     Log = new DefaultTraceLog();
     TopicPartitionQueryTimeMs = (int)TimeSpan.FromMinutes(15).TotalMilliseconds;
     ConsumerBufferSize = DefaultMaxConsumerBufferSize;
     BackoffInterval = TimeSpan.FromMilliseconds(DefaultBackoffIntervalMS);
     FetchBufferMultiplier = DefaulFetchBufferMultiplier;
     MaxWaitTimeForMinimumBytes = TimeSpan.FromMilliseconds(FetchRequest.DefaultMaxBlockingWaitTime);
     MinimumBytes = FetchRequest.DefaultMinBlockingByteBufferSize;
 }
Example #10
0
 public KafkaConnectionTests()
 {
     _log           = new DefaultTraceLog();
     _kafkaEndpoint = new DefaultKafkaConnectionFactory().Resolve(new Uri("http://localhost:8999"), _log);
 }
 public KafkaTcpSocketTests()
 {
     var log = new DefaultTraceLog();
     _fakeServerUrl = new DefaultKafkaConnectionFactory().Resolve(new Uri("http://localhost:8999"), log);
     _badServerUrl = new DefaultKafkaConnectionFactory().Resolve(new Uri("http://localhost:1"), log);
 }
 public KafkaConnectionTests()
 {
     _log = new DefaultTraceLog();
 }