use of org.opendaylight.netconf.test.tool.config.Configuration in project netconf by opendaylight.
the class Main method main.
@SuppressWarnings("checkstyle:IllegalCatch")
@SuppressFBWarnings({ "UW_UNCOND_WAIT", "WA_NOT_IN_LOOP" })
public static void main(final String[] args) {
final TesttoolParameters params = TesttoolParameters.parseArgs(args, TesttoolParameters.getParser());
params.validate();
final ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.setLevel(params.debug ? Level.DEBUG : Level.INFO);
final Configuration configuration = new ConfigurationBuilder().from(params).build();
final NetconfDeviceSimulator netconfDeviceSimulator = new NetconfDeviceSimulator(configuration);
try {
LOG.debug("Trying to start netconf test-tool with parameters {}", params);
final List<Integer> openDevices = netconfDeviceSimulator.start();
if (openDevices.size() == 0) {
LOG.error("Failed to start any simulated devices, exiting...");
System.exit(1);
}
// if ODL controller ip is not set NETCONF devices will be started, but not registered at the controller
if (params.controllerIp != null) {
final List<Execution> executionThreads = divideDevicesForThreads(openDevices, params);
final ExecutorService executorService = Executors.newFixedThreadPool(params.threadAmount);
final Stopwatch time = Stopwatch.createStarted();
final List<Future<Void>> futures = executorService.invokeAll(executionThreads, params.timeOut, TimeUnit.SECONDS);
int threadNum = 0;
for (final Future<Void> future : futures) {
threadNum++;
if (future.isCancelled()) {
LOG.info("{}. thread timed out.", threadNum);
} else {
try {
future.get();
} catch (final ExecutionException | InterruptedException e) {
LOG.info("{}. thread failed.", threadNum, e);
}
}
}
time.stop();
LOG.info("Time spent with configuration of devices: {}.", time);
}
} catch (final RuntimeException | InterruptedException e) {
LOG.error("Unhandled exception", e);
netconfDeviceSimulator.close();
System.exit(1);
}
// Block main thread
synchronized (netconfDeviceSimulator) {
try {
netconfDeviceSimulator.wait();
} catch (final InterruptedException e) {
throw new RuntimeException(e);
}
}
}
use of org.opendaylight.netconf.test.tool.config.Configuration in project netconf by opendaylight.
the class ScaleUtil method main.
@SuppressWarnings("checkstyle:illegalCatch")
public static void main(final String[] args) {
final TesttoolParameters params = TesttoolParameters.parseArgs(args, TesttoolParameters.getParser());
setUpLoggers(params);
// cleanup at the start in case controller was already running
final Runtime runtime = Runtime.getRuntime();
cleanup(runtime, params);
while (true) {
root.warn("Starting scale test with {} devices", params.deviceCount);
final ScheduledFuture<?> timeoutGuardFuture = EXECUTOR.schedule(new TimeoutGuard(), TIMEOUT, TimeUnit.MINUTES);
final Configuration configuration = new ConfigurationBuilder().from(params).build();
final NetconfDeviceSimulator netconfDeviceSimulator = new NetconfDeviceSimulator(configuration);
final List<Integer> openDevices = netconfDeviceSimulator.start();
if (openDevices.size() == 0) {
root.error("Failed to start any simulated devices, exiting...");
System.exit(1);
}
if (params.distroFolder == null) {
root.error("Distro folder is not set, exiting...");
System.exit(1);
}
root.warn(params.distroFolder.getAbsolutePath());
try {
runtime.exec(params.distroFolder.getAbsolutePath() + "/bin/start");
String status;
do {
final Process list = runtime.exec(params.distroFolder.getAbsolutePath() + "/bin/client feature:list");
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
root.warn("Failed to sleep", e);
}
status = CharStreams.toString(new BufferedReader(new InputStreamReader(list.getErrorStream())));
root.warn(status);
} while (status.startsWith("Failed to get the session"));
root.warn("Doing feature install {}", params.distroFolder.getAbsolutePath() + "/bin/client feature:install odl-restconf-nb-rfc8040 odl-netconf-topology");
final Process featureInstall = runtime.exec(params.distroFolder.getAbsolutePath() + "/bin/client feature:install odl-restconf-nb-rfc8040 odl-netconf-topology");
root.warn(CharStreams.toString(new BufferedReader(new InputStreamReader(featureInstall.getInputStream()))));
root.warn(CharStreams.toString(new BufferedReader(new InputStreamReader(featureInstall.getErrorStream()))));
} catch (IOException e) {
root.error("Failed to start karaf", e);
System.exit(1);
}
waitNetconfTopologyReady(params);
final Execution ex = new Execution(openDevices, params);
ex.call();
root.warn("Karaf started, starting stopwatch");
STOPWATCH.start();
try {
EXECUTOR.schedule(new ScaleVerifyCallable(params), RETRY_DELAY, TimeUnit.SECONDS);
root.warn("First callable scheduled");
SEMAPHORE.acquire();
root.warn("semaphore released");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
timeoutGuardFuture.cancel(false);
params.deviceCount += DEVICE_STEP;
netconfDeviceSimulator.close();
STOPWATCH.reset();
cleanup(runtime, params);
}
}
Aggregations