public void doNormalFinish(PerfTest perfTest, SingleConsole singleConsoleInUse) {
		LOG.debug(format(perfTest, "PerfTest status - currentRunningTime {} ", singleConsoleInUse.getCurrentRunningTime()));
		singleConsoleInUse.unregisterSampling();
		LOG.info(format(perfTest, "Sampling is stopped"));
		try {
			// stop target host monitor
			if (perfTestService.hasTooManyError(perfTest)) {
				perfTestService.markProgressAndStatusAndFinishTimeAndStatistics(perfTest, FINISHED_WITH_WARNING,
						"[WARNING] The test is finished but contains too much errors(over 30% of total runs).");
			} else if (singleConsoleInUse.hasNoPerformedTest()) {
				perfTestService.markProgressAndStatusAndFinishTimeAndStatistics(perfTest, Status.FINISHED_WITH_WARNING,
						"[WARNING] The test is finished but has no TPS.");
			} else {
				perfTestService.markProgressAndStatusAndFinishTimeAndStatistics(perfTest, Status.FINISHED,
						"The test is successfully finished.");
			}
		} catch (Exception e) {
			perfTestService.markStatusAndProgress(perfTest, Status.STOP_BY_ERROR, e.getMessage());
			LOG.error(format(perfTest, "Error while finishing : {}", e.getMessage()));
			LOG.debug(format(perfTest, "Details : "), e);
		}
		consoleManager.returnBackConsole(perfTest.getTestIdentifier(), singleConsoleInUse);
	}
Finish the given {@link PerfTest}.

@param perfTest           {@link PerfTest} to be finished
@param singleConsoleInUse {@link SingleConsole} which is being used for the given
                          {@link PerfTest}
ngrinder-controller/src/main/java/org/ngrinder/perftest/service/PerfTestRunnable.java