Skip to content

Commit 19a9d1d

Browse files
committed
Models validation added
1 parent 8fe767b commit 19a9d1d

File tree

4 files changed

+93
-19
lines changed

4 files changed

+93
-19
lines changed

src/main/java/org/hobbit/sdk/examples/dummybenchmark/test/DummyBenchmarkTestRunner.java

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package org.hobbit.sdk.examples.dummybenchmark.test;
22

3+
import org.apache.commons.io.FileUtils;
4+
import org.apache.jena.rdf.model.Model;
5+
import org.apache.jena.rdf.model.Resource;
36
import org.hobbit.core.Constants;
47
import org.hobbit.core.components.Component;
8+
import org.hobbit.core.rabbit.RabbitMQUtils;
59
import org.hobbit.sdk.utils.ComponentsExecutor;
610
import org.hobbit.sdk.EnvironmentVariablesWrapper;
711
import org.hobbit.sdk.JenaKeyValue;
12+
import org.hobbit.sdk.utils.ModelsHandler;
813
import org.hobbit.sdk.utils.MultiThreadedImageBuilder;
914
import org.hobbit.sdk.docker.RabbitMqDockerizer;
1015
import org.hobbit.sdk.docker.builders.hobbit.*;
@@ -13,6 +18,8 @@
1318
import org.hobbit.sdk.utils.commandreactions.CommandReactionsBuilder;
1419
import org.junit.Assert;
1520

21+
import java.io.File;
22+
import java.io.IOException;
1623
import java.util.Date;
1724

