Zimbra.toolSetup("INFO", true); TestServer.main(null); for (int i = 0; i < CLIENT_THREADS; i++) { new TestClientThread(i).start();
Zimbra.toolSetup("INFO", true);  CommandLine cl = parseArgs(args);  if (cl.hasOption('D')) { Zimbra.toolSetup("DEBUG", true); } if (cl.hasOption('T')) { Zimbra.toolSetup("TRACE", true); }  boolean shutdownTest = false; if (cl.hasOption('s')) { shutdownTest = true; }  int numThreads = 4; if (cl.hasOption('t')) { try { numThreads = Integer.parseInt(cl.getOptionValue('t')); } catch (NumberFormatException nfe) { mLog.error("exception occurred", nfe); usage("bad value for number of threads"); } }  int port = 10043; if (cl.hasOption('p')) { try { port = Integer.parseInt(cl.getOptionValue('p')); } catch (NumberFormatException nfe) { mLog.error("exception occurred", nfe); usage("bad value for port"); } }  TestServer server = new TestServer(port); mLog.info("creating " + numThreads + " client threads"); for (int i = 0; i < numThreads; i++) { new TestClientThread(port, i).start();
    public static void main(String[] args) throws IOException {        Zimbra.toolSetup("INFO", true);        TestServer.main(null);        for (int i = 0; i < CLIENT_THREADS; i++) {            new TestClientThread(i).start();        }        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        br.readLine();        TestServer.shutdown();    }