diff --git a/sbk-gem/src/main/java/io/gem/api/impl/SbkGem.java b/sbk-gem/src/main/java/io/gem/api/impl/SbkGem.java index 6406b8c5..1edabe47 100644 --- a/sbk-gem/src/main/java/io/gem/api/impl/SbkGem.java +++ b/sbk-gem/src/main/java/io/gem/api/impl/SbkGem.java @@ -254,7 +254,7 @@ public static RemoteResponse[] run(final String[] args, final String application storageDrivers = storageDevice == null ? packageStore.getClassNames() : null; - params = new SbkGemParameters(usageLine, storageDrivers, loggerNames, gemConfig, sbmConfig.port); + params = new SbkGemParameters(usageLine, storageDrivers, loggerNames, gemConfig, sbmConfig.port, sbmConfig.idleMS); logger.addArgs(params); if (storageDevice != null) { storageDevice.addArgs(params); @@ -368,13 +368,15 @@ public static RemoteResponse[] run(final String[] args, final String application ramArgsList.add(String.valueOf(logger.getMaxReaderIDs() > 0)); ramArgsList.add("-max"); ramArgsList.add(Integer.toString(params.getConnections().length)); + ramArgsList.add("-millisecsleep"); + ramArgsList.add(Integer.toString(params.getSbmIdleSleepMilliSeconds())); final String[] ramArgs = ramArgsList.toArray(new String[0]); Printer.log.info("Arguments to SBM: " + Arrays.toString(ramArgs)); Printer.log.info("Logger for SBM: " + ramLogger.getClass().getSimpleName()); ramParams = new SbmParameters(appName, params.getSbmPort(), params.getConnections().length, - new String[]{ramLogger.getClass().getSimpleName()}); + params.getSbmIdleSleepMilliSeconds(), new String[]{ramLogger.getClass().getSimpleName()}); ramLogger.addArgs(ramParams); try { ramParams.parseArgs(ramArgs); diff --git a/sbk-gem/src/main/java/io/gem/params/GemParameters.java b/sbk-gem/src/main/java/io/gem/params/GemParameters.java index c2384126..2f40f175 100644 --- a/sbk-gem/src/main/java/io/gem/params/GemParameters.java +++ b/sbk-gem/src/main/java/io/gem/params/GemParameters.java @@ -53,6 +53,15 @@ public sealed interface GemParameters extends Parameters permits GemParameterOpt */ int getSbmPort(); + + /** + * to get SBM idle milliseconds sleep. + * + * @return SBM idle milliseconds sleep. + */ + int getSbmIdleSleepMilliSeconds(); + + /** * checks if parameters are copy. * diff --git a/sbk-gem/src/main/java/io/gem/params/impl/SbkGemParameters.java b/sbk-gem/src/main/java/io/gem/params/impl/SbkGemParameters.java index 0298519a..9f8d30a4 100644 --- a/sbk-gem/src/main/java/io/gem/params/impl/SbkGemParameters.java +++ b/sbk-gem/src/main/java/io/gem/params/impl/SbkGemParameters.java @@ -56,6 +56,9 @@ public final class SbkGemParameters extends SbkDriversParameters implements GemP @Getter private int sbmPort; + @Getter + private int sbmIdleSleepMilliSeconds; + /** * This Constructor is responsible for initializing all values. * @@ -64,12 +67,15 @@ public final class SbkGemParameters extends SbkDriversParameters implements GemP * @param loggers * @param config NotNull GemConfig * @param sbmPort int + * @param sbmIdleSleepMilliSeconds int */ - public SbkGemParameters(String name, String[] drivers, String[] loggers, @NotNull GemConfig config, int sbmPort) { + public SbkGemParameters(String name, String[] drivers, String[] loggers, @NotNull GemConfig config, int sbmPort, + int sbmIdleSleepMilliSeconds) { super(name, GemConfig.DESC, drivers, loggers); this.config = config; this.timeoutMS = config.timeoutSeconds * Time.MS_PER_SEC; this.sbmPort = sbmPort; + this.sbmIdleSleepMilliSeconds = sbmIdleSleepMilliSeconds; try { this.localHost = InetAddress.getLocalHost().getHostName(); } catch (UnknownHostException ex) { @@ -88,9 +94,10 @@ public SbkGemParameters(String name, String[] drivers, String[] loggers, @NotNul addOption("copy", true, "Copy the SBK package to remote hosts; default: " + config.copy); addOption("delete", true, "Delete SBK package after benchmark; default: " + config.delete); addOption("localhost", true, "this local SBM host name, default: " + localHost); - addOption("sbmPort", true, "SBM port number; default: " + this.sbmPort); + addOption("sbmport", true, "SBM port number; default: " + this.sbmPort); + addOption("sbmsleepms", true, "SBM idle milliseconds to sleep; default: " + this.sbmIdleSleepMilliSeconds); this.optionsArgs = new String[]{"-nodes", "-gemuser", "-gempass", "-gemport", "-sbkdir", "-sbkcommand", - "-copy", "-delete", "-localhost", "-sbmPort"}; + "-copy", "-delete", "-localhost", "-sbmPort", "-sbmsleepms"}; this.parsedArgs = null; } @@ -108,14 +115,15 @@ public void parseArgs(String[] args) throws ParseException, IllegalArgumentExcep config.sbkdir = getOptionValue("sbkdir", config.sbkdir); config.sbkcommand = getOptionValue("sbkcommand", config.sbkcommand); localHost = getOptionValue("localhost", localHost); - sbmPort = Integer.parseInt(getOptionValue("ramport", Integer.toString(sbmPort))); + sbmPort = Integer.parseInt(getOptionValue("sbmport", Integer.toString(sbmPort))); + sbmIdleSleepMilliSeconds = Integer.parseInt(getOptionValue("sbmsleepms", Integer.toString(sbmPort))); config.copy = Boolean.parseBoolean(getOptionValue("copy", Boolean.toString(config.copy))); config.delete = Boolean.parseBoolean(getOptionValue("delete", Boolean.toString(config.delete))); parsedArgs = new String[]{"-nodes", nodeString, "-gemuser", config.sbkcommand, "-gempass", config.gempass, "-gemport", Integer.toString(config.gemport), "-sbkdir", config.sbkdir, "-sbkcommand", config.sbkcommand, "-copy", Boolean.toString(config.copy), - "-delete", Boolean.toString(config.delete), "-localhost", localHost, "-ramport", + "-delete", Boolean.toString(config.delete), "-localhost", localHost, "-sbmport", Integer.toString(sbmPort)}; connections = new ConnectionConfig[nodes.length]; diff --git a/sbm/src/main/java/io/sbm/api/impl/Sbm.java b/sbm/src/main/java/io/sbm/api/impl/Sbm.java index 1517b015..b79e2b02 100644 --- a/sbm/src/main/java/io/sbm/api/impl/Sbm.java +++ b/sbm/src/main/java/io/sbm/api/impl/Sbm.java @@ -156,7 +156,7 @@ public static Benchmark buildBenchmark(final String[] args, final String applica Printer.log.error("Instantiation of Logger class '" + argsLoggerName + "' from the package '" + ramLoggerPackageName + "' failed!, " + "error: " + ex); final RamParameterOptions helpParams = new SbmParameters(appName, sbmConfig.port, - sbmConfig.maxConnections, loggerNames); + sbmConfig.maxConnections, sbmConfig.idleMS, loggerNames); helpParams.printHelp(); throw ex; } @@ -167,7 +167,7 @@ public static Benchmark buildBenchmark(final String[] args, final String applica // disable CSV sbmConfig.csv = false; - params = new SbmParameters(usageLine, sbmConfig.port, sbmConfig.maxConnections, loggerNames); + params = new SbmParameters(usageLine, sbmConfig.port, sbmConfig.maxConnections, sbmConfig.idleMS, loggerNames); logger.addArgs(params); try { params.parseArgs(args); diff --git a/sbm/src/main/java/io/sbm/params/RamParameters.java b/sbm/src/main/java/io/sbm/params/RamParameters.java index b84ae49f..4546f3d4 100644 --- a/sbm/src/main/java/io/sbm/params/RamParameters.java +++ b/sbm/src/main/java/io/sbm/params/RamParameters.java @@ -38,4 +38,10 @@ public sealed interface RamParameters extends ActionParameter permits RamParamet */ int getMaxConnections(); + /** + * get duration idle sleep in Milliseconds. + * + * @return get idle sleep in milliseconds . + */ + int getIdleSleepMilliSeconds(); } diff --git a/sbm/src/main/java/io/sbm/params/impl/SbmParameters.java b/sbm/src/main/java/io/sbm/params/impl/SbmParameters.java index 6238ae28..534a15a4 100644 --- a/sbm/src/main/java/io/sbm/params/impl/SbmParameters.java +++ b/sbm/src/main/java/io/sbm/params/impl/SbmParameters.java @@ -42,6 +42,9 @@ final public class SbmParameters extends SbkInputOptions implements RamParameter @Getter private int port; + @Getter + private int idleSleepMilliSeconds; + final private String[] loggerNames; /** * Constructor SbmParameters initializing all values. @@ -49,9 +52,10 @@ final public class SbmParameters extends SbkInputOptions implements RamParameter * @param name String * @param port int * @param maxConnections int + * @param idleMS int * @param loggerNames */ - public SbmParameters(String name, int port, int maxConnections, String[] loggerNames) { + public SbmParameters(String name, int port, int maxConnections, int idleMS, String[] loggerNames) { super(name, SbmConfig.DESC); this.maxConnections = maxConnections; this.port = port; @@ -71,6 +75,7 @@ public SbmParameters(String name, int port, int maxConnections, String[] loggerN default: r"""); addOption("port", true, "SBM port number; default: " + this.port); addOption("max", true, "Maximum number of connections; default: " + maxConnections); + addOption("millisecsleep", true, "Idle sleep in milliseconds; default: " + idleMS); } @@ -95,6 +100,6 @@ public void parseArgs(String[] args) throws ParseException, IllegalArgumentExcep }; maxConnections = Integer.parseInt(getOptionValue("max", Integer.toString(maxConnections))); port = Integer.parseInt(getOptionValue("port", Integer.toString(port))); + idleSleepMilliSeconds = Integer.parseInt(getOptionValue("millisecsleep", Integer.toString(idleSleepMilliSeconds))); } - }