/*
         * Open environment, database and write data into database.
         * Generated log files are put under testHome.
         */
        public void Logging(string home, string dbName,
		    out DatabaseEnvironment env, out RecnoDatabase recnoDB)
        {
            string dbFileName = dbName + ".db";

            Configuration.ClearDir(home);

            // Open environment with logging subsystem.
            DatabaseEnvironmentConfig envConfig =
                new DatabaseEnvironmentConfig();
            envConfig.Create = true;
            envConfig.UseLogging = true;
            envConfig.LogSystemCfg = new LogConfig();
            envConfig.LogSystemCfg.FileMode = 755;
            envConfig.LogSystemCfg.ZeroOnCreate = true;
            envConfig.UseMPool = true;
            env = DatabaseEnvironment.Open(home, envConfig);

            /*
             * Open recno database, write 100000 records into
             * the database and close it.
             */
            RecnoDatabaseConfig recnoConfig =
                new RecnoDatabaseConfig();
            recnoConfig.Creation = CreatePolicy.IF_NEEDED;
            recnoConfig.Env = env;
            // The db needs mpool to open.
            recnoConfig.NoMMap = false;
            recnoDB = RecnoDatabase.Open(dbFileName,
                recnoConfig);
            for (int i = 0; i < 1000; i++)
                recnoDB.Append(new DatabaseEntry(
                    ASCIIEncoding.ASCII.GetBytes("key")));
        }
        public void ModifyRecordsInDB(RecnoDatabase db, 
		    Transaction txn)
        {
            uint[] recnos = new uint[100];

            if (txn == null)
            {
                // Add a lot of records into database.
                for (int i = 0; i < 100; i++)
                    recnos[i] = db.Append(new DatabaseEntry(
                        new byte[10240]));

                // Remove some records from database.
                for (int i = 30; i < 100; i++)
                    db.Delete(new DatabaseEntry(
                        BitConverter.GetBytes(recnos[i])));
            }
            else
            {
                // Add a lot of records into database in txn.
                for (int i = 0; i < 100; i++)
                    recnos[i] = db.Append(new DatabaseEntry(
                        new byte[10240]), txn);

                // Remove some records from database in txn.
                for (int i = 30; i < 100; i++)
                    db.Delete(new DatabaseEntry(
                        BitConverter.GetBytes(recnos[i])), txn);
            }
        }