Ejemplo n.º 1
0
        public void TestIterator()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };

                var actual = new List <string>();
                using (var iterator = db.CreateIterator(new ReadOptions()))
                {
                    iterator.SeekToFirst();
                    while (iterator.IsValid())
                    {
                        var key = iterator.GetKey();
                        actual.Add(key);
                        iterator.Next();
                    }
                }

                Assert.Equal(expected, actual);
            }
        }
Ejemplo n.º 2
0
        public void TestSnapshot()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Remove("New York");

                using (var snapShot = db.CreateSnapshot())
                {
                    var readOptions = new ReadOptions {
                        Snapshot = snapShot
                    };

                    db.Set("New York", "blue");

                    Assert.Equal((string)db.Get("Tampa", readOptions), "green");
                    Assert.Equal((string)db.Get("London", readOptions), "red");

                    // Snapshot taken before key was updates
                    Assert.Null(db.Get("New York", readOptions));
                }

                // can see the change now
                Assert.Equal((string)db.Get("New York"), "blue");
            }
        }
Ejemplo n.º 3
0
        public void TestWriteBatch()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("NA", "Na");

                using (var batch = new WriteBatch())
                {
                    batch.Remove("NA")
                    .Set("Tampa", "Green")
                    .Set("London", "red")
                    .Set("New York", "blue");
                    db.Write(batch);
                }

                var expected = new[] { "London", "New York", "Tampa" };
                var actual   = from kv in db
                               select(string) kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
Ejemplo n.º 4
0
        public void TestIterator()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };

                var actual = new List<string>();
                using(var iterator = db.CreateIterator(new ReadOptions()))
                {
                    iterator.SeekToFirst();
                    while(iterator.IsValid())
                    {
                        var key = iterator.GetKey();
                        actual.Add(key);
                        iterator.Next();
                    }
                }

                Assert.Equal(expected, actual);

            }
        }
Ejemplo n.º 5
0
        public void TestGetProperty()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                var r    = new Random(0);
                var data = "";
                for (var i = 0; i < 1024; i++)
                {
                    data += 'a' + r.Next(26);
                }

                for (int i = 0; i < 5 * 1024; i++)
                {
                    db.Set(string.Format("row{0}", i), data);
                }

                var stats = db.PropertyValue("leveldb.stats");

                Assert.NotNull(stats);
                Assert.True(stats.Contains("Compactions"));
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// set value
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static void Set(string key, string value)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         db.Set(key, value);
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// set value
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static void Set <T>(string key, T value)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         db.Set(key, value.ToByte());
     }
 }
Ejemplo n.º 8
0
        public void TestEnumerable()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };
                var actual   = from kv in db
                               select(string) kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
Ejemplo n.º 9
0
        public void ComparatorTest()
        {
            using (var database = new LDB(DatabasePath, new Options()
            {
                CreateIfMissing = true
            }))
            {
                for (int i = 0; i < 20; i++)
                {
                    database.Set("AA:" + i, "valueA" + i);
                    database.Set("BB:" + i, "valueB" + i);
                    database.Set("CC:" + i, "valueC" + i);
                    database.Set("BBX:" + i, "valueBX" + i);
                }
            }

            using (var database = new LDB(DatabasePath, new Options()))
            {
                using (var iter = database.CreateIterator())
                {
                    int testCount = 0;
                    iter.Seek("BB:");
                    while (iter.IsValid())
                    {
                        string key = iter.GetKey();
                        if (!key.StartsWith("BB:"))
                        {
                            break;
                        }

                        string value = iter.GetValue();
                        testCount++;
                        Console.WriteLine("{0} -> {1}", key, value);

                        iter.Next();
                    }

                    Assert.Equal(20, testCount);
                }
            }
        }
Ejemplo n.º 10
0
        public void TestCRUD()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                Assert.Equal((string)db.Get("Tampa"), "green");
                Assert.Equal((string)db.Get("London"), "red");
                Assert.Equal((string)db.Get("New York"), "blue");

                db.Remove("New York");

                Assert.Null(db.Get("New York"));

                db.Remove("New York");
            }
        }
Ejemplo n.º 11
0
 public void Intro()
 {
     using(var database = new LDB(DatabasePath, new Options() { CreateIfMissing = true }))
     {
         database.Set("key1", "value1");
         Assert.Equal("value1", (string)database.Get("key1"));
         Assert.True(database.Get("key1") != null);
         database.Remove("key1");
         Assert.False(database.Get("key1") != null);
         Assert.Null(database.Get("key1"));
     }
 }
Ejemplo n.º 12
0
        public void TestCRUD()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                Assert.Equal((string)db.Get("Tampa"), "green");
                Assert.Equal((string)db.Get("London"), "red");
                Assert.Equal((string)db.Get("New York"), "blue");

                db.Remove("New York");

                Assert.Null(db.Get("New York"));

                db.Remove("New York");
            }
        }
Ejemplo n.º 13
0
 public void Intro()
 {
     using (var database = new LDB(DatabasePath, new Options()
     {
         CreateIfMissing = true
     }))
     {
         database.Set("key1", "value1");
         Assert.Equal("value1", (string)database.Get("key1"));
         Assert.True(database.Get("key1") != null);
         database.Remove("key1");
         Assert.False(database.Get("key1") != null);
         Assert.Null(database.Get("key1"));
     }
 }
Ejemplo n.º 14
0
        public void ComparatorTest()
        {
            using(var database = new LDB(DatabasePath, new Options() { CreateIfMissing = true }))
            {
                for(int i = 0; i < 20; i++)
                {
                    database.Set("AA:" + i, "valueA" + i);
                    database.Set("BB:" + i, "valueB" + i);
                    database.Set("CC:" + i, "valueC" + i);
                    database.Set("BBX:" + i, "valueBX" + i);
                }
            }

            using(var database = new LDB(DatabasePath, new Options()))
            {
                using(var iter = database.CreateIterator())
                {
                    int testCount = 0;
                    iter.Seek("BB:");
                    while(iter.IsValid())
                    {
                        string key = iter.GetKey();
                        if(!key.StartsWith("BB:")) break;

                        string value = iter.GetValue();
                        testCount++;
                        Console.WriteLine("{0} -> {1}", key, value);

                        iter.Next();
                    }

                    Assert.Equal(20, testCount);
                }
            }

        }
Ejemplo n.º 15
0
        public void TestEnumerable()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };
                var actual = from kv in db
                             select (string)kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
Ejemplo n.º 16
0
        public void TestGetProperty()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                var r = new Random(0);
                var data = "";
                for(var i = 0; i < 1024; i++)
                {
                    data += 'a' + r.Next(26);
                }

                for(int i = 0; i < 5 * 1024; i++)
                {
                    db.Set(string.Format("row{0}", i), data);
                }

                var stats = db.PropertyValue("leveldb.stats");

                Assert.NotNull(stats);
                Assert.True(stats.Contains("Compactions"));
            }
        }
Ejemplo n.º 17
0
        public void TestWriteBatch()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("NA", "Na");

                using(var batch = new WriteBatch())
                {
                    batch.Remove("NA")
                         .Set("Tampa", "Green")
                         .Set("London", "red")
                         .Set("New York", "blue");
                    db.Write(batch);
                }

                var expected = new[] { "London", "New York", "Tampa" };
                var actual = from kv in db
                             select (string)kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
Ejemplo n.º 18
0
        public void Cache()
        {
            Database.Dispose();

            // open the DB with a cache that is not owned by LevelDB, then
            // close DB and then free the cache
            var options = new Options()
            {
                CacheSize = 64
            };
            Database = new LDB(DatabasePath, options);
            options = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Database.Set("key1", "value1");
            Database.Dispose();
            Database = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Ejemplo n.º 19
0
        public void TestSnapshot()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Remove("New York");

                using(var snapShot = db.CreateSnapshot())
                {
                    var readOptions = new ReadOptions { Snapshot = snapShot };

                    db.Set("New York", "blue");

                    Assert.Equal((string)db.Get("Tampa", readOptions), "green");
                    Assert.Equal((string)db.Get("London", readOptions), "red");

                    // Snapshot taken before key was updates
                    Assert.Null(db.Get("New York", readOptions));
                }

                // can see the change now
                Assert.Equal((string)db.Get("New York"), "blue");

            }
        }