Skip to content
Snippets Groups Projects
Commit 5b8083f2 authored by Gabor Szarnyas's avatar Gabor Szarnyas
Browse files

Using builders for GeneratorConfigs as well. Fixes #76

parent 53425556
Branches
No related tags found
No related merge requests found
Showing
with 215 additions and 46 deletions
package hu.bme.mit.trainbenchmark.config;
import com.google.common.base.Preconditions;
/**
* This class uses the Curiously-Recurring Generic Pattern, see
* http://www.artima.com/weblogs/viewpost.jsp?thread=133275 for details.
*/
public abstract class AbstractConfigBuilder<
TConfigBase extends AbstractConfigBase,
TConfig extends AbstractConfig<TConfigBase>,
TBuilder extends AbstractConfigBuilder<TConfigBase, TConfig, ?>> {
protected TConfigBase configBase;
@SuppressWarnings("unchecked")
public TBuilder setConfigBase(final TConfigBase configBase) {
this.configBase = configBase;
return (TBuilder) this;
}
public abstract TConfig createConfig();
public void checkNotNulls() {
Preconditions.checkNotNull(configBase);
}
}
......@@ -17,7 +17,7 @@ import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
public class EmfGeneratorConfig extends GeneratorConfig {
public EmfGeneratorConfig(final GeneratorConfigBase configBase) {
protected EmfGeneratorConfig(final GeneratorConfigBase configBase) {
super(configBase);
}
......
package hu.bme.mit.trainbenchmark.generator.emf.config;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
public class EmfGeneratorConfigBuilder
extends GeneratorConfigBuilder<EmfGeneratorConfig, EmfGeneratorConfigBuilder> {
@Override
public EmfGeneratorConfig createConfig() {
checkNotNulls();
return new EmfGeneratorConfig(configBase);
}
}
......@@ -5,13 +5,14 @@ import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
import hu.bme.mit.trainbenchmark.generator.emf.EmfSerializer;
import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.emf.config.EmfGeneratorConfigBuilder;
import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
public class EmfGeneratorTest extends GeneratorTest {
@Override
public void generate(final GeneratorConfigBase gcb) throws Exception {
final EmfGeneratorConfig gc = new EmfGeneratorConfig(gcb);
final EmfGeneratorConfig gc = new EmfGeneratorConfigBuilder().setConfigBase(gcb).createConfig();
final EmfSerializer serializer = new EmfSerializer(gc);
final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
generator.generateModel();
......
......@@ -17,7 +17,7 @@ import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
public class Neo4jGraphGeneratorConfig extends GeneratorConfig {
public Neo4jGraphGeneratorConfig(final GeneratorConfigBase configBase) {
protected Neo4jGraphGeneratorConfig(final GeneratorConfigBase configBase) {
super(configBase);
}
......
/*******************************************************************************
* Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Benedek Izso - initial API and implementation
* Gabor Szarnyas - initial API and implementation
*******************************************************************************/
package hu.bme.mit.trainbenchmark.generator.graph.neo4j.config;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
public class Neo4jGraphGeneratorConfigBuilder extends GeneratorConfigBuilder<Neo4jGraphGeneratorConfig, Neo4jGraphGeneratorConfigBuilder> {
@Override
public Neo4jGraphGeneratorConfig createConfig() {
checkNotNulls();
return new Neo4jGraphGeneratorConfig(configBase);
}
}
......@@ -17,13 +17,14 @@ import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
import hu.bme.mit.trainbenchmark.generator.graph.neo4j.Neo4jGraphSerializer;
import hu.bme.mit.trainbenchmark.generator.graph.neo4j.config.Neo4jGraphGeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.graph.neo4j.config.Neo4jGraphGeneratorConfigBuilder;
import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
public class Neo4jGraphGeneratorTest extends GeneratorTest {
@Override
public void generate(final GeneratorConfigBase gcb) throws Exception {
final Neo4jGraphGeneratorConfig gc = new Neo4jGraphGeneratorConfig(gcb);
final Neo4jGraphGeneratorConfig gc = new Neo4jGraphGeneratorConfigBuilder().setConfigBase(gcb).createConfig();
final Neo4jGraphSerializer serializer = new Neo4jGraphSerializer(gc);
final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
generator.generateModel();
......
......@@ -19,7 +19,7 @@ public class TinkerGraphGeneratorConfig extends GeneratorConfig {
protected TinkerGraphFormat graphFormat;
public TinkerGraphGeneratorConfig(final GeneratorConfigBase configBase, final TinkerGraphFormat graphFormat) {
protected TinkerGraphGeneratorConfig(final GeneratorConfigBase configBase, final TinkerGraphFormat graphFormat) {
super(configBase);
this.graphFormat = graphFormat;
}
......
package hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config;
import com.google.common.base.Preconditions;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
public class TinkerGraphGeneratorConfigBuilder
extends GeneratorConfigBuilder<TinkerGraphGeneratorConfig, TinkerGraphGeneratorConfigBuilder> {
protected TinkerGraphFormat graphFormat;
public TinkerGraphGeneratorConfigBuilder setGraphFormat(TinkerGraphFormat graphFormat) {
this.graphFormat = graphFormat;
return this;
}
@Override
public TinkerGraphGeneratorConfig createConfig() {
return new TinkerGraphGeneratorConfig(configBase, graphFormat);
}
@Override
public void checkNotNulls() {
super.checkNotNulls();
Preconditions.checkNotNull(graphFormat);
}
}
......@@ -6,13 +6,15 @@ import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.TinkerGraphSerializer;
import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphFormat;
import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.graph.tinkerpop.config.TinkerGraphGeneratorConfigBuilder;
import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
public class TinkerGraphGeneratorTest extends GeneratorTest {
@Override
public void generate(final GeneratorConfigBase gcb) throws Exception {
final TinkerGraphGeneratorConfig gc = new TinkerGraphGeneratorConfig(gcb, TinkerGraphFormat.GRAPHML);
final TinkerGraphGeneratorConfig gc = new TinkerGraphGeneratorConfigBuilder().setConfigBase(gcb)
.setGraphFormat(TinkerGraphFormat.GRAPHML).createConfig();
final TinkerGraphSerializer serializer = new TinkerGraphSerializer(gc);
final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
generator.generateModel();
......
......@@ -21,7 +21,7 @@ public class RdfGeneratorConfig extends GeneratorConfig {
protected boolean inferred;
protected RdfFormat format;
public RdfGeneratorConfig(final GeneratorConfigBase configBase,
protected RdfGeneratorConfig(final GeneratorConfigBase configBase,
final boolean inferred, final RdfFormat format) {
super(configBase);
this.inferred = inferred;
......
package hu.bme.mit.trainbenchmark.generator.rdf.config;
import com.google.common.base.Preconditions;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
import hu.bme.mit.trainbenchmark.rdf.RdfFormat;
public class RdfGeneratorConfigBuilder extends GeneratorConfigBuilder<RdfGeneratorConfig, RdfGeneratorConfigBuilder> {
protected Boolean inferencing;
protected RdfFormat format;
public RdfGeneratorConfigBuilder setInferencing(Boolean inferencing) {
this.inferencing = inferencing;
return this;
}
public RdfGeneratorConfigBuilder setFormat(RdfFormat format) {
this.format = format;
return this;
}
@Override
public void checkNotNulls() {
super.checkNotNulls();
Preconditions.checkNotNull(inferencing);
Preconditions.checkNotNull(format);
}
@Override
public RdfGeneratorConfig createConfig() {
checkNotNulls();
return new RdfGeneratorConfig(configBase, inferencing, format);
}
}
package hu.bme.mit.trainbenchmark.generator.rdf.test;
import java.util.Arrays;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
import hu.bme.mit.trainbenchmark.generator.rdf.RdfSerializer;
import hu.bme.mit.trainbenchmark.generator.rdf.config.RdfGeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.rdf.config.RdfGeneratorConfigBuilder;
import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
import hu.bme.mit.trainbenchmark.rdf.RdfFormat;
public class RdfWithInfererredGeneratorTest extends GeneratorTest {
@RunWith(Parameterized.class)
public class RdfGeneratorTest extends GeneratorTest {
@Parameters(name="inferencing={0}")
public static Iterable<? extends Object> data() {
return Arrays.asList(false, true);
}
@Parameter
public boolean inferencing;
@Override
public void generate(final GeneratorConfigBase gcb) throws Exception {
final RdfGeneratorConfig gc = new RdfGeneratorConfig(gcb, true, RdfFormat.TURTLE);
final RdfGeneratorConfig gc = new RdfGeneratorConfigBuilder().setConfigBase(gcb).setInferencing(inferencing)
.setFormat(RdfFormat.TURTLE).createConfig();
final RdfSerializer serializer = new RdfSerializer(gc);
final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
generator.generateModel();
......
package hu.bme.mit.trainbenchmark.generator.rdf.test;
import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
import hu.bme.mit.trainbenchmark.generator.rdf.RdfSerializer;
import hu.bme.mit.trainbenchmark.generator.rdf.config.RdfGeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
import hu.bme.mit.trainbenchmark.rdf.RdfFormat;
public class RdfWithoutInfererredGeneratorTest extends GeneratorTest {
@Override
public void generate(final GeneratorConfigBase gcb) throws Exception {
final RdfGeneratorConfig gc = new RdfGeneratorConfig(gcb, false, RdfFormat.TURTLE);
final RdfSerializer serializer = new RdfSerializer(gc);
final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
generator.generateModel();
}
}
......@@ -17,7 +17,7 @@ import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
public class SqlGeneratorConfig extends GeneratorConfig {
public SqlGeneratorConfig(final GeneratorConfigBase configBase) {
protected SqlGeneratorConfig(final GeneratorConfigBase configBase) {
super(configBase);
}
......
/*******************************************************************************
* Copyright (c) 2010-2015, Benedek Izso, Gabor Szarnyas, Istvan Rath and Daniel Varro
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Benedek Izso - initial API and implementation
* Gabor Szarnyas - initial API and implementation
*******************************************************************************/
package hu.bme.mit.trainbenchmark.generator.sql.config;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBuilder;
public class SqlGeneratorConfigBuilder extends GeneratorConfigBuilder<SqlGeneratorConfig, SqlGeneratorConfigBuilder> {
@Override
public SqlGeneratorConfig createConfig() {
checkNotNulls();
return new SqlGeneratorConfig(configBase);
}
}
......@@ -4,13 +4,14 @@ import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
import hu.bme.mit.trainbenchmark.generator.ScalableGeneratorFactory;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfigBase;
import hu.bme.mit.trainbenchmark.generator.sql.config.SqlGeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.sql.config.SqlGeneratorConfigBuilder;
import hu.bme.mit.trainbenchmark.generator.tests.GeneratorTest;
public class SqlGeneratorTest extends GeneratorTest {
@Override
public void generate(final GeneratorConfigBase gcb) throws Exception {
final SqlGeneratorConfig gc = new SqlGeneratorConfig(gcb);
final SqlGeneratorConfig gc = new SqlGeneratorConfigBuilder().setConfigBase(gcb).createConfig();
final SqlSerializer serializer = new SqlSerializer(gc);
final ModelGenerator generator = ScalableGeneratorFactory.createGenerator(serializer, gc);
generator.generateModel();
......
package hu.bme.mit.trainbenchmark.generator.config;
import com.google.common.base.Preconditions;
import hu.bme.mit.trainbenchmark.constants.Scenario;
public class GeneratorConfigBaseBuilder {
public final class GeneratorConfigBaseBuilder {
private Scenario scenario;
private Integer size;
......
package hu.bme.mit.trainbenchmark.generator.config;
import hu.bme.mit.trainbenchmark.config.AbstractConfigBuilder;
public abstract class GeneratorConfigBuilder
<TGeneratorConfig extends GeneratorConfig,TGeneratorConfigBuilder extends GeneratorConfigBuilder<TGeneratorConfig, ?>>
extends AbstractConfigBuilder
<GeneratorConfigBase, TGeneratorConfig, TGeneratorConfigBuilder> {
}
......@@ -83,8 +83,8 @@ def runBenchmarkSeries(BenchmarkConfigBaseBuilder configBaseBuilder, BenchmarkCo
println("------------------------------------------------------------")
configBaseBuilder.setModelFilename(modelFilename)
def configBase = configBaseBuilder.createBenchmarkConfigBase()
def config = configBuilder.setConfigBase(configBase).createBenchmarkConfig()
def configBase = configBaseBuilder.createConfigBase()
def config = configBuilder.setConfigBase(configBase).createConfig()
def exitValue = BenchmarkRunner.runPerformanceBenchmark(config, ec)
if (exitValue != 0) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment