Beispiel #1
0
 @Test
 public void testSingleRequest() throws Exception {
   TraceContext.reset();
   ExecutorService jobService =
       Executors.newFixedThreadPool(NUMBER_OF_THREADS, new NamedThreadFactory("jobService"));
   InstanceRequest request = new InstanceRequest(0L, null);
   request.setEnableTrace(true);
   singleRequestCall(jobService, request, JOBS_PER_REQUEST);
   runVerification(1, JOBS_PER_REQUEST);
 }
Beispiel #2
0
  /**
   * If using the shared {@link ExecutorService} created by {@link
   * Executors#newFixedThreadPool(int)} for handling requests and jobs, avoiding potential deadlock
   * by making sure NUMBER_OF_REQUESTS < nThreads. (Using non-shared {@link ExecutorService} is
   * no issue.)
   *
   * @throws Exception
   */
  @Test
  public void testMultipleRequests() throws Exception {
    TraceContext.reset();

    // shared Service
    ExecutorService sharedService =
        Executors.newFixedThreadPool(NUMBER_OF_THREADS, new NamedThreadFactory("sharedService"));
    runVariousConditionTests(sharedService, sharedService);

    // non-shared Service
    ExecutorService requestService =
        Executors.newFixedThreadPool(NUMBER_OF_THREADS, new NamedThreadFactory("requestService"));
    ExecutorService jobService =
        Executors.newFixedThreadPool(NUMBER_OF_THREADS, new NamedThreadFactory("jobService"));
    runVariousConditionTests(requestService, jobService);
  }
Beispiel #3
0
  private void runVariousConditionTests(ExecutorService requestService, ExecutorService jobService)
      throws Exception {
    int reqStep = NUMBER_OF_REQUESTS / 5;
    int jobStep = JOBS_PER_REQUEST / 5;
    boolean shared = false;

    if (requestService == jobService) {
      shared = true;
    }

    for (int numberOfRequests = reqStep;
        numberOfRequests <= NUMBER_OF_REQUESTS;
        numberOfRequests += reqStep) {
      for (int jobsPerRequest = jobStep;
          jobsPerRequest < JOBS_PER_REQUEST;
          jobsPerRequest += jobStep) {
        if (shared) {
          LOGGER.info(
              "Shared exec service for #request: "
                  + numberOfRequests
                  + " #jobsPerRequest: "
                  + jobsPerRequest);
        } else {
          LOGGER.info(
              "Non-shared exec service for #request: "
                  + numberOfRequests
                  + " #jobsPerRequest: "
                  + jobsPerRequest);
        }

        if (shared && (numberOfRequests >= NUMBER_OF_THREADS)) {
          LOGGER.info(
              "Ignore tests for #request: " + numberOfRequests + ", since it will deadlock.");
        } else {
          TraceContext.reset();
          multipleRequestsCall(requestService, jobService, numberOfRequests, jobsPerRequest);
          runVerification(numberOfRequests, jobsPerRequest);
        }
      }
    }
  }