docs: public void run() throws InterruptedException, NoConnectionsException, IOException, ProcCallException {
          System.out.print(HORIZONTAL_RULE);
          System.out.println(" Setup & Initialization");
          System.out.println(HORIZONTAL_RULE);
  
          // connect to one or more servers, loop until success
          connect(config.servers);
  
          System.out.print(HORIZONTAL_RULE);
          System.out.println(" Starting Benchmark");
          System.out.println(HORIZONTAL_RULE);
  
          // Run the benchmark loop for the requested warmup time
          // The throughput may be throttled depending on client configuration
          System.out.println("Warming up...");
          final long warmupEndTime = System.currentTimeMillis() + (1000l * config.warmup);
  
          long now = System.currentTimeMillis();
          while (warmupEndTime > now) {
              CallEvent call = networkTransformer.next(now);
              if (call == null) {
                  try { Thread.sleep(1); } catch (InterruptedException e) {}
              }
              else {
                  sendEvent(call);
              }
              now = System.currentTimeMillis();
          }
  
          // reset the stats after warmup
          fullStatsContext.fetchAndResetBaseline();
          periodicStatsContext.fetchAndResetBaseline();
  
          // print periodic statistics to the console
          benchmarkStartTS = System.currentTimeMillis();
          schedulePeriodicStats();
  
          // Run the benchmark loop for the requested duration
          // The throughput may be throttled depending on client configuration
          System.out.println("\nRunning benchmark...");
          final long benchmarkEndTime = System.currentTimeMillis() + (1000l * config.duration);
  
          now = System.currentTimeMillis();
          while (benchmarkEndTime > now) {
              CallEvent call = networkTransformer.next(now);
              if (call == null) {
                  try { Thread.sleep(1); } catch (InterruptedException e) {}
              }
              else {
                  sendEvent(call);
              }
              now = System.currentTimeMillis();
          }
  
          // cancel periodic stats printing
          timer.cancel();
  
          // drain any messages that are waiting to be sent immediately
          CallEvent call = null;
          while ((call = networkTransformer.drain()) != null) {
              sendEvent(call);
          }
  
          // block until all outstanding txns return
          client.drain();
  
          // print out some debugging stats
          callSimulator.printSummary();
  
          // print the summary results
          printResults();
  
          // close down the client connections
          client.close();
      }