mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
enable runtime version check via version_regex yaml property
This commit is contained in:
parent
a05dbc834a
commit
db327b29e9
@ -57,4 +57,13 @@
|
|||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -16,9 +16,13 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityconfig.rawyaml;
|
package io.nosqlbench.engine.api.activityconfig.rawyaml;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.util.AdaptersApiVersionInfo;
|
||||||
|
import io.nosqlbench.nb.api.errors.OpConfigError;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A statements doc can have both a list of statement blocks and/or a
|
* A statements doc can have both a list of statement blocks and/or a
|
||||||
@ -33,6 +37,7 @@ public class RawStmtsDoc extends StatementsOwner {
|
|||||||
|
|
||||||
private RawScenarios scenarios = new RawScenarios();
|
private RawScenarios scenarios = new RawScenarios();
|
||||||
private final List<RawStmtsBlock> blocks = new ArrayList<>();
|
private final List<RawStmtsBlock> blocks = new ArrayList<>();
|
||||||
|
private String versionRegex = ".+";
|
||||||
|
|
||||||
// no-args ctor is required
|
// no-args ctor is required
|
||||||
public RawStmtsDoc() {
|
public RawStmtsDoc() {
|
||||||
@ -45,6 +50,17 @@ public class RawStmtsDoc extends StatementsOwner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setFieldsByReflection(Map<String, Object> properties) {
|
public void setFieldsByReflection(Map<String, Object> properties) {
|
||||||
|
if (properties.containsKey("version_regex")) {
|
||||||
|
String versionRegex = properties.remove("version_regex").toString();
|
||||||
|
if (versionRegex!=null) {
|
||||||
|
Pattern versionpattern = Pattern.compile(versionRegex);
|
||||||
|
String version = new AdaptersApiVersionInfo().getVersion();
|
||||||
|
if (!versionpattern.matcher(version).matches()) {
|
||||||
|
throw new OpConfigError("Unable to load yaml with this version '" + version + " since " +
|
||||||
|
"the required version doesn't match version_regex '" + versionRegex + "' from yaml.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Object blocksObjects = properties.remove("blocks");
|
Object blocksObjects = properties.remove("blocks");
|
||||||
if (blocksObjects instanceof List) {
|
if (blocksObjects instanceof List) {
|
||||||
List<Object> blockList = ((List<Object>) blocksObjects);
|
List<Object> blockList = ((List<Object>) blocksObjects);
|
||||||
@ -79,7 +95,6 @@ public class RawStmtsDoc extends StatementsOwner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Object scenariosData = properties.remove("scenarios");
|
Object scenariosData = properties.remove("scenarios");
|
||||||
|
|
||||||
if (scenariosData != null) {
|
if (scenariosData != null) {
|
||||||
scenarios.setPropertiesByReflection(scenariosData);
|
scenarios.setPropertiesByReflection(scenariosData);
|
||||||
}
|
}
|
||||||
@ -121,4 +136,12 @@ public class RawStmtsDoc extends StatementsOwner {
|
|||||||
this.scenarios = scenarios;
|
this.scenarios = scenarios;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getVersionRegex() {
|
||||||
|
return this.versionRegex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersionRegex(String regex) {
|
||||||
|
this.versionRegex = regex;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,18 @@
|
|||||||
package io.nosqlbench.engine.api.activityconfig.yaml;
|
package io.nosqlbench.engine.api.activityconfig.yaml;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityconfig.StatementsLoader;
|
import io.nosqlbench.engine.api.activityconfig.StatementsLoader;
|
||||||
|
import io.nosqlbench.engine.api.activityconfig.rawyaml.RawStmtsDoc;
|
||||||
import io.nosqlbench.engine.api.activityconfig.rawyaml.RawStmtsDocList;
|
import io.nosqlbench.engine.api.activityconfig.rawyaml.RawStmtsDocList;
|
||||||
import io.nosqlbench.engine.api.util.TagFilter;
|
import io.nosqlbench.engine.api.util.TagFilter;
|
||||||
import io.nosqlbench.nb.api.config.standard.*;
|
import io.nosqlbench.nb.api.config.standard.ConfigModel;
|
||||||
|
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
|
||||||
|
import io.nosqlbench.nb.api.config.standard.NBConfigModelExpander;
|
||||||
|
import io.nosqlbench.nb.api.config.standard.Param;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class StmtsDocList implements Iterable<StmtsDoc> {
|
public class StmtsDocList implements Iterable<StmtsDoc> {
|
||||||
@ -156,4 +161,9 @@ public class StmtsDocList implements Iterable<StmtsDoc> {
|
|||||||
StmtsDocList loaded = StatementsLoader.loadPath(logger, (String) workload, "activities");
|
StmtsDocList loaded = StatementsLoader.loadPath(logger, (String) workload, "activities");
|
||||||
return loaded.getConfigModel();
|
return loaded.getConfigModel();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public Pattern getVersionRegex() {
|
||||||
|
List<RawStmtsDoc> stmtDocs = rawStmtsDocList.getStmtsDocs();
|
||||||
|
return Pattern.compile(stmtDocs.size()>0 ? stmtDocs.get(0).getVersionRegex() : ".*");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2022 nosqlbench
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.nosqlbench.engine.api.util;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
public class AdaptersApiVersionInfo {
|
||||||
|
|
||||||
|
private final Properties versionProperties = new Properties();
|
||||||
|
|
||||||
|
public AdaptersApiVersionInfo() {
|
||||||
|
InputStream versionStream = getClass().getResourceAsStream("/version.properties");
|
||||||
|
try {
|
||||||
|
versionProperties.load(versionStream);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("unable to read version properties:" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return versionProperties.getProperty("version");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtifactId() {
|
||||||
|
return versionProperties.getProperty("artifactId");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGroupId() {
|
||||||
|
return versionProperties.getProperty("groupId");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtifactCoordinates() {
|
||||||
|
return "<dependency>\n" +
|
||||||
|
" <groupId>" + getGroupId() + "</groupId>\n" +
|
||||||
|
" <artifactId>"+ getArtifactId() + "</artifactId>\n" +
|
||||||
|
" <version>" + getVersion() + "</version>\n" +
|
||||||
|
"</dependency>";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
19
adapters-api/src/main/resources/version.properties
Normal file
19
adapters-api/src/main/resources/version.properties
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2022 nosqlbench
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
version=${project.version}
|
||||||
|
groupId=${project.groupId}
|
||||||
|
artifactId=${project.artifactId}
|
Loading…
Reference in New Issue
Block a user