public void send()

in alpha/alpha-benchmark/src/main/java/org/apache/servicecomb/pack/alpha/benchmark/SagaEventBenchmark.java [50:108]


  public void send(int warmUpConcurrency, int requests, int concurrency) {
    this.warmUpConcurrency = warmUpConcurrency;
    this.warmUpRequests = 10;
    System.out.print("Benchmarking ");

    // 预热
    if (warmUpConcurrency > 0) {
      metrics = new BenchmarkMetrics();
      this.warmUp(warmUpConcurrency);
    }

    // 压测
    metrics = new BenchmarkMetrics();
    metrics.setRequests(requests);
    metrics.setConcurrency(concurrency);
    long s = System.currentTimeMillis();
    CountDownLatch begin = new CountDownLatch(1);
    CountDownLatch end = new CountDownLatch(concurrency);
    begin.countDown();
    String[] id_prefixs = generateRandomIdPrefix(concurrency);
    for (int i = 0; i < concurrency; i++) {
      Execute execute = new Execute(sender, id_prefixs[i],requests / concurrency, begin, end);
      new Thread(execute).start();
    }
    try {
      end.await();
      long e = System.currentTimeMillis();
      metrics.setTimeTaken(e - s);
      System.out.println("\n");

      System.out.println(String.format("%-25s %s", "Warm Up", warmUpRequests * warmUpConcurrency));
      System.out.println(String.format("%-25s %s", "Concurrency Level", metrics.getConcurrency()));
      System.out.println(
          String.format("%-25s %s", "Time taken for tests", metrics.getTimeTaken() + " seconds"));
      System.out
          .println(String.format("%-25s %s", "Complete requests", metrics.getCompleteRequests()));
      System.out.println(String.format("%-25s %s", "Failed requests", metrics.getFailedRequests()));
      System.out.println(String
          .format("%-25s %s", "Requests per second", metrics.getRequestsPerSecond() + " [#/sec]"));
      System.out.println(
          String.format("%-25s %s", "Time per request", metrics.getTimePerRequest() + " [ms]"));
      System.out.println();
      System.out.println("Percentage of the requests served within a certain time (ms)");

      int size = metrics.getTransactionTime().size();
      int percentage = 50;
      for (int i = 0; i <= 5; i++) {
        float peek = size * ((float) percentage / 100);
        System.out.println(String.format("%-5s %.2f", percentage + "%", getAverage(
            metrics.getTransactionTime().subList(0, (int) peek)).getAsDouble()));
        percentage = percentage + 10;
      }

    } catch (InterruptedException e) {
      Thread.currentThread().interrupt();
      LOG.error(e.getMessage(), e);
    }
    LOG.info("OK");
  }