allow session namer to use pre-defined timestamp

This commit is contained in:
Jonathan Shook 2021-10-11 17:22:50 -05:00
parent 133760d8c9
commit e1e10bbaa8
3 changed files with 17 additions and 10 deletions

View File

@ -1,6 +1,7 @@
package io.nosqlbench.engine.cli;
import io.nosqlbench.docsys.core.NBWebServerApp;
import io.nosqlbench.nb.api.metadata.SessionNamer;
import io.nosqlbench.engine.api.activityapi.core.ActivityType;
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDumperUtility;
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility;
@ -21,7 +22,7 @@ import io.nosqlbench.engine.core.script.Scenario;
import io.nosqlbench.engine.core.script.ScenariosExecutor;
import io.nosqlbench.engine.core.script.ScriptParams;
import io.nosqlbench.engine.docker.DockerMetricsManager;
import io.nosqlbench.nb.api.SystemId;
import io.nosqlbench.nb.api.metadata.SystemId;
import io.nosqlbench.nb.api.annotations.Annotation;
import io.nosqlbench.nb.api.annotations.Layer;
import io.nosqlbench.nb.api.content.Content;
@ -93,7 +94,7 @@ public class NBCLI {
loggerConfig.setConsoleLevel(NBLogLevel.ERROR);
NBCLIOptions globalOptions = new NBCLIOptions(args, NBCLIOptions.Mode.ParseGlobalsOnly);
String sessionName = new SessionNamer().format(globalOptions.getSessionName());
String sessionName = SessionNamer.format(globalOptions.getSessionName());
loggerConfig
.setSessionName(sessionName)

View File

@ -17,6 +17,7 @@
package io.nosqlbench.engine.cli;
import io.nosqlbench.nb.api.metadata.SessionNamer;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@ -26,18 +27,18 @@ public class SessionNamerTest {
@Test
public void testDefaultFormat() {
SessionNamer namer = new SessionNamer();
String name1 = namer.format(null);
String name1 = SessionNamer.format(null);
assertThat(name1).matches("scenario_\\d{8}_\\d{6}_\\d{3}");
String name2 = namer.format("");
String name2 = SessionNamer.format("");
assertThat(name2).matches("scenario_\\d{8}_\\d{6}_\\d{3}");
}
@Test
public void testCustomFormat() {
SessionNamer namer = new SessionNamer();
String name1 = namer.format("Custom_session_name");
String name1 = SessionNamer.format("Custom_session_name");
assertThat(name1).matches("Custom_session_name");
String name2 = namer.format("TEST--%tQ");
String name2 = SessionNamer.format("TEST--%tQ");
assertThat(name2).matches("TEST--\\d{13}");
}

View File

@ -15,11 +15,13 @@
* /
*/
package io.nosqlbench.engine.cli;
package io.nosqlbench.nb.api.metadata;
import java.util.Arrays;
public class SessionNamer {
public String format(String sessionName) {
public static String format(String sessionName, long sessionTimeMillis) {
String nameTemplate = sessionName;
if (nameTemplate==null || nameTemplate.isEmpty()) {
nameTemplate = "scenario_%tY%tm%td_%tH%tM%tS_%tL";
@ -27,11 +29,14 @@ public class SessionNamer {
int splits = nameTemplate.split("%").length -1;
Long[] times = new Long[splits];
long now = System.currentTimeMillis();
for (int i = 0; i < times.length; i++) times[i] = now;
Arrays.fill(times, sessionTimeMillis);
sessionName = String.format(nameTemplate, (Object[]) times);
return sessionName;
}
public static String format(String sessionName) {
return format(sessionName, System.currentTimeMillis());
}
}