public void ReadOnlyConnectionSlavesTest() { var slaves = Server26379.SentinelSlaves(ServiceName); var config = new ConfigurationOptions { TieBreaker = "", ServiceName = TestConfig.Current.SentinelSeviceName, }; foreach (var kv in slaves) { Assert.Equal("slave", kv.ToDictionary()["flags"]); config.EndPoints.Add(kv.ToDictionary()["name"]); } var readonlyConn = ConnectionMultiplexer.Connect(config); Thread.Sleep(5000); Assert.True(readonlyConn.IsConnected); var db = readonlyConn.GetDatabase(); var s = db.StringGet("test"); Assert.True(s.IsNullOrEmpty); //var ex = Assert.Throws<RedisConnectionException>(() => db.StringSet("test", "try write to read only instance")); //Assert.StartsWith("No connection is available to service this operation", ex.Message); }
public void GetSentinelMasterConnectionWriteReadFailover() { var conn = Conn.GetSentinelMasterConnection(new ConfigurationOptions { ServiceName = ServiceName }); var s = conn.currentSentinelMasterEndPoint.ToString(); IDatabase db = conn.GetDatabase(); var expected = DateTime.Now.Ticks.ToString(); db.StringSet("beforeFailOverValue", expected); Server26379.SentinelFailover(ServiceName); Thread.Sleep(3000); var conn1 = Conn.GetSentinelMasterConnection(new ConfigurationOptions { ServiceName = ServiceName }); var s1 = conn1.currentSentinelMasterEndPoint.ToString(); var db1 = conn1.GetDatabase(); var actual = db1.StringGet("beforeFailOverValue"); Assert.NotNull(s); Assert.NotNull(s1); Assert.NotEmpty(s); Assert.NotEmpty(s1); Assert.NotEqual(s, s1); Assert.Equal(expected, actual); }
public void PingTest() { var test = Server26379.Ping(); Log("ping to sentinel {0}:{1} took {2} ms", TestConfig.Current.SentinelServer, TestConfig.Current.SentinelPort, test.TotalMilliseconds); test = Server26380.Ping(); Log("ping to sentinel {0}:{1} took {1} ms", TestConfig.Current.SentinelServer, TestConfig.Current.SentinelPort1, test.TotalMilliseconds); test = Server26381.Ping(); Log("ping to sentinel {0}:{1} took {1} ms", TestConfig.Current.SentinelServer, TestConfig.Current.SentinelPort2, test.TotalMilliseconds); }
public async Task SentinelSentinelsAsyncTest() { var sentinels = await Server26379.SentinelSentinelsAsync(ServiceName).ForAwait(); var expected = new List <string> { Server26380.EndPoint.ToString(), Server26381.EndPoint.ToString() }; var actual = new List <string>(); foreach (var kv in sentinels) { actual.Add(kv.ToDictionary()["name"]); } Assert.All(expected, ep => Assert.NotEqual(ep, Server26379.EndPoint.ToString())); Assert.True(sentinels.Length == 2); Assert.All(expected, ep => Assert.Contains(ep, actual)); sentinels = await Server26380.SentinelSentinelsAsync(ServiceName).ForAwait(); expected = new List <string> { Server26379.EndPoint.ToString(), Server26381.EndPoint.ToString() }; actual = new List <string>(); foreach (var kv in sentinels) { actual.Add(kv.ToDictionary()["name"]); } Assert.All(expected, ep => Assert.NotEqual(ep, Server26380.EndPoint.ToString())); Assert.True(sentinels.Length == 2); Assert.All(expected, ep => Assert.Contains(ep, actual)); sentinels = await Server26381.SentinelSentinelsAsync(ServiceName).ForAwait(); expected = new List <string> { Server26379.EndPoint.ToString(), Server26380.EndPoint.ToString() }; actual = new List <string>(); foreach (var kv in sentinels) { actual.Add(kv.ToDictionary()["name"]); } Assert.All(expected, ep => Assert.NotEqual(ep, Server26381.EndPoint.ToString())); Assert.True(sentinels.Length == 2); Assert.All(expected, ep => Assert.Contains(ep, actual)); }
public async Task SentinelSlavesAsyncTest() { var slaveConfigs = await Server26379.SentinelSlavesAsync(ServiceName).ForAwait(); Assert.True(slaveConfigs.Length > 0); Assert.True(slaveConfigs[0].ToDictionary().ContainsKey("name")); Assert.Equal("slave", slaveConfigs[0].ToDictionary()["flags"]); foreach (var config in slaveConfigs) { foreach (var kvp in config) { Log("{0}:{1}", kvp.Key, kvp.Value); } } }
public async Task SentinelMastersAsyncTest() { var masterConfigs = await Server26379.SentinelMastersAsync().ForAwait(); Assert.Single(masterConfigs); Assert.True(masterConfigs[0].ToDictionary().ContainsKey("name")); Assert.Equal(ServiceName, masterConfigs[0].ToDictionary()["name"]); Assert.Equal("master", masterConfigs[0].ToDictionary()["flags"]); foreach (var config in masterConfigs) { foreach (var kvp in config) { Log("{0}:{1}", kvp.Key, kvp.Value); } } }
public async Task SentinelGetSentinelAddressesTest() { var addresses = await Server26379.SentinelGetSentinelAddresses(ServiceName).ForAwait(); Assert.Contains(Server26380.EndPoint, addresses); Assert.Contains(Server26381.EndPoint, addresses); addresses = await Server26380.SentinelGetSentinelAddresses(ServiceName).ForAwait(); Assert.Contains(Server26379.EndPoint, addresses); Assert.Contains(Server26381.EndPoint, addresses); addresses = await Server26381.SentinelGetSentinelAddresses(ServiceName).ForAwait(); Assert.Contains(Server26379.EndPoint, addresses); Assert.Contains(Server26380.EndPoint, addresses); }
public async Task GetSentinelMasterConnectionFailoverAsyncTest() { var conn = Conn.GetSentinelMasterConnection(new ConfigurationOptions { ServiceName = ServiceName }); var endpoint = conn.currentSentinelMasterEndPoint.ToString(); await Server26379.SentinelFailoverAsync(ServiceName).ForAwait(); Thread.Sleep(5000); var conn1 = Conn.GetSentinelMasterConnection(new ConfigurationOptions { ServiceName = ServiceName }); var endpoint1 = conn1.currentSentinelMasterEndPoint.ToString(); Assert.NotEqual(endpoint, endpoint1); }
public void GetSentinelMasterConnectionFailoverTest() { var conn = Conn.GetSentinelMasterConnection(new ConfigurationOptions { ServiceName = ServiceName }); var endpoint = conn.currentSentinelMasterEndPoint.ToString(); Server26379.SentinelFailover(ServiceName); Thread.Sleep(3000); var conn1 = Conn.GetSentinelMasterConnection(new ConfigurationOptions { ServiceName = ServiceName }); var endpoint1 = conn1.currentSentinelMasterEndPoint.ToString(); Assert.NotEqual(endpoint, endpoint1); }