private static HashSet <int> BulkWrite(BerkeleyBulkCursor cursor, out bool blobExists)
        {
            var      keys = new HashSet <int>();
            DateTime d1   = new DateTime(2014, 1, 1);

            for (int i = 0; i < 3000; i++)
            {
                if (i == 500)
                {
                    Byte[] key2   = Encoding.UTF8.GetBytes("blob value");
                    Byte[] value2 = GenerateByteArray(34123);
                    cursor.AddWrite(key2, value2);
                }

                Byte[] key   = Encoding.UTF8.GetBytes((i + 1).ToString());
                String v     = d1.AddDays(i).ToString("dddd dd MMMM yyyy");
                Byte[] value = Encoding.UTF8.GetBytes(v);
                cursor.AddWrite(key, value);
                keys.Add(i + 1);
            }
            var error = cursor.WriteAsync(BerkeleyDbWriteMode.DB_OVERWRITE_DUP).Result;

            error.ThrowIfError();

            blobExists = true;
            return(keys);
        }
        private static void BulkRead(BerkeleyBulkCursor cursor, HashSet <int> keys, bool blobExists)
        {
            var      checkKeys = new HashSet <int>(keys);
            bool     blobFound = false;
            DateTime d1        = new DateTime(2014, 1, 1);

            for (BerkeleyBulkEnumerator buffer = cursor.ReadAsync(Encoding.UTF8.GetBytes("1"), BerkeleyDbOperation.DB_SET).Result;
                 !buffer.NotFound;
                 buffer = cursor.ReadAsync(null, BerkeleyDbOperation.DB_NEXT).Result)
            {
                buffer.Error.ThrowIfError();

                foreach (BerkeleyKeyValueBulk data in buffer)
                {
                    String key = Encoding.UTF8.GetString(data.Key.ToArray());
                    int    i;
                    if (int.TryParse(key, out i))
                    {
                        Assert.IsTrue(checkKeys.Remove(i), "key: " + i + " not exists");

                        String value = Encoding.UTF8.GetString(data.Value.ToArray());
                        Assert.AreEqual(DateTime.ParseExact(value, "dddd dd MMMM yyyy", null), d1.AddDays(i - 1), "bad value: " + value);
                    }
                    else
                    {
                        blobFound = key == "blob value" && data.Value.Count == 34123 && CheckByteArray(data.Value);
                    }
                }
            }

            Assert.AreEqual(checkKeys.Count, 0, "not all keys found");
            Assert.IsTrue(blobFound == blobExists, "blob error");
        }
 public void BulkTest()
 {
     using (var bdb = CreateDb())
         using (var cursor = new BerkeleyBulkCursor(bdb, GetPageSize(bdb)))
         {
             bool          blobExists;
             HashSet <int> keys = BulkWrite(cursor, out blobExists);
             BulkRead(cursor, keys, blobExists);
             keys = BulkDelete(cursor, keys, ref blobExists);
             BulkRead(cursor, keys, blobExists);
         }
 }
        private static HashSet <int> BulkDelete(BerkeleyBulkCursor cursor, HashSet <int> keys, ref bool blobExists)
        {
            foreach (int i in keys.Where(i => (i % 3) == 0))
            {
                cursor.AddDelete(Encoding.UTF8.GetBytes(i.ToString()));
            }
            if (blobExists)
            {
                cursor.AddDelete(Encoding.UTF8.GetBytes("blob value"));
            }

            BerkeleyError error = cursor.DeleteAsync().Result;

            error.ThrowIfError();

            blobExists = false;
            return(new HashSet <int>(keys.Where(i => (i % 3) != 0)));
        }
示例#5
0
        static void Main(string[] args)
        {
            var serviceRootUri = new Uri("http://*****:*****@"D:\гуманитарий с дипломом менеджера.jpg");
                    //ReadFoto(bdb);
                }
            }
        }