void distributeFileOn(final PerfTest perfTest, SingleConsole singleConsole) throws IOException {
		prepareFileDistribution(perfTest, singleConsole);
		// Distribute files
		perfTestService.markStatusAndProgress(perfTest, DISTRIBUTE_FILES, "All necessary files are being distributed.");

		ListenerSupport<SingleConsole.FileDistributionListener> listener = ListenerHelper.create();
		final long safeThreshold = getSafeTransmissionThreshold();

		listener.add(new SingleConsole.FileDistributionListener() {
			@Override
			public void distributed(String fileName) {
				perfTestService.markProgress(perfTest, " - " + fileName);
			}

			@SuppressWarnings("ConstantConditions")
			@Override
			public boolean start(File dir, boolean safe) {
				if (safe) {
					perfTestService.markProgress(perfTest, "Safe file distribution mode is enabled.");
					return safe;
				}
				long sizeOfDirectory = FileUtils.sizeOfDirectory(dir);
				if (sizeOfDirectory > safeThreshold) {
					perfTestService.markProgress(perfTest, "The total size of distributed files is over "
							+ UnitUtils.byteCountToDisplaySize(safeThreshold) + ".\n- Safe file distribution mode is enabled by force.");
					return true;
				}
				return safe;
			}
		});

		// the files have prepared before
		singleConsole.distributeFiles(perfTestService.getDistributionPath(perfTest), listener,
				isSafeDistPerfTest(perfTest));
		perfTestService.markStatusAndProgress(perfTest, DISTRIBUTE_FILES_FINISHED,
				"All necessary files are distributed.");
	}
Distribute files to agents.

@param perfTest      perftest
@param singleConsole console to be used.
ngrinder-controller/src/main/java/org/ngrinder/perftest/service/PerfTestRunnable.java