Пример #1
0
        private void InsertKey()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            byte[] k  = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                env.Create("ntest.db");
                db    = env.CreateDatabase(1);
                k[0]  = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0]  = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0]  = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
Пример #2
0
 public void Flush()
 {
     Hamster.Environment env = new Hamster.Environment();
     env.Create("ntest.db");
     env.Flush();
     env.Close();
 }
Пример #3
0
        private void InsertKeyInvalidParam()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            try {
                db.Insert(null, r);
            }
            catch (NullReferenceException) {
            }
            try {
                db.Insert(k, null);
            }
            catch (NullReferenceException) {
            }
            try {
                db.Insert(k, r, 9999);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
            }
            db.Close();
            env.Close();
        }
Пример #4
0
        private void SetComparator()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            byte[]      k     = new byte[5];
            byte[]      r     = new byte[5];
            Parameter[] param = new Parameter[1];
            param[0]       = new Parameter();
            param[0].name  = HamConst.HAM_PARAM_KEY_TYPE;
            param[0].value = HamConst.HAM_TYPE_CUSTOM;

            compareCounter = 0;
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1, 0, param);
                db.SetCompareFunc(new CompareFunc(MyCompareFunc));
                db.Insert(k, r);
                k[0] = 1;
                db.Insert(k, r);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
            Assert.AreEqual(1, compareCounter);
        }
Пример #5
0
        public override void Init(int flowCount, long flowRecordCount)
        {
            string path = Path.Combine(DataDirectory, String.Format("{0}..hamster", CollectionName));

            enviroment = new Hamster.Environment();
            enviroment.Create(path, 0, 0664, new Parameter[] { GetCacheParam(CACHE_SIZE) });
            database = enviroment.CreateDatabase((short)1, 0, new Parameter[] { GetKeySizeParam(8) });
        }
        public override void Init(int flowCount, long flowRecordCount)
        {
            string path = Path.Combine(DataDirectory, String.Format("{0}..hamster", CollectionName));

            enviroment = new Hamster.Environment();
            enviroment.Create(path, 0, 0664, new Parameter[] { GetCacheParam(CACHE_SIZE) });
            database = enviroment.CreateDatabase((short)1, 0, new Parameter[] { GetKeySizeParam(8) });
        }
Пример #7
0
 public void CreateWithParameters2()
 {
     using (Hamster.Environment env = new Hamster.Environment())
     {
         env.Create("ntest.db");
         using (Database db = env.CreateDatabase(13, HamConst.HAM_DISABLE_VAR_KEYLEN, new Parameter[0])) { }
     }
 }
Пример #8
0
 private void CreateWithParameters2()
 {
     using (Hamster.Environment env = new Hamster.Environment())
     {
         env.Create("ntest.db");
         using (Database db = env.CreateDatabase(13, 0,
                                                 new Parameter[0])) { }
     }
 }
Пример #9
0
        public void GetEnvironment()
        {
            Database db = new Database();

            db.Create("ntest.db");
            Hamster.Environment env = db.GetEnvironment();
            Assert.AreNotEqual(0, env.GetHandle());
            db.Close();
        }
Пример #10
0
 public void CreateStringIntInt()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db", 0, 0644);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #11
0
 public void CreateStringInt()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create(null, HamConst.HAM_IN_MEMORY_DB);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #12
0
 public void CreateStringNull()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create(null);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
 }
Пример #13
0
 public void OpenStringNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Open("ntestxxxxx.db");
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_FILE_NOT_FOUND, e.ErrorCode);
     }
 }
Пример #14
0
 public void CreateStringInt()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create(null, HamConst.HAM_IN_MEMORY_DB);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #15
0
 public void CreateString()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db");
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #16
0
 public void CreateDatabaseNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db");
         Database db = env.CreateDatabase((short)0);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     env.Close();
 }
Пример #17
0
 public void OpenDatabaseNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db");
         Database db = env.OpenDatabase((short)99);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_DATABASE_NOT_FOUND, e.ErrorCode);
     }
     env.Close();
 }
Пример #18
0
 public void CreateDatabaseNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db");
         Database db = env.CreateDatabase((short)0);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     env.Close();
 }
