//[Test] //public void TestOpCountByVersionLocal_DownLevel() //{ // var config = new ConfigurationOptions // { // EndPoints = { { Config.LocalHost } }, // DefaultVersion = new Version(2, 6, 0), // CommandMap = CommandMap.Create( // new HashSet<string> { "info" }, false) // }; // using (var conn = ConnectionMultiplexer.Connect(config)) // { // TestLockOpCountByVersion(conn, 5, false); // TestLockOpCountByVersion(conn, 3, true); // //TestManualLockOpCountByVersion(conn, 5, false); // //TestManualLockOpCountByVersion(conn, 3, true); // } //} //[Test] //public void TestOpCountByVersionRemote() //{ // using (var conn = Config.GetRemoteConnection(open: false)) // { // TestLockOpCountByVersion(conn, 1, false); // TestLockOpCountByVersion(conn, 1, true); // //TestManualLockOpCountByVersion(conn, 1, false); // //TestManualLockOpCountByVersion(conn, 1, true); // } //} public void TestLockOpCountByVersion(ConnectionMultiplexer conn, int expected, bool existFirst) { const int DB = 0, LockDuration = 30; const string Key = "TestOpCountByVersion"; var db = conn.GetDatabase(DB); db.KeyDelete(Key); var newVal = "us:" + Config.CreateUniqueName(); string expectedVal = newVal; if (existFirst) { expectedVal = "other:" + Config.CreateUniqueName(); db.StringSet(Key, expectedVal, TimeSpan.FromSeconds(LockDuration)); } long countBefore = conn.GetCounters().Interactive.OperationCount; var taken = db.LockTake(Key, newVal, TimeSpan.FromSeconds(LockDuration)); long countAfter = conn.GetCounters().Interactive.OperationCount; string valAfter = db.StringGet(Key); Assert.AreEqual(!existFirst, taken, "lock taken"); Assert.AreEqual(expectedVal, valAfter, "taker"); Console.WriteLine("{0} ops before, {1} ops after", countBefore, countAfter); Assert.AreEqual(expected, (countAfter - countBefore), "expected ops (including ping)"); // note we get a ping from GetCounters }