@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); }
/** * 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); }
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); } } } }