Пример #19
0
        private void AutoCleanupCursors()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            Cursor cursor = new Cursor(db);

            // let gc do the cleanup
            env.Close();
        }
Пример #20
0
        public void AutoCleanupCursors()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            Cursor cursor = new Cursor(db);

            // let gc do the cleanup
            env.Close(HamConst.HAM_AUTO_CLEANUP);
        }
Пример #21
0
 private void OpenString()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db");
         env.Close();
         env.Open("ntest.db");
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #22
0
        private void CreateWithParameters()
        {
            using (Hamster.Environment env = new Hamster.Environment())
            {
                env.Create("ntest.db");

                Parameter[] param = new Parameter[] {
                    new Parameter {
                        name = HamConst.HAM_PARAM_KEYSIZE, value = 32
                    }
                };
                using (Database db = env.CreateDatabase(13, 0, param)) { }
            }
        }
Пример #23
0
        private void Recovery()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            env.Create("ntest.db", HamConst.HAM_ENABLE_RECOVERY);
            db = env.CreateDatabase(1);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            db.Insert(k, r);
            db.Close();
            env.Close();
        }
Пример #24
0
 public void CreateStringIntIntParameter()
 {
     Hamster.Environment env   = new Hamster.Environment();
     Parameter[]         param = new Parameter[1];
     param[0]       = new Parameter();
     param[0].name  = HamConst.HAM_PARAM_MAX_ENV_DATABASES;
     param[0].value = 10;
     try {
         env.Create("ntest.db", 0, 0644, param);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("Unexpected exception " + e);
     }
 }
Пример #25
0
 public void CreateStringIntIntParameterNeg()
 {
     Hamster.Environment env   = new Hamster.Environment();
     Parameter[]         param = new Parameter[1];
     param[0]       = new Parameter();
     param[0].name  = HamConst.HAM_PARAM_PAGESIZE;
     param[0].value = 777;
     try {
         env.Create("ntest.db", 0, 0644, param);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PAGESIZE, e.ErrorCode);
     }
 }
Пример #26
0
        private void SetErrorHandler()
        {
            Hamster.Environment env = new Hamster.Environment();
            ErrorHandler        eh  = new ErrorHandler(MyErrorHandler);

            try {
                Database.SetErrorHandler(eh);
                env.Create(null);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
                Assert.AreEqual(1, errorCounter);
            }
            Database.SetErrorHandler(null);
        }
Пример #27
0
        private void FindKeyNull()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                byte[] r = db.Find(null);
            }
            catch (NullReferenceException) {
            }
            db.Close();
            env.Close();
        }
Пример #28
0
        private void EraseKeyNegative()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            byte[] k = new byte[5];
            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            try {
                db.Erase(null);
            }
            catch (NullReferenceException) {
            }
            db.Close();
            env.Close();
        }
Пример #29
0
        private void EraseUnknownKey()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            byte[] k = new byte[5];
            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            try {
                db.Erase(k);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
            env.Close();
        }
Пример #30
0
        private void CreateStringIntIntParameter()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            Parameter[] param = new Parameter[1];
            param[0]       = new Parameter();
            param[0].name  = HamConst.HAM_PARAM_CACHESIZE;
            param[0].value = 1024;
            try {
                env.Create("ntest.db", 0, 0644, param);
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("Unexpected exception " + e);
            }
        }
Пример #31
0
        public void GetError()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                db.Insert(null, null, HamConst.HAM_OVERWRITE | HamConst.HAM_DUPLICATE);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
            }
            Assert.AreEqual(HamConst.HAM_INV_PARAMETER, db.GetLastError());
            db.Close();
            env.Close();
        }
Пример #32
0
        private void CreateStringIntIntParameterNeg()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            Parameter[] param = new Parameter[1];
            param[0]       = new Parameter();
            param[0].name  = HamConst.HAM_PARAM_CACHESIZE;
            param[0].value = 1024;
            try {
                env.Create("ntest.db", HamConst.HAM_IN_MEMORY, 0644, param);
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
            }
        }
