public void Round_robins_across_instances_in_pool()
        {
            var settings = new DefaultConfigurationValues().Apply(new SettingsHolder());

            var creator = new InterceptedMessageReceiverCreator();

            var lifecycleManager = new MessageReceiverLifeCycleManager(creator, settings);

            var poolSize = settings.Get <int>(WellKnownConfigurationKeys.Connectivity.NumberOfClientsPerEntity);

            var first = lifecycleManager.Get("myqueue", AzureServiceBusConnectionString.Value);
            var next  = first;

            var reuseInPool = false;

            for (var i = 0; i < poolSize - 1; i++)
            {
                var n = lifecycleManager.Get("myqueue", AzureServiceBusConnectionString.Value);
                reuseInPool &= next == n;
                next         = n;
            }

            var second = lifecycleManager.Get("myqueue", AzureServiceBusConnectionString.Value);

            Assert.IsFalse(reuseInPool);
            Assert.AreEqual(first, second);
        }
        public void Creates_a_pool_of_clients_per_entity()
        {
            var settings = new DefaultConfigurationValues().Apply(new SettingsHolder());
            var poolSize = settings.Get <int>(WellKnownConfigurationKeys.Connectivity.NumberOfClientsPerEntity);

            var creator = new InterceptedMessageReceiverCreator();

            var lifecycleManager = new MessageReceiverLifeCycleManager(creator, settings);

            lifecycleManager.Get("myqueue", AzureServiceBusConnectionString.Value);

            Assert.AreEqual(poolSize, creator.InvocationCount);
        }
        public void Replaces_receivers_when_closed()
        {
            var settings = new DefaultConfigurationValues().Apply(new SettingsHolder());

            settings.Set(WellKnownConfigurationKeys.Connectivity.NumberOfClientsPerEntity, 1); // pool size of 1 simplifies the test

            var creator = new InterceptedMessageReceiverCreator();

            var lifecycleManager = new MessageReceiverLifeCycleManager(creator, settings);

            var first = (InterceptedMessageReceiver)lifecycleManager.Get("myqueue", AzureServiceBusConnectionString.Value);

            first.Close();

            var second = (InterceptedMessageReceiver)lifecycleManager.Get("myqueue", AzureServiceBusConnectionString.Value);

            Assert.AreEqual(2, creator.InvocationCount);
            Assert.AreNotEqual(first, second);
        }