public void When_Flushing_Bucket_Data_Are_Removed()
        {
            var storedConfig = ConfigurationManager.GetSection("couchbase") as ICouchbaseClientConfiguration;
            var config       = new CouchbaseClientConfiguration();

            config.Bucket   = "Bucket-" + DateTime.Now.Ticks;
            config.Username = storedConfig.Username;
            config.Password = storedConfig.Password;
            config.Urls.Add(storedConfig.Urls[0]);

            var cluster = new CouchbaseCluster(config);

            cluster.CreateBucket(new Bucket
            {
                Name       = config.Bucket,
                AuthType   = AuthTypes.Sasl,
                BucketType = BucketTypes.Membase,
                Quota      = new Quota {
                    RAM = 100
                },
                ReplicaNumber = ReplicaNumbers.Zero,
                FlushOption   = FlushOptions.Enabled
            }
                                 );

            Bucket bucket = null;

            for (int i = 0; i < 10; i++)             //wait for bucket to be ready to accept ops
            {
                bucket = waitForBucket(config.Bucket);
                if (bucket.Nodes.First().Status == "healthy")
                {
                    break;
                }
                Thread.Sleep(1000);
            }

            Assert.That(bucket, Is.Not.Null);

            var client = new CouchbaseClient(config);

            var storeResult = client.ExecuteStore(StoreMode.Set, "SomeKey", "SomeValue");

            Assert.That(storeResult.Success, Is.True, "Message: " + storeResult.Message);

            var getResult = client.ExecuteGet <string>("SomeKey");

            Assert.That(getResult.Success, Is.True);
            Assert.That(getResult.Value, Is.StringMatching("SomeValue"));

            cluster.FlushBucket(config.Bucket);

            getResult = client.ExecuteGet <string>("SomeKey");
            Assert.That(getResult.Success, Is.False);
            Assert.That(getResult.Value, Is.Null);

            _Cluster.DeleteBucket(config.Bucket);
        }
        static void ParallerInsert(CouchbaseClient client, int n)
        {
            var options = new ParallelOptions {
                MaxDegreeOfParallelism = 4
            };

            Parallel.For(0, n, options, i =>
            {
                var key   = "key" + i;
                var value = "value" + i;

                var result = client.ExecuteStore(StoreMode.Set, key, value);
                if (result.Success)
                {
                    Console.WriteLine("Write Key: {0} - Value: {1}", key, value);
                    var result2 = client.ExecuteGet <string>(key);
                    if (result2.Success)
                    {
                        Console.WriteLine("Read Key: {0} - Value: {1}", key, result2.Value);
                    }
                    else
                    {
                        Console.WriteLine("Read Error: {0} - {1}", key, result.Message);
                    }
                }
                else
                {
                    Console.WriteLine("Write Error: {0} - {1}", key, result.Message);
                }
            });
        }
        static void SynchronousInsert(CouchbaseClient client, int n)
        {
            for (int i = 0; i < n; i++)
            {
                var key   = "key" + i;
                var value = "value" + i;

                var result = client.ExecuteStore(StoreMode.Set, key, value);

                if (result.Success)
                {
                    Console.WriteLine("Write Key: {0} - Value: {1}", key, value);
                    var result2 = client.ExecuteGet <string>(key);
                    if (result2.Success)
                    {
                        Console.WriteLine("Read Key: {0} - Value: {1}", key, result2.Value);
                    }
                    else
                    {
                        Console.WriteLine("Read Error: {0} - {1}", key, result.Message);
                    }
                }
                else
                {
                    Console.WriteLine("Write Error: {0} - {1}", key, result.Message);
                }
            }
        }
        static void SynchronousInsert(CouchbaseClient client, int n)
        {
            for (int i = 0; i < n; i++)
            {
                var key = "key" + i;
                var value = "value" + i;

                var result = client.ExecuteStore(StoreMode.Set, key, value);

                if (result.Success)
                {
                    Console.WriteLine("Write Key: {0} - Value: {1}", key, value);
                    var result2 = client.ExecuteGet<string>(key);
                    if (result2.Success)
                    {
                        Console.WriteLine("Read Key: {0} - Value: {1}", key, result2.Value);
                    }
                    else
                    {
                        Console.WriteLine("Read Error: {0} - {1}", key, result.Message);
                    }
                }
                else
                {
                    Console.WriteLine("Write Error: {0} - {1}", key, result.Message);
                }
            }
        }
        static void ParallerInsert(CouchbaseClient client, int n)
        {
            var options = new ParallelOptions { MaxDegreeOfParallelism = 4 };

            Parallel.For(0, n, options, i =>
            {
                var key = "key" + i;
                var value = "value" + i;

                var result = client.ExecuteStore(StoreMode.Set, key, value);
                if (result.Success)
                {
                    Console.WriteLine("Write Key: {0} - Value: {1}", key, value);
                    var result2 = client.ExecuteGet<string>(key);
                    if (result2.Success)
                    {
                        Console.WriteLine("Read Key: {0} - Value: {1}", key, result2.Value);
                    }
                    else
                    {
                        Console.WriteLine("Read Error: {0} - {1}", key, result.Message);
                    }
                }
                else
                {
                    Console.WriteLine("Write Error: {0} - {1}", key, result.Message);
                }
            });
        }