Пример #33
0
        private Database OpenDatabase(string file)
        {
            List <Parameter> list = new List <Parameter>();

            Parameter param1 = new Parameter();

            param1.name  = HamConst.HAM_PARAM_CACHESIZE;
            param1.value = 768 * 1024 * 1024;
            list.Add(param1);

            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            env.Open(file, 0, list.ToArray());
            db = env.OpenDatabase(1);
            db.SetCompareFunc(new CompareFunc(NumericalCompareFunc));
            return(db);
        }
Пример #34
0
        private void CreateInvalidParameter()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database            db  = new Database();

            Parameter[] param = new Parameter[3];
            param[1] = new Parameter();
            param[2] = new Parameter();
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1, 0, param);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
            }
        }
Пример #35
0
 public void CreateDatabaseShort()
 {
     Hamster.Environment env = new Hamster.Environment();
     byte[] k=new byte[5];
     byte[] r=new byte[5];
     try {
         env.Create("ntest.db");
         Database db = env.CreateDatabase((short)13);
         db.Insert(k, r);
         db.Close();
         db = env.OpenDatabase((short)13);
         byte[] f = db.Find(k);
         checkEqual(r, f);
         // db.Close();
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #36
0
        private void ApproxMatching()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k1 = new byte[5];
            byte[] r1 = new byte[5];
            k1[0] = 1; r1[0] = 1;
            byte[] k2 = new byte[5];
            byte[] r2 = new byte[5];
            k2[0] = 2; r2[0] = 2;
            byte[] k3 = new byte[5];
            byte[] r3 = new byte[5];
            k3[0] = 3; r3[0] = 3;
            try
            {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                db.Insert(k1, r1);
                db.Insert(k2, r2);
                db.Insert(k3, r3);

                Cursor c = new Cursor(db);
                byte[] r = c.Find(k2, HamConst.HAM_FIND_GT_MATCH);
                checkEqual(r, r3);
                checkEqual(k2, k3);
                k2[0] = 2;
                r = c.Find(k2, HamConst.HAM_FIND_GT_MATCH);
                checkEqual(r, r1);
                checkEqual(k2, k1);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e)
            {
                Assert.Fail("unexpected exception " + e);
            }
        }
Пример #37
0
 private void SetUp()
 {
     env = new Hamster.Environment();
     db = new Database();
     env.Create("ntest.db");
     db = env.CreateDatabase(1, HamConst.HAM_ENABLE_DUPLICATE_KEYS);
 }
Пример #38
0
        private void InsertRecNo()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] r1 = new byte[5];
            byte[] r2;
            try
            {
                env.Create("ntest.db");
                db = env.CreateDatabase(1, HamConst.HAM_RECORD_NUMBER);
                r1[0] = 1;
                var k = db.InsertRecNo(r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                r1[0] = 2;
                k = db.InsertRecNo(r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                r1[0] = 3;
                k = db.InsertRecNo(r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
            }
            catch (DatabaseException e)
            {
                Assert.Fail("unexpected exception " + e);
            }
            db.Close();
            env.Close();
        }
Пример #39
0
 private void InsertKeyNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         db.Insert(k, r);
         db.Insert(k, r);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_DUPLICATE_KEY, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
Пример #40
0
        public void Encrypt()
        {
            Hamster.Environment env = new Hamster.Environment();
            byte[] k = new byte[5];
            byte[] r = new byte[5];
            byte[] aeskey = new byte[16];

            env.Create("ntest.db");
            env.EnableEncryption(aeskey);
            Database db = env.CreateDatabase((short)13);
            db.Insert(k, r);
            db.Close();
            env.Close();
            env.Open("ntest.db");
            env.EnableEncryption(aeskey);
            db = env.OpenDatabase((short)13);
            byte[] f = db.Find(k);
            checkEqual(k, f);
            db.Close();
            env.Close();
        }
Пример #41
0
        private void Recovery()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            env.Create("ntest.db", HamConst.HAM_ENABLE_RECOVERY);
            db = env.CreateDatabase(1);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            db.Insert(k, r);
            db.Close();
            env.Close();
        }
Пример #42
0
 public void Flush()
 {
     Hamster.Environment env = new Hamster.Environment();
     env.Create("ntest.db");
     env.Flush();
     env.Close();
 }
Пример #43
0
        public void EraseUnknownDatabase()
        {
            Hamster.Environment env = new Hamster.Environment();
            byte[] k = new byte[5];
            byte[] r = new byte[5];

            env.Create("ntest.db");
            Database db = env.CreateDatabase((short)13);
            db.Insert(k, r);
            db.Close();
            try {
                env.EraseDatabase((short)99);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_DATABASE_NOT_FOUND, e.ErrorCode);
            }
            env.Close();
        }