1825
import static org.hobbit.core.Constants.*;
@@ -137,8 +144,8 @@ private void checkHealth(Boolean dockerize) throws Exception {
137144
String benchmarkContainerId = "benchmark";
138145
String systemContainerId = "system";
139146

140-
benchmarkContainerId = commandQueueListener.createContainer(benchmarkBuilder.getImageName(), "benchmark", new String[]{ HOBBIT_EXPERIMENT_URI_KEY+"="+NEW_EXPERIMENT_URI, BENCHMARK_PARAMETERS_MODEL_KEY+"="+ createBenchmarkParameters().encodeToString() });
141-
systemContainerId = commandQueueListener.createContainer(systemAdapterBuilder.getImageName(), "system" ,new String[]{ SYSTEM_PARAMETERS_MODEL_KEY+"="+ createSystemParameters().encodeToString() });
147+
benchmarkContainerId = commandQueueListener.createContainer(benchmarkBuilder.getImageName(), "benchmark", new String[]{ HOBBIT_EXPERIMENT_URI_KEY+"="+NEW_EXPERIMENT_URI, BENCHMARK_PARAMETERS_MODEL_KEY+"="+ RabbitMQUtils.writeModel2String(createBenchmarkParameters()) });
148+
systemContainerId = commandQueueListener.createContainer(systemAdapterBuilder.getImageName(), "system" ,new String[]{ SYSTEM_PARAMETERS_MODEL_KEY+"="+ RabbitMQUtils.writeModel2String(createSystemParameters()) });
142149

143150
//componentsExecutor.submit(benchmarkController, benchmarkContainerId, new String[]{ HOBBIT_EXPERIMENT_URI_KEY+"="+EXPERIMENT_URI, BENCHMARK_PARAMETERS_MODEL_KEY+"="+ createBenchmarkParameters() });
144151
//componentsExecutor.submit(systemAdapter, systemContainerId, new String[]{ SYSTEM_PARAMETERS_MODEL_KEY+"="+ createSystemParameters() });
@@ -155,19 +162,43 @@ private void checkHealth(Boolean dockerize) throws Exception {
155162
Assert.assertFalse(componentsExecutor.anyExceptions());
156163
}
157164

165+
public static Model createBenchmarkParameters() throws IOException {
166+
byte[] bytes = FileUtils.readFileToByteArray(new File("benchmark.ttl"));
167+
Model model = ModelsHandler.byteArrayToModel(bytes, "TTL");
168+
169+
Resource experimentResource = model.createResource(org.hobbit.core.Constants.NEW_EXPERIMENT_URI);
170+
171+
int houses_count = 10000;
172+
//model.add(benchmarkInstanceResource, model.createProperty(BENCHMARK_URI+"#SPARQL_ENDPOINT_URL"), "http://172.17.0.2:8890/sparql");
173+
model.add(experimentResource, model.createProperty(BENCHMARK_URI+"#messages"), model.createTypedLiteral("100", "xsd:unsignedInt"));
174+
175+
ModelsHandler.fillTheInstanceWithDefaultModelValues(model, experimentResource, BENCHMARK_URI);
176+
177+
return model;
158178

159-
public static JenaKeyValue createBenchmarkParameters(){
160-
JenaKeyValue kv = new JenaKeyValue(NEW_EXPERIMENT_URI);
161-
kv.setValue(BENCHMARK_URI+"#messages", 1000);
162-
return kv;
163179
}
164180

165-
public static JenaKeyValue createSystemParameters(){
166-
JenaKeyValue kv = new JenaKeyValue(NEW_EXPERIMENT_URI);
167-
kv.setValue(SYSTEM_URI+"systemParam1", 123);
168-
//kv.setValue(SYSTEM_URI+SYSTEM_CONTAINERS_COUNT_KEY, 2);
169-
return kv;
181+
public static Model createSystemParameters() throws IOException {
182+
byte[] bytes = FileUtils.readFileToByteArray(new File("system.ttl"));
183+
Model model = ModelsHandler.byteArrayToModel(bytes, "TTL");
184+
185+
Resource experimentInstanceResource = model.createResource(org.hobbit.core.Constants.NEW_EXPERIMENT_URI);
186+
//model.add(benchmarkInstanceResource, model.createProperty(BENCHMARK_URI+"#neptuneInstanceType"), model.createTypedLiteral("db.r4.2xlarge", "xsd:string"));
187+
return model;
170188
}
171189

190+
// public static JenaKeyValue createBenchmarkParameters(){
191+
// JenaKeyValue kv = new JenaKeyValue(NEW_EXPERIMENT_URI);
192+
// kv.setValue(BENCHMARK_URI+"#messages", 1000);
193+
// return kv;
194+
// }
195+
//
196+
// public static JenaKeyValue createSystemParameters(){
197+
// JenaKeyValue kv = new JenaKeyValue(NEW_EXPERIMENT_URI);
198+
// kv.setValue(SYSTEM_URI+"systemParam1", 123);
199+
// //kv.setValue(SYSTEM_URI+SYSTEM_CONTAINERS_COUNT_KEY, 2);
200+
// return kv;
201+
// }
202+
172203

173204
}

src/main/java/org/hobbit/sdk/utils/ModelsHandler.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,51 @@
11
package org.hobbit.sdk.utils;
22

3-
import org.apache.jena.rdf.model.Model;
4-
import org.apache.jena.rdf.model.Resource;
3+
import org.apache.jena.rdf.model.*;
4+
import org.apache.jena.vocabulary.RDF;
55
import org.apache.jena.vocabulary.XSD;
6+
import org.hobbit.vocab.HOBBIT;
67

8+
import java.io.ByteArrayInputStream;
79
import java.io.StringWriter;
10+
import java.util.HashMap;
811
import java.util.Map;
912

1013
/**
1114
* @author Pavel Smirnov. ([email protected] / [email protected])
1215
*/
1316
public class ModelsHandler {
17+
18+
public static Model byteArrayToModel(byte data[], String lang) {
19+
Model m = ModelFactory.createDefaultModel();
20+
m.read(new ByteArrayInputStream(data), null, lang);
21+
return m;
22+
}
23+
24+
public static void fillTheInstanceWithDefaultModelValues(Model model, Resource benchmarkInstanceResource, String namespaceUri){
25+
Property parameter;
26+
NodeIterator objIterator;
27+
ResIterator iterator = model.listResourcesWithProperty(RDF.type, HOBBIT.Parameter);
28+
Property defaultValProperty = model.getProperty("http://w3id.org/hobbit/vocab#defaultValue");
29+
while (iterator.hasNext()) {
30+
try{
31+
parameter = model.getProperty(iterator.next().getURI());
32+
if(benchmarkInstanceResource.getProperty(parameter)==null){
33+
objIterator = model.listObjectsOfProperty(parameter, defaultValProperty);
34+
while (objIterator.hasNext()) {
35+
Literal valueLiteral = (Literal) objIterator.next();//.asLiteral().getString();
36+
model.add(benchmarkInstanceResource, parameter, String.valueOf(valueLiteral.getValue()));
37+
//model.add(benchmarkInstanceResource, parameter, model.createTypedLiteral(valueL));
38+
//parameters.put(namespaceUri + "#" + parameter.getLocalName(), value);
39+
}
40+
}
41+
}
42+
catch (Exception e){
43+
e.printStackTrace();
44+
}
45+
}
46+
47+
}
48+
1449
public static Model addParameters(Model model, Resource benchmarkInstanceResource, Map<String, Object> params) throws Exception {
1550
//Property valueProperty = model.getProperty("http://w3id.org/hobbit/vocab#defaultValue");
1651
// Property valueProperty = model.getProperty("hobbit:defaultValue");

src/test/java/org/hobbit/sdk/QueueClient.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void flushQueue(){
5252
}
5353

5454

55-
public void submitToQueue(String benchmarkUri, String systemUri, JenaKeyValue parameters) throws Exception {
55+
public void submitToQueue(String benchmarkUri, String systemUri, Model model) throws Exception {
5656

5757
ExperimentConfiguration cfg = new ExperimentConfiguration();
5858
String id = String.valueOf(String.valueOf(new Date().getTime()));
@@ -66,18 +66,14 @@ public void submitToQueue(String benchmarkUri, String systemUri, JenaKeyValue pa
6666
cfg.systemUri = systemUri;
6767
cfg.userName = username;
6868

69-
Model model = ModelFactory.createDefaultModel();
70-
7169
String benchmarkInstanceId = Constants.NEW_EXPERIMENT_URI;
7270
Resource benchmarkInstanceResource = model.createResource(benchmarkInstanceId);
7371
model.add(benchmarkInstanceResource, RDF.type, HOBBIT.Experiment);
7472
model.add(benchmarkInstanceResource, HOBBIT.involvesBenchmark, model.createResource(benchmarkUri));
7573
model.add(benchmarkInstanceResource, HOBBIT.involvesSystemInstance, model.createResource(systemUri));
7674

77-
ModelsHandler.addParameters(model, benchmarkInstanceResource, parameters);
75+
cfg.serializedBenchParams = RabbitMQUtils.writeModel2String(model);
7876

79-
String modelStr = RabbitMQUtils.writeModel2String(model);
80-
cfg.serializedBenchParams = modelStr;
8177

8278
queue.add(cfg);
8379

system.ttl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
3+
@prefix ex: <http://example.org/> .
4+
@prefix hobbit: <http://w3id.org/hobbit/vocab#> .
5+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
6+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
7+
8+
<http://project-hobbit.eu/sdk-example-benchmark/systemAdapter> a hobbit:SystemInstance;
9+
rdfs:label "DummySystemAdapter"@en;
10+
rdfs:comment "DummySystemAdapter"@en;
11+
hobbit:implementsAPI <http://project-hobbit.eu/sdk-example-benchmark/API>;
12+
hobbit:imageName "git.project-hobbit.eu:4567/sdk-example-benchmark/sdk-examples/systemadapter".

0 commit comments

Comments
 (0)