public static void Main(String[] args) { DateTime startTime, endTime; int count; try { String pwd = Environment.CurrentDirectory; pwd = Path.Combine(pwd, ".."); pwd = Path.Combine(pwd, ".."); if (IntPtr.Size == 4) { pwd = Path.Combine(pwd, "Win32"); } else { pwd = Path.Combine(pwd, "x64"); } #if DEBUG pwd = Path.Combine(pwd, "Debug"); #else pwd = Path.Combine(pwd, "Release"); #endif pwd += ";" + Environment.GetEnvironmentVariable("PATH"); Environment.SetEnvironmentVariable("PATH", pwd); } catch (Exception e) { Console.WriteLine( "Unable to set the PATH environment variable."); Console.WriteLine(e.Message); return; } excs_bulk app = new excs_bulk(); /* Parse argument */ for (int i = 0; i < args.Length; i++) { if (args[i].CompareTo("-c") == 0) { if (i == args.Length - 1) { Usage(); } i++; app.cachesize = uint.Parse(args[i]); Console.WriteLine("[CONFIG] cachesize {0}", app.cachesize); } else if (args[i].CompareTo("-d") == 0) { if (i == args.Length - 1) { Usage(); } i++; app.dups = int.Parse(args[i]); Console.WriteLine("[CONFIG] number of duplicates {0}", app.dups); } else if (args[i].CompareTo("-n") == 0) { if (i == args.Length - 1) { Usage(); } i++; app.num = int.Parse(args[i]); Console.WriteLine("[CONFIG] number of keys {0}", app.num); } else if (args[i].CompareTo("-p") == 0) { if (i == args.Length - 1) { Usage(); } i++; app.pagesize = uint.Parse(args[i]); Console.WriteLine("[CONFIG] pagesize {0}", app.pagesize); } else if (args[i].CompareTo("-D") == 0) { app.opt = Operations.BULK_DELETE; } else if (args[i].CompareTo("-R") == 0) { app.opt = Operations.BULK_READ; } else if (args[i].CompareTo("-S") == 0) { app.secondary = true; } else if (args[i].CompareTo("-U") == 0) { app.opt = Operations.BULK_UPDATE; } else { Usage(); } } /* Open environment and database(s) */ try { /* * If perform bulk update or delete, clean environment * home */ app.CleanHome(app.opt != Operations.BULK_READ); app.InitDbs(); } catch (Exception e) { Console.WriteLine(e.StackTrace); app.CloseDbs(); } try { /* Perform bulk read from existing primary db */ if (app.opt == Operations.BULK_READ) { startTime = DateTime.Now; count = app.BulkRead(); endTime = DateTime.Now; app.PrintBulkOptStat( Operations.BULK_READ, count, startTime, endTime); } else { /* Perform bulk update to populate the db */ startTime = DateTime.Now; app.BulkUpdate(); endTime = DateTime.Now; count = (app.dups == 0) ? app.num : app.num * app.dups; app.PrintBulkOptStat( Operations.BULK_UPDATE, count, startTime, endTime); /* Perform bulk delete in primary db or secondary db */ if (app.opt == Operations.BULK_DELETE) { startTime = DateTime.Now; if (app.secondary == false) { /* * Delete from the first key to a random one in * primary db. */ count = new Random().Next(app.num); app.BulkDelete(count); } else { /* * Delete a set of keys or specified key/data * pairs in secondary db. If delete a set of keys, * delete from the first key to a random one in * secondary db. If delete a set of specified * key/data pairs, delete a random key and all * its duplicate records. */ int deletePair = new Random().Next(1); count = new Random().Next(DataVal.tstring.Length); count = app.BulkSecondaryDelete( ASCIIEncoding.ASCII.GetBytes( DataVal.tstring)[count], deletePair); } endTime = DateTime.Now; app.PrintBulkOptStat(Operations.BULK_DELETE, count, startTime, endTime); } } } catch (DatabaseException e) { Console.WriteLine(e.StackTrace); } catch (IOException e) { Console.WriteLine(e.StackTrace); } finally { /* Close dbs */ app.CloseDbs(); } }
public static void Main(String[] args) { DateTime startTime, endTime; int count; try { String pwd = Environment.CurrentDirectory; pwd = Path.Combine(pwd, ".."); pwd = Path.Combine(pwd, ".."); if (IntPtr.Size == 4) pwd = Path.Combine(pwd, "Win32"); else pwd = Path.Combine(pwd, "x64"); #if DEBUG pwd = Path.Combine(pwd, "Debug"); #else pwd = Path.Combine(pwd, "Release"); #endif pwd += ";" + Environment.GetEnvironmentVariable("PATH"); Environment.SetEnvironmentVariable("PATH", pwd); } catch (Exception e) { Console.WriteLine( "Unable to set the PATH environment variable."); Console.WriteLine(e.Message); return; } excs_bulk app = new excs_bulk(); /* Parse argument */ for (int i = 0; i < args.Length; i++) { if (args[i].CompareTo("-c") == 0) { if (i == args.Length - 1) Usage(); i++; app.cachesize = uint.Parse(args[i]); Console.WriteLine("[CONFIG] cachesize {0}", app.cachesize); } else if (args[i].CompareTo("-d") == 0) { if (i == args.Length - 1) Usage(); i++; app.dups = int.Parse(args[i]); Console.WriteLine("[CONFIG] number of duplicates {0}", app.dups); } else if (args[i].CompareTo("-n") == 0) { if (i == args.Length - 1) Usage(); i++; app.num = int.Parse(args[i]); Console.WriteLine("[CONFIG] number of keys {0}", app.num); } else if (args[i].CompareTo("-p") == 0) { if (i == args.Length - 1) Usage(); i++; app.pagesize = uint.Parse(args[i]); Console.WriteLine("[CONFIG] pagesize {0}", app.pagesize); } else if (args[i].CompareTo("-D") == 0) { app.opt = Operations.BULK_DELETE; } else if (args[i].CompareTo("-R") == 0) { app.opt = Operations.BULK_READ; } else if (args[i].CompareTo("-S") == 0) { app.secondary = true; } else if (args[i].CompareTo("-U") == 0) { app.opt = Operations.BULK_UPDATE; } else Usage(); } /* Open environment and database(s) */ try { /* * If perform bulk update or delete, clean environment * home */ app.CleanHome(app.opt != Operations.BULK_READ); app.InitDbs(); } catch (Exception e) { Console.WriteLine(e.StackTrace); app.CloseDbs(); } try { /* Perform bulk read from existing primary db */ if (app.opt == Operations.BULK_READ) { startTime = DateTime.Now; count = app.BulkRead(); endTime = DateTime.Now; app.PrintBulkOptStat( Operations.BULK_READ, count, startTime, endTime); } else { /* Perform bulk update to populate the db */ startTime = DateTime.Now; app.BulkUpdate(); endTime = DateTime.Now; count = (app.dups == 0) ? app.num : app.num * app.dups; app.PrintBulkOptStat( Operations.BULK_UPDATE, count, startTime, endTime); /* Perform bulk delete in primary db or secondary db */ if (app.opt == Operations.BULK_DELETE) { startTime = DateTime.Now; if (app.secondary == false) { /* * Delete from the first key to a random one in * primary db. */ count = new Random().Next(app.num); app.BulkDelete(count); } else { /* * Delete a set of keys or specified key/data * pairs in secondary db. If delete a set of keys, * delete from the first key to a random one in * secondary db. If delete a set of specified * key/data pairs, delete a random key and all * its duplicate records. */ int deletePair = new Random().Next(1); count = new Random().Next(DataVal.tstring.Length); count = app.BulkSecondaryDelete( ASCIIEncoding.ASCII.GetBytes( DataVal.tstring)[count], deletePair); } endTime = DateTime.Now; app.PrintBulkOptStat(Operations.BULK_DELETE, count, startTime, endTime); } } } catch (DatabaseException e) { Console.WriteLine(e.StackTrace); } catch (IOException e) { Console.WriteLine(e.StackTrace); } finally { /* Close dbs */ app.CloseDbs(); } }