Пример #44
0
 private void FindUnknownKey()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         byte[] r = db.Find(k);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
Пример #45
0
 private void FindKeyNull()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         byte[] r = db.Find(null);
     }
     catch (NullReferenceException) {
     }
     db.Close();
     env.Close();
 }
Пример #46
0
 public void OpenStringIntIntParameter()
 {
     Hamster.Environment env = new Hamster.Environment();
     Parameter[] param = new Parameter[1];
     param[0] = new Parameter();
     param[0].name = HamConst.HAM_PARAM_CACHESIZE;
     param[0].value = 1024;
     try {
         env.Create("ntest.db", 0, 0644, param);
         env.Close();
         env.Open("ntest.db", 0, param);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #47
0
 private void SetErrorHandler()
 {
     Hamster.Environment env = new Hamster.Environment();
     ErrorHandler eh = new ErrorHandler(MyErrorHandler);
     try {
         Database.SetErrorHandler(eh);
         env.Create(null);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
         Assert.AreEqual(1, errorCounter);
     }
     Database.SetErrorHandler(null);
 }
Пример #48
0
 public void CreateStringNull()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create(null);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
 }
Пример #49
0
        private void SetComparator()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];
            Parameter[] param = new Parameter[1];
            param[0] = new Parameter();
            param[0].name = HamConst.HAM_PARAM_KEY_TYPE;
            param[0].value = HamConst.HAM_TYPE_CUSTOM;

            compareCounter = 0;
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1, 0, param);
                db.SetCompareFunc(new CompareFunc(MyCompareFunc));
                db.Insert(k, r);
                k[0] = 1;
                db.Insert(k, r);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
            Assert.AreEqual(1, compareCounter);
        }
Пример #50
0
 public void CreateStringIntIntParameterNeg()
 {
     Hamster.Environment env = new Hamster.Environment();
     Parameter[] param = new Parameter[1];
     param[0] = new Parameter();
     param[0].name = HamConst.HAM_PARAM_PAGESIZE;
     param[0].value = 777;
     try {
         env.Create("ntest.db", 0, 0644, param);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PAGESIZE, e.ErrorCode);
     }
 }
Пример #51
0
        private Database OpenDatabase(string file)
        {
            List<Parameter> list = new List<Parameter>();

            Parameter param1 = new Parameter();
            param1.name = HamConst.HAM_PARAM_CACHESIZE;
            param1.value = 768 * 1024 * 1024;
            list.Add(param1);

            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            env.Open(file, 0, list.ToArray());
            db = env.OpenDatabase(1);
            db.SetCompareFunc(new CompareFunc(NumericalCompareFunc));
            return db;
        }
Пример #52
0
 public void CreateStringIntIntParameter()
 {
     Hamster.Environment env = new Hamster.Environment();
     Parameter[] param = new Parameter[1];
     param[0] = new Parameter();
     param[0].name = HamConst.HAM_PARAM_MAX_ENV_DATABASES;
     param[0].value = 10;
     try {
         env.Create("ntest.db", 0, 0644, param);
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("Unexpected exception " + e);
     }
 }
Пример #53
0
 private void InsertKeyOverwrite()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_OVERWRITE);
         byte[] r2 = db.Find(k);
         checkEqual(r, r2);
         db.Close();
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #54
0
        private void GetKeyCount()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            env.Create("ntest.db");
            db = env.CreateDatabase(1);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            Assert.AreEqual(0, db.GetKeyCount());
            db.Insert(k, r);
            Assert.AreEqual(1, db.GetKeyCount());
            k[0] = 1;
            db.Insert(k, r);
            Assert.AreEqual(2, db.GetKeyCount());
            db.Close();
            env.Close();
        }
