public static void main(String[] args) {

    System.out.println("Starting HBase test, connecting to Zookeeper Quorum " + ZK_QUORUM + "....");
    MyLogger.mylogger.info("Starting HBase test, connecting to Zookeeper Quorum " + ZK_QUORUM
        + "....");

    // ****************************************
    // Create a shutdown hook
    // ****************************************
    MyLogger.mylogger.info("Adding ShutDown Hook thread ....");
    ShutDownHook sh = new ShutDownHook();
    Runtime.getRuntime().addShutdownHook(sh);
    ShutDownHook.setWaitTime(200);

    // ****************************************
    // Process command line arguments
    // ****************************************
    HBaseLoadParams.getLoadArguments(args);

    // ****************************************
    // Initialize Hbase Test manager
    // ****************************************
    MyLogger.mylogger.info("Initializing Hbase Test Manager ....");
    HBaseTestManagerOperations.initHBaseTestManagerOperations();

    // ****************************************
    // generate hbase data set and put it in a
    // test file in sgdata/hbase_test_data.csv
    // ****************************************
    if (GENERATE_HISTORY_DATA) {
      generateTestDataFile();
    }

    do {

      // ****************************************
      // Delete Hbase Test Tables if already exists
      // ****************************************
      if (DELETE_EXISTING_TABLE && !READ_ONLY) {
        MyLogger.mylogger.info("Deleting " + TABLE_NAME + "....");
        HBaseTestManagerOperations.deleteHbaseTable();
      }

      // ****************************************
      // Create Hbase Test Table
      // ****************************************
      HBaseTestManagerOperations.testCreateTable();

      // run hbase insert test if it is not a read only test
      if (!READ_ONLY) {
        HBaseTestManagerOperations.insertHbaseRecords();
      }

      // small sleep to let the system cool down after write tests
      if (READ_DATA || READ_ONLY) {
        try {
          Thread.sleep(SLEEP_AFTER_WRITE_BEFORE_READ_MS);
        } catch (InterruptedException e) {
          MyLogger.mylogger.severe("" + e.getMessage() + Arrays.toString(e.getStackTrace()));
        }
        // Fetch Test
        HBaseTestManagerOperations.fetchHbaseRecords();
      }

    } while (REPEAT_DATA);

    // Clean up and Shutdown test
    HBaseTestManagerOperations.shutdown();
    MyLogger.mylogger.info("Done !");
    System.exit(0);

  }