public void TestCreateWithOptions()
        {
            Uri configured = new Uri(baseUri +
                                     "?failover.initialReconnectDelay=" + (FailoverProvider.DEFAULT_INITIAL_RECONNECT_DELAY + 1) +
                                     "&failover.reconnectDelay=" + (FailoverProvider.DEFAULT_RECONNECT_DELAY + 2) +
                                     "&failover.maxReconnectDelay=" + (FailoverProvider.DEFAULT_MAX_RECONNECT_DELAY + 3) +
                                     "&failover.startupMaxReconnectAttempts=" + (FailoverProvider.DEFAULT_STARTUP_MAX_RECONNECT_ATTEMPTS + 4) +
                                     "&failover.maxReconnectAttempts=" + (FailoverProvider.DEFAULT_MAX_RECONNECT_ATTEMPTS + 5) +
                                     "&failover.warnAfterReconnectAttempts=" + (FailoverProvider.DEFAULT_WARN_AFTER_RECONNECT_ATTEMPTS + 6) +
                                     "&failover.useReconnectBackOff=" + (!FailoverProvider.DEFAULT_USE_RECONNECT_BACKOFF) +
                                     "&failover.reconnectBackOffMultiplier=" + (FailoverProvider.DEFAULT_RECONNECT_BACKOFF_MULTIPLIER + 1.0d));

            FailoverProvider failover = ProviderFactory.Create(configured) as FailoverProvider;

            Assert.IsNotNull(failover);

            Assert.AreEqual(FailoverProvider.DEFAULT_INITIAL_RECONNECT_DELAY + 1, failover.InitialReconnectDelay);
            Assert.AreEqual(FailoverProvider.DEFAULT_RECONNECT_DELAY + 2, failover.ReconnectDelay);
            Assert.AreEqual(FailoverProvider.DEFAULT_MAX_RECONNECT_DELAY + 3, failover.MaxReconnectDelay);
            Assert.AreEqual(FailoverProvider.DEFAULT_STARTUP_MAX_RECONNECT_ATTEMPTS + 4, failover.StartupMaxReconnectAttempts);
            Assert.AreEqual(FailoverProvider.DEFAULT_MAX_RECONNECT_ATTEMPTS + 5, failover.MaxReconnectAttempts);
            Assert.AreEqual(FailoverProvider.DEFAULT_WARN_AFTER_RECONNECT_ATTEMPTS + 6, failover.WarnAfterReconnectAttempts);
            Assert.AreEqual(!FailoverProvider.DEFAULT_USE_RECONNECT_BACKOFF, failover.UseReconnectBackOff);
            Assert.AreEqual(FailoverProvider.DEFAULT_RECONNECT_BACKOFF_MULTIPLIER + 1.0d, failover.ReconnectBackOffMultiplier, 0.0);
        }
        public async Task TestToString()
        {
            provider = new FailoverProvider(uris);
            provider.SetProviderListener(new Mock <IProviderListener>().Object);
            Assert.IsNotNull(provider.ToString());
            await provider.Connect(connectionInfo);

            Assert.True(provider.ToString().Contains("mock://"));
        }
        public async Task TestGetRemoteUri()
        {
            provider = new FailoverProvider(uris);
            provider.SetProviderListener(new Mock <IProviderListener>().Object);
            Assert.IsNull(provider.RemoteUri);
            await provider.Connect(connectionInfo);

            Assert.IsNotNull(provider.RemoteUri);
        }
        public async Task TestConnectToMock()
        {
            provider = new FailoverProvider(uris);
            provider.SetProviderListener(new Mock <IProviderListener>().Object);
            await provider.Connect(connectionInfo);

            provider.Close();
            Assert.That(mockPeer.ContextStats.ProvidersCreated, Is.EqualTo(1));
            Assert.That(mockPeer.ContextStats.ConnectionAttempts, Is.EqualTo(1));
        }
        public void TearDown()
        {
            if (provider != null)
            {
                provider.Close();
                provider = null;
            }

            if (mockPeer != null)
            {
                mockPeer.Terminate();
                mockPeer = null;
            }
        }
        public void TestCreateProviderInitializesToDefaults()
        {
            FailoverProvider failoverProvider = ProviderFactory.Create(baseUri) as FailoverProvider;

            Assert.IsNotNull(failoverProvider);
            Assert.AreEqual(FailoverProvider.DEFAULT_INITIAL_RECONNECT_DELAY, failoverProvider.InitialReconnectDelay);
            Assert.AreEqual(FailoverProvider.DEFAULT_RECONNECT_DELAY, failoverProvider.ReconnectDelay);
            Assert.AreEqual(FailoverProvider.DEFAULT_MAX_RECONNECT_DELAY, failoverProvider.MaxReconnectDelay);
            Assert.AreEqual(FailoverProvider.DEFAULT_STARTUP_MAX_RECONNECT_ATTEMPTS, failoverProvider.StartupMaxReconnectAttempts);
            Assert.AreEqual(FailoverProvider.DEFAULT_MAX_RECONNECT_ATTEMPTS, failoverProvider.MaxReconnectAttempts);
            Assert.AreEqual(FailoverProvider.DEFAULT_USE_RECONNECT_BACKOFF, failoverProvider.UseReconnectBackOff);
            Assert.AreEqual(FailoverProvider.DEFAULT_RECONNECT_BACKOFF_MULTIPLIER, failoverProvider.ReconnectBackOffMultiplier);
            Assert.AreEqual(FailoverProvider.DEFAULT_WARN_AFTER_RECONNECT_ATTEMPTS, failoverProvider.WarnAfterReconnectAttempts);
        }
 public void TestCreateProviderOnlyUris()
 {
     provider = new FailoverProvider(uris);
     Assert.IsNull(provider.RemoteUri);
 }
 public void TestCannotStartWithoutListener()
 {
     provider = new FailoverProvider(uris);
     Assert.Throws <IllegalStateException>(() => provider.Start());
 }