Пример #55
0
 public void OpenStringNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Open("ntestxxxxx.db");
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_FILE_NOT_FOUND, e.ErrorCode);
     }
 }
Пример #56
0
 private void InsertKeyInvalidParam()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     env.Create("ntest.db");
     db = env.CreateDatabase(1);
     try {
         db.Insert(null, r);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, null);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, r, 9999);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
Пример #57
0
        public void GetDatabaseNames()
        {
            Database db;
            short[] names;
            short[] s1 ={ 13 };
            short[] s2 ={ 13, 14 };
            short[] s3 ={ 13, 14, 15 };
            Hamster.Environment env = new Hamster.Environment();

            env.Create("ntest.db");
            db = env.CreateDatabase(13);
            names = env.GetDatabaseNames();
            Assert.AreEqual(s1.Length, names.Length);
            for (int i = 0; i < s1.Length; i++)
                Assert.AreEqual(s1[i], names[i]);

            db = env.CreateDatabase(14);
            names = env.GetDatabaseNames();
            Assert.AreEqual(s2.Length, names.Length);
            for (int i = 0; i < s2.Length; i++)
                Assert.AreEqual(s2[i], names[i]);

            db = env.CreateDatabase(15);
            names = env.GetDatabaseNames();
            Assert.AreEqual(s3.Length, names.Length);
            for (int i = 0; i < s3.Length; i++)
                Assert.AreEqual(s3[i], names[i]);

            env.Close();
        }
Пример #58
0
        private void InsertKey()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                k[0] = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
Пример #59
0
        static void Main(string[] args)
        {
            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
            Hamster.Environment env = new Hamster.Environment();
            Database[] db=new Database[3];
            Cursor[] cursor=new Cursor[3];

            /*
             * set up the customer and order data - these arrays will later
             * be inserted into the Databases
             */
            Customer[] customers=new Customer[4];
            customers[0] = new Customer(1, "Alan Antonov Corp.");
            customers[1] = new Customer(2, "Barry Broke Inc.");
            customers[2] = new Customer(3, "Carl Caesar Lat.");
            customers[3] = new Customer(4, "Doris Dove Brd.");

            Order[] orders = new Order[8];
            orders[0] = new Order(1, 1, "Joe");
            orders[1] = new Order(2, 1, "Tom");
            orders[2] = new Order(3, 3, "Joe");
            orders[3] = new Order(4, 4, "Tom");
            orders[4] = new Order(5, 3, "Ben");
            orders[5] = new Order(6, 3, "Ben");
            orders[6] = new Order(7, 4, "Chris");
            orders[7] = new Order(8, 1, "Ben");

            /*
             * Create a new Environment
             */
            env.Create("test.db");

            /*
             * then create the three Databases in this Environment; each Database
             * has a name - the first is our "customer" Database, the second
             * is for the "orders"; the third manages our 1:n relation and
             * therefore needs to enable duplicate keys
             */
            db[DBIDX_CUSTOMER] = env.CreateDatabase(DBNAME_CUSTOMER);
            db[DBIDX_ORDER]    = env.CreateDatabase(DBNAME_ORDER);
            db[DBIDX_C2O]      = env.CreateDatabase(DBNAME_C2O,
                    HamConst.HAM_ENABLE_DUPLICATES);

            /*
             * create a Cursor for each Database
             */
            cursor[DBIDX_CUSTOMER] = new Cursor(db[DBIDX_CUSTOMER]);
            cursor[DBIDX_ORDER] = new Cursor(db[DBIDX_ORDER]);
            cursor[DBIDX_C2O] = new Cursor(db[DBIDX_C2O]);

            /*
             * Insert the customers in the customer Database
             *
             * INSERT INTO customers VALUES (1, "Alan Antonov Corp.");
             * INSERT INTO customers VALUES (2, "Barry Broke Inc.");
             * etc.
             */
            for (int i = 0; i < customers.GetLength(0); i++) {
                byte[] key = customers[i].GetKey();
                byte[] rec = customers[i].GetRecord();

                db[DBIDX_CUSTOMER].Insert(key, rec);
            }

            /*
             * Insert the orders in the order Database
             *
             * INSERT INTO orders VALUES (1, "Joe");
             * INSERT INTO orders VALUES (2, "Tom");
             * etc.
             */
            for (int i = 0; i < orders.GetLength(0); i++) {
                byte[] key = orders[i].GetKey();
                byte[] rec = orders[i].GetRecord();

                db[DBIDX_ORDER].Insert(key, rec);
            }

            /*
             * and now the 1:n relationships; the flag HAM_DUPLICATE creates
             * a duplicate key, if the key already exists
             *
             * INSERT INTO c2o VALUES (1, 1);
             * INSERT INTO c2o VALUES (2, 1);
             * etc
             */
            for (int i = 0; i < orders.GetLength(0); i++) {
                byte[] key = orders[i].GetCustomerKey();
                byte[] rec = orders[i].GetKey();

                db[DBIDX_C2O].Insert(key, rec, HamConst.HAM_DUPLICATE);
            }

            /*
             * now start the queries - we want to dump each customer and
             * his orders
             *
             * loop over the customer; for each customer, loop over the
             * 1:n table and pick those orders with the customer id.
             * then load the order and print it
             *
             * the outer loop is similar to
             * SELECT * FROM customers WHERE 1;
             */
            while (1 == 1) {
                Customer c;

                try {
                    cursor[DBIDX_CUSTOMER].MoveNext();
                }
                catch (DatabaseException e) {
                    // reached end of Database?
                    if (e.ErrorCode == HamConst.HAM_KEY_NOT_FOUND)
                        break;
                    Console.Out.WriteLine("cursor.MoveNext failed: " + e);
                    return;
                }

                // load the customer
                c = new Customer(cursor[DBIDX_CUSTOMER].GetKey(),
                        cursor[DBIDX_CUSTOMER].GetRecord());

                // print information about this customer
                Console.Out.WriteLine("customer " + c.id + " ('" + c.name + "')");

                /*
                 * loop over the 1:n table
                 *
                 * SELECT * FROM customers, orders, c2o
                 *      WHERE c2o.customer_id=customers.id AND
                 *          c2o.order_id=orders.id;
                 */
                try {
                    cursor[DBIDX_C2O].Find(c.GetKey());
                }
                catch (DatabaseException e) {
                    // no order for this customer?
                    if (e.ErrorCode == HamConst.HAM_KEY_NOT_FOUND)
                        continue;
                    Console.Out.WriteLine("cursor.Find failed: " + e);
                    return;
                }

                do {
                    /*
                     * load the order; orderId is a byteArray with the ID of the
                     * Order; the record of the item is a byteArray with the
                     * name of the assigned employee
                     *
                     * SELECT * FROM orders WHERE id = order_id;
                     */
                    byte[] orderId = cursor[DBIDX_C2O].GetRecord();
                    cursor[DBIDX_ORDER].Find(orderId);
                    String assignee = enc.GetString(cursor[DBIDX_ORDER].GetRecord());

                    Console.Out.WriteLine("  order: " + BitConverter.ToInt32(orderId, 0) +
                        " (assigned to " + assignee + ")");

                    /*
                     * move to the next order of this customer
                     *
                     * the flag HAM_ONLY_DUPLICATES restricts the cursor
                     * movement to the duplicates of the current key.
                     */
                    try {
                        cursor[DBIDX_C2O].MoveNext(HamConst.HAM_ONLY_DUPLICATES);
                    }
                    catch (DatabaseException e) {
                        // no more orders for this customer?
                        if (e.ErrorCode == HamConst.HAM_KEY_NOT_FOUND)
                            break;
                        Console.Out.WriteLine("cursor.MoveNext failed: " + e);
                        return;
                    }
                } while (1==1);
            }
        }
Пример #60
0
 public void OpenDatabaseNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     try {
         env.Create("ntest.db");
         Database db = env.OpenDatabase((short)99);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_DATABASE_NOT_FOUND, e.ErrorCode);
     }
     env.Close();
 }