Example #6
0
        /// <summary>
        /// Gets a list of documents.
        /// </summary>
        /// <param name="documentKey">The document key.</param>
        /// <param name="isRetry">if set to <c>true</c> [is retry].</param>
        /// <returns>List{`0}.</returns>
        public virtual List <T> GetListDocument(string documentKey, bool isRetry = false)
        {
            // make sure the document key is actually set
            if (string.IsNullOrEmpty(documentKey))
            {
                return(null);
            }

            var getResult = Client.ExecuteGet <string>(documentKey);

            // make sure the get operation succeeded
            if (getResult.Success && getResult.HasValue)
            {
                var result  = getResult.Value;
                var docList = result.FromJson <List <T> >();
                return(docList);
            }

            if (!isRetry)
            {
                LogCouchbaseOperationResult(documentKey, ToString(), "Failed to Get a list of documents", getResult);
                GetListDocument(documentKey, true);
            }

            return(null);
        }
Example #7
0
        public override void Run()
        {
            var config = new CouchbaseClientConfiguration();
            config.Urls.Add(new Uri("http://*****:*****@cia.gov",
                Password = "******",
                Logins = 0
            };

            var user2 = new User
            {
                Username = "******",
                Name = "Nicholas Brody",
                Email = "*****@*****.**",
                Password = "******",
                Logins = 0
            };

            //store the user - ExecuteStore returns detailed error info, if any
            var result1 = client.ExecuteStore(StoreMode.Set, user1.Email, user1);
            if (!result1.Success)
            {
                Console.WriteLine("Store failed with message {0} and status code {1}", result1.Message, result1.StatusCode);

                if (result1.Exception != null)
                {
                    throw result1.Exception;
                }
            }

            var result2 = client.ExecuteStore(StoreMode.Set, user2.Email, user2);
            //same check as result1 would be useful

            var doc = client.Get<User>(user1.Email);
            Console.WriteLine(doc.Name);

            //get doc with extended info
            var result = client.ExecuteGet<User>(user1.Email);

            //update login count
            doc.Logins += 1;

            //update document (ignore errors for lab)
            client.ExecuteStore(StoreMode.Replace, user1.Email, doc);

            doc = client.Get<User>(user1.Email);
            Console.WriteLine("User {0} had {1} logins", doc.Name, doc.Logins);

            client.Remove(user1.Email);
            client.Remove(user2.Email);
        }
Example #8
0
        public override void Run()
        {
            var config = new CouchbaseClientConfiguration();

            config.Urls.Add(new Uri("http://localhost:8091/pools/"));
            config.Bucket = "default";

            var client = new CouchbaseClient(config);

            var post = new Post
            {
                Title    = "Using Couchbase and .NET",
                Body     = "Start by getting the client at Nuget.",
                Comments = new List <string> {
                    "Great post!"
                },
                Slug = "Using_Couchbase_Net"
            };

            client.ExecuteStore(StoreMode.Set, post.Slug, post);

            var get1 = client.ExecuteGet <Post>(post.Slug);
            var get2 = client.ExecuteGet <Post>(post.Slug);

            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Set the Data, then Retrieve Two Copies of the Document");
            Console.WriteLine();
            Console.WriteLine("Both v1 and v2 are identical and have identical CAS [(cas1) {0} == {1} (cas2)]", get1.Cas, get2.Cas);
            Console.WriteLine();
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Now We'll update the document which results in a new CAS");
            Console.WriteLine();

            get1.Value.Comments.Add("Wicked good post!");

            var result = client.ExecuteStore(StoreMode.Set, post.Slug, get1.Value);

            get1 = client.ExecuteGet <Post>(post.Slug);

            Console.WriteLine("Now CAS has changed [(cas1) {0} != {1} (cas2)]", get1.Cas, get2.Cas);
            Console.WriteLine();
            Console.WriteLine("-------------------------------------");
        }
        public void Client_Operations_Succeed_When_Bootstrapping_To_Pools_Root_Uri()
        {
            var config = ConfigSectionUtils.GetConfigSection<CouchbaseClientSection>("pools-config");
            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
            StoreAssertPass(storeResult);
            var getResult = client.ExecuteGet(key);
            GetAssertPass(getResult, value);
        }
        public void Client_Operations_Succeed_When_Heartbeat_Is_Not_Configured()
        {
            var config = ConfigSectionUtils.GetConfigSection<CouchbaseClientSection>("min-config");
            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
            StoreAssertPass(storeResult);

            var getResult = client.ExecuteGet(key);
            GetAssertPass(getResult, value);
        }
        public void When_Getting_A_Key_From_A_Down_Node_No_Exception_Is_Thrown_And_Success_Is_False()
        {
            var config = new CouchbaseClientConfiguration();
            config.Urls.Add(new Uri("http://doesnotexist:8091/pools/"));
            config.Bucket = "default";

            var client = new CouchbaseClient(config);
            var getResult = client.ExecuteGet("foo");

            Assert.That(getResult.Success, Is.False);
            Assert.That(getResult.Message, Is.StringContaining(ClientErrors.FAILURE_NODE_NOT_FOUND));
        }
Example #12
0
        private static void PerformGetSet(CouchbaseClient client, int i)
        {
            var key      = string.Format("key{0}", i);
            var document = string.Concat("{\"value\":\"", i, "\"}");

            var set = client.ExecuteStore(StoreMode.Set, key, document);

            Console.WriteLine("Set: {0} - {1} - {2}", key, set.Success, Thread.CurrentThread.ManagedThreadId);

            var get = client.ExecuteGet <dynamic>(key);

            Console.WriteLine("Get: {0} - {1} - {2}", key, get.Success, Thread.CurrentThread.ManagedThreadId);
        }
        public void Client_Operations_Succeed_When_Heartbeat_Is_Disabled()
        {
            var config = ConfigSectionUtils.GetConfigSection<CouchbaseClientSection>("heartbeat-config-off");
            using (var client = new CouchbaseClient(config))
            {
                string key = TestUtils.GetUniqueKey(), value = TestUtils.GetRandomString();
                var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
                TestUtils.StoreAssertPass(storeResult);

                var getResult = client.ExecuteGet(key);
                TestUtils.GetAssertPass(getResult, value);
            }
        }
Example #14
0
        public void When_Getting_A_Key_From_A_Down_Node_No_Exception_Is_Thrown_And_Success_Is_False()
        {
            var config = new CouchbaseClientConfiguration();

            config.Urls.Add(new Uri("http://doesnotexist:8091/pools/"));
            config.Bucket = "default";

            var client    = new CouchbaseClient(config);
            var getResult = client.ExecuteGet("foo");

            Assert.That(getResult.Success, Is.False);
            Assert.That(getResult.Message, Is.StringContaining(ClientErrors.FAILURE_NODE_NOT_FOUND));
        }
        public void Client_Operations_Succeed_When_Bootstrapping_To_Pools_Default_Root_Uri()
        {
            var config = ConfigSectionUtils.GetConfigSection<CouchbaseClientSection>("pools-default-config");
            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
            Assert.That(storeResult.Success, Is.True, "Success was false");
            Assert.That(storeResult.Message, Is.Null.Or.Empty, "Message was not empty");

            var getResult = client.ExecuteGet(key);
            GetAssertPass(getResult, value);
        }
Example #16
0
        public void Client_Operations_Succeed_When_Bootstrapping_To_Pools_Root_Uri()
        {
            var config = ConfigSectionUtils.GetConfigSection <CouchbaseClientSection>("pools-config");
            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var    storeResult = client.ExecuteStore(StoreMode.Add, key, value);

            StoreAssertPass(storeResult);
            var getResult = client.ExecuteGet(key);

            GetAssertPass(getResult, value);
        }
        public void Client_Operations_Succeed_When_Heartbeat_Is_Disabled()
        {
            var config = ConfigSectionUtils.GetConfigSection <CouchbaseClientSection>("heartbeat-config-off");

            using (var client = new CouchbaseClient(config))
            {
                string key = TestUtils.GetUniqueKey(), value = TestUtils.GetRandomString();
                var    storeResult = client.ExecuteStore(StoreMode.Add, key, value);
                TestUtils.StoreAssertPass(storeResult);

                var getResult = client.ExecuteGet(key);
                TestUtils.GetAssertPass(getResult, value);
            }
        }
        public void When_Flushing_Bucket_Data_Are_Removed()
        {
            var config = new CouchbaseClientConfiguration();

            config.Urls.Add(new Uri("http://10.0.0.79:8091/pools/default"));
            config.Bucket = "default";

            var client      = new CouchbaseClient(config);
            var storeResult = client.ExecuteStore(StoreMode.Set, "SomeKey", "SomeValue");

            Assert.That(storeResult.Success, Is.True);

            var getResult = client.ExecuteGet <string>("SomeKey");

            Assert.That(getResult.Success, Is.True);
            Assert.That(getResult.Value, Is.StringMatching("SomeValue"));

            _Cluster.FlushBucket("default");

            getResult = client.ExecuteGet <string>("SomeKey");
            Assert.That(getResult.Success, Is.False);
            Assert.That(getResult.Value, Is.Null);
        }
        public void Client_Operations_Succeed_When_Heartbeat_Is_Not_Configured()
        {
            var config = ConfigSectionUtils.GetConfigSection <CouchbaseClientSection>("min-config");
            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var    storeResult = client.ExecuteStore(StoreMode.Add, key, value);

            StoreAssertPass(storeResult);

            var getResult = client.ExecuteGet(key);

            GetAssertPass(getResult, value);
        }
Example #20
0
 //---------------------------------------------------------------------
 public bool executeGet(string db_key, out string json_data)
 {
     Enyim.Caching.Memcached.Results.IGetOperationResult <string> ret = mCouchbaseClient.ExecuteGet <string>(db_key);
     if (ret.Success)
     {
         json_data = ret.Value;
         return(true);
     }
     else
     {
         json_data = null;
         return(false);
     }
 }
        public void Client_Operations_Succeed_When_Bootstrapping_To_Pools_Root_Uri()
        {
            var config = new CouchbaseClientConfiguration();
            config.Urls.Add(new Uri("http://localhost:8091/pools"));
            config.Bucket = "default";

            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
            StoreAssertPass(storeResult);

            var getResult = client.ExecuteGet(key);
            GetAssertPass(getResult, value);
        }
Example #22
0
        public void Client_Operations_Succeed_When_Bootstrapping_To_Pools_Default_Root_Uri()
        {
            var config = ConfigSectionUtils.GetConfigSection <CouchbaseClientSection>("pools-default-config");
            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var    storeResult = client.ExecuteStore(StoreMode.Add, key, value);

            Assert.That(storeResult.Success, Is.True, "Success was false");
            Assert.That(storeResult.Message, Is.Null.Or.Empty, "Message was not empty");

            var getResult = client.ExecuteGet(key);

            GetAssertPass(getResult, value);
        }
        public void Client_Operations_Succeed_When_Bootstrapping_To_Pools_Default_Root_Uri()
        {
            var config = new CouchbaseClientConfiguration();
            config.Urls.Add(new Uri("http://localhost:8091/pools/default"));
            config.Bucket = "default";

            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
            Assert.That(storeResult.Success, Is.True, "Success was false");
            Assert.That(storeResult.Message, Is.Null.Or.Empty, "Message was not empty");

            var getResult = client.ExecuteGet(key);
            GetAssertPass(getResult, value);
        }
Example #24
0
        public void When_ExecuteGet_Is_Called_With_Invalid_Configuration_Errors_Are_Returned()
        {
            using (var client = new CouchbaseClient("bad-config"))
            {
                var keys    = new[] { "exist1", "exist2" };
                var results = client.ExecuteGet(keys);
                Assert.AreEqual(keys.Count(), results.Count);

                foreach (var result in results)
                {
                    Assert.IsFalse(result.Value.HasValue);
                    Assert.IsFalse(result.Value.Success);
                    Assert.AreEqual(StatusCode.UnableToLocateNode.ToInt(), result.Value.StatusCode);
                }
            }
        }
        public void When_ExecuteGet_Is_Called_With_Invalid_Configuration_Errors_Are_Returned()
        {
            using (var client = new CouchbaseClient("bad-config"))
            {
                var keys = new[] { "exist1", "exist2" };
                var results = client.ExecuteGet(keys);
                Assert.AreEqual(keys.Count(), results.Count);

                foreach (var result in results)
                {
                    Assert.IsFalse(result.Value.HasValue);
                    Assert.IsFalse(result.Value.Success);
                    Assert.AreEqual(StatusCode.UnableToLocateNode.ToInt(), result.Value.StatusCode);
                }
            }
        }
        public void Client_Operations_Succeed_When_Heartbeat_Is_Configured()
        {
            var config = new CouchbaseClientConfiguration();
            config.Urls.Add(new Uri("http://localhost:8091/pools"));
            config.Bucket = "default";
            config.HeartbeatMonitor = new HeartbeatMonitorElement();
            config.HeartbeatMonitor.Enabled = true;
            config.HeartbeatMonitor.Interval = 100;
            config.HeartbeatMonitor.Uri = "http://localhost:8091/pools";

            var client = new CouchbaseClient(config);

            string key = GetUniqueKey(), value = GetRandomString();
            var storeResult = client.ExecuteStore(StoreMode.Add, key, value);
            StoreAssertPass(storeResult);

            var getResult = client.ExecuteGet(key);
            GetAssertPass(getResult, value);
        }
Example #27
0
 /// <summary>
 /// Gets a document from the database with the specified id.
 /// </summary>
 /// <param name="id">The id of the document to retrieve.</param>
 /// <returns>The document with the specified id, or null if there was an error, or the id does not exist.</returns>
 public override dynamic Get(string id)
 {
     if (!string.IsNullOrWhiteSpace(id))
     {
         var result = client.ExecuteGet(id);
         if (result.Success)
         {
             return(result.Value);
         }
         else
         {
             return(null);
         }
     }
     else
     {
         return(null);
     }
 }
Example #28
0
        public override void Run()
        {
            var config = new CouchbaseClientConfiguration();

            config.Urls.Add(new Uri("http://*****:*****@cia.gov",
                Password = "******",
                Logins   = 0
            };

            var user2 = new User
            {
                Username = "******",
                Name     = "Nicholas Brody",
                Email    = "*****@*****.**",
                Password = "******",
                Logins   = 0
            };

            //store the user - ExecuteStore returns detailed error info, if any
            var result1 = client.ExecuteStore(StoreMode.Set, user1.Email, user1);

            if (!result1.Success)
            {
                Console.WriteLine("Store failed with message {0} and status code {1}", result1.Message, result1.StatusCode);

                if (result1.Exception != null)
                {
                    throw result1.Exception;
                }
            }

            var result2 = client.ExecuteStore(StoreMode.Set, user2.Email, user2);
            //same check as result1 would be useful

            var doc = client.Get <User>(user1.Email);

            Console.WriteLine(doc.Name);

            //get doc with extended info
            var result = client.ExecuteGet <User>(user1.Email);

            //update login count
            doc.Logins += 1;

            //update document (ignore errors for lab)
            client.ExecuteStore(StoreMode.Replace, user1.Email, doc);

            doc = client.Get <User>(user1.Email);
            Console.WriteLine("User {0} had {1} logins", doc.Name, doc.Logins);

            client.Remove(user1.Email);
            client.Remove(user2.Email);
        }
        public void When_Flushing_Bucket_Data_Are_Removed()
        {
            var config = new CouchbaseClientConfiguration();
            config.Urls.Add(new Uri("http://10.0.0.79:8091/pools/default"));
            config.Bucket = "default";

            var client = new CouchbaseClient(config);
            var storeResult = client.ExecuteStore(StoreMode.Set, "SomeKey", "SomeValue");

            Assert.That(storeResult.Success, Is.True);

            var getResult = client.ExecuteGet<string>("SomeKey");
            Assert.That(getResult.Success, Is.True);
            Assert.That(getResult.Value, Is.StringMatching("SomeValue"));

            _Cluster.FlushBucket("default");

            getResult = client.ExecuteGet<string>("SomeKey");
            Assert.That(getResult.Success, Is.False);
            Assert.That(getResult.Value, Is.Null);
        }
Example #30
0
 public IGetOperationResult Get(string key)
 {
     return(_client.ExecuteGet(key));
 }
        public void When_Flushing_Bucket_Data_Are_Removed()
        {
            var storedConfig = ConfigurationManager.GetSection("couchbase") as ICouchbaseClientConfiguration;
            var config = new CouchbaseClientConfiguration();

            config.Bucket = "Bucket-" + DateTime.Now.Ticks;
            config.Username = storedConfig.Username;
            config.Password = storedConfig.Password;
            config.Urls.Add(storedConfig.Urls[0]);

            var cluster = new CouchbaseCluster(config);
            cluster.CreateBucket(new Bucket
                {
                    Name = config.Bucket,
                    AuthType = AuthTypes.Sasl,
                    BucketType = BucketTypes.Membase,
                    Quota = new Quota { RAM = 100 },
                    ReplicaNumber = ReplicaNumbers.Zero,
                    FlushOption = FlushOptions.Enabled
                }
            );

            for (int i = 0; i < 10; i++) //wait for bucket to be ready to accept ops
            {
                _bucket = waitForBucket(config.Bucket);
                if (_bucket.Nodes.First().Status == "healthy") break;
                Thread.Sleep(1000);
            }

            Assert.That(_bucket, Is.Not.Null);

            using (var client = new CouchbaseClient(config))
            {
                var storeResult = client.ExecuteStore(StoreMode.Set, "SomeKey", "SomeValue");
                Assert.That(storeResult.Success, Is.True, "Message: " + storeResult.Message);

                var getResult = client.ExecuteGet<string>("SomeKey");
                Assert.That(getResult.Success, Is.True);
                Assert.That(getResult.Value, Is.StringMatching("SomeValue"));

                cluster.FlushBucket(config.Bucket);

                getResult = client.ExecuteGet<string>("SomeKey");
                Assert.That(getResult.Success, Is.False);
                Assert.That(getResult.Value, Is.Null);
            }
        }