public void When_Execute_Getting_Key_With_Lock_And_Expiry_Second_Lock_Attempt_Does_Not_Change_Expiry()
        {
            var kv = KeyValueUtils.GenerateKeyAndValue("getl");

            var storeResult = TestUtils.Store(Client, StoreMode.Set, kv.Item1, kv.Item2);

            TestUtils.StoreAssertPass(storeResult);

            var getlResult = Client.ExecuteGetWithLock(kv.Item1, TimeSpan.FromSeconds(6));

            Assert.That(getlResult.Value, Is.EqualTo(kv.Item2));

            var otherGetlResult = Client.ExecuteGetWithLock(kv.Item1, TimeSpan.FromSeconds(2));

            Assert.That(otherGetlResult.Cas, Is.Not.EqualTo(getlResult.Cas));
            Assert.That(otherGetlResult.StatusCode, Is.EqualTo((int)CouchbaseStatusCodeEnums.LockError));

            Thread.Sleep(3000);

            storeResult = Client.ExecuteStore(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue());
            Assert.That(storeResult.Success, Is.False);
            Assert.That(storeResult.StatusCode.Value, Is.EqualTo((int)StatusCodeEnums.DataExistsForKey));

            Thread.Sleep(4000);

            var newValue = KeyValueUtils.GenerateValue();

            storeResult = Client.ExecuteStore(StoreMode.Set, kv.Item1, newValue);
            Assert.That(storeResult.Success, Is.True, "Failed to update item");

            var getResult = Client.ExecuteGet(kv.Item1);

            TestUtils.GetAssertPass(getResult, newValue);
        }
        public void When_Getting_Key_With_Lock_And_Expiry_Set_Fails_Until_Lock_Expires()
        {
            var kv = KeyValueUtils.GenerateKeyAndValue("getl");

            var storeResult = TestUtils.Store(Client, StoreMode.Set, kv.Item1, kv.Item2);

            TestUtils.StoreAssertPass(storeResult);

            var casResult = Client.GetWithLock(kv.Item1, TimeSpan.FromSeconds(2));

            Assert.That(casResult.Result, Is.EqualTo(kv.Item2));

            storeResult = Client.ExecuteStore(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue());
            Assert.That(storeResult.Success, Is.False);

            Thread.Sleep(3000);

            var newValue = KeyValueUtils.GenerateValue();

            storeResult = Client.ExecuteStore(StoreMode.Set, kv.Item1, newValue);
            Assert.That(storeResult.Success, Is.True);

            var getResult = Client.ExecuteGet(kv.Item1);

            TestUtils.GetAssertPass(getResult, newValue);
        }
        public void When_Execute_Getting_Key_With_Lock_Set_Fails_While_Locked()
        {
            var kv = KeyValueUtils.GenerateKeyAndValue("getl");

            var storeResult = TestUtils.Store(Client, StoreMode.Set, kv.Item1, kv.Item2);

            TestUtils.StoreAssertPass(storeResult);

            var getlResult = Client.ExecuteGetWithLock(kv.Item1);

            Assert.That(getlResult.Value, Is.EqualTo(kv.Item2));

            storeResult = Client.ExecuteStore(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue());
            Assert.That(storeResult.Success, Is.False);
            Assert.That(storeResult.StatusCode.Value, Is.EqualTo((int)StatusCodeEnums.DataExistsForKey));
        }
        public void When_Getting_Key_With_Lock_And_Expiry_Set_Succeeds_With_Valid_Cas()
        {
            var kv = KeyValueUtils.GenerateKeyAndValue("getl");

            var storeResult = TestUtils.Store(Client, StoreMode.Set, kv.Item1, kv.Item2);

            TestUtils.StoreAssertPass(storeResult);

            var casResult = Client.GetWithLock(kv.Item1, TimeSpan.FromSeconds(15));

            Assert.That(casResult.Result, Is.EqualTo(kv.Item2));

            storeResult = Client.ExecuteStore(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue());
            Assert.That(storeResult.Success, Is.False);

            storeResult = Client.ExecuteCas(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue(), casResult.Cas);
            Assert.That(storeResult.Success, Is.True);
        }
Exemple #5
0
        public void When_Generic_Execute_Getting_Key_With_Lock_And_Expiry_Set_Succeeds_With_Valid_Cas()
        {
            var kv = KeyValueUtils.GenerateKeyAndValue("getl");

            var storeResult = Store(StoreMode.Set, kv.Item1, kv.Item2);

            StoreAssertPass(storeResult);

            var getlResult = _Client.ExecuteGetWithLock <string>(kv.Item1, TimeSpan.FromSeconds(15));

            Assert.That(getlResult.Value, Is.EqualTo(kv.Item2));

            storeResult = _Client.ExecuteStore(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue());
            Assert.That(storeResult.Success, Is.False);

            storeResult = _Client.ExecuteCas(StoreMode.Set, kv.Item1, KeyValueUtils.GenerateValue(), getlResult.Cas);
            Assert.That(storeResult.Success, Is.True);
        }