public void initDB(String[] args) {

    final String servers = Args.valueOf(args, "-servers", "localhost");

    String propFile = Args.valueOf(args, "-props", "swiftsocial-test.props");
    Properties properties = Props.parseFile("swiftsocial", propFile);
    configBloatedCounters(properties);
    SafeLog.configure(properties);

    System.err.println("Populating db with users...");

    int numUsers = Props.intValue(properties, "swiftsocial.numUsers", 1000);

    final int NumUsers = Args.valueOf(args, "-users", numUsers);
    Workload.generateUsers(NumUsers);

    int threads = Args.valueOf(args, "-threads", 6);
    final int PARTITION_SIZE = 1000;
    int partitions = numUsers / PARTITION_SIZE + (numUsers % PARTITION_SIZE > 0 ? 1 : 0);
    ExecutorService pool = Executors.newFixedThreadPool(threads);

    final AtomicInteger counter = new AtomicInteger(0);
    for (int i = 0; i < partitions; i++) {
      int lo = i * PARTITION_SIZE, hi = (i + 1) * PARTITION_SIZE;
      final List<String> partition = Workload.getUserData().subList(lo, Math.min(hi, numUsers));
      pool.execute(
          new Runnable() {
            public void run() {
              SwiftOptions options = new SwiftOptions(servers, DCConstants.SURROGATE_PORT);
              options.setCacheUpdateProtocol(CacheUpdateProtocol.NO_CACHE_OR_UNCOORDINATED);
              SwiftSocialBenchmark.super.initUsers(options, partition, counter, NumUsers);
            }
          });
    }
    Threading.awaitTermination(pool, Integer.MAX_VALUE);
    Threading.sleep(5000);
    System.err.println("\nFinished populating db with users.");
  }