public void testWebSocketServer() {

    try {
      // randomly select two clients from the collection.
      for (int i = 0; i <= 1000; i++) {
        NettyTestClient from = clients.get(random.nextInt(clients.size()));
        NettyTestClient to = clients.get(random.nextInt(clients.size()));

        // this needs to be here when testing max size or max connections.
        if (to.isClosed()) {
          continue;
        }

        SocketMessage msg = messages.get(random.nextInt(messages.size()));
        msg.setText("Hola!");
        msg.setFrom(from.getUuid());
        msg.setTo(to.getUuid());
        msg.setDate(new Date());
        String json = JSONUtils.toJson(msg);
        from.send(json);

        Thread.sleep(TestConfig.getInstance().getMessageDelay());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public VariableSizeWebSocketTest() {
    try {
      NettyClientFactory factory = new NettyClientFactory();
      clients.addAll(factory.buildClients(TestConfig.getInstance().getMaxPayload()));
      this.buildSocketMessages();

      System.out.println("Scheduling test...");
      scheduled.scheduleAtFixedRate(this, 0, 100, TimeUnit.MILLISECONDS);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public static void main(String[] args) {

    try {
      System.out.println("Test will run for " + RUN_TIME_MIN + " minutes");
      TestConfig cfg = TestConfig.getInstance();
      cfg.overrideProperty("print.on.count", "10");
      cfg.overrideProperty("number.of.clients", "500");
      cfg.overrideProperty("compression.enabled", "false");

      VariableSizeWebSocketTest loader = new VariableSizeWebSocketTest();

      scanner = new Scanner(System.in);
      while (scanner.hasNext()) {
        String cmd = scanner.next();
        if (cmd.equals("stop")) {
          loader.stop();
        }
      }
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }