package org.gradoop.flink.algorithms.fsm;
import org.gradoop.flink.algorithms.fsm.dimspan.config.DIMSpanConfig;
import org.gradoop.flink.algorithms.fsm.dimspan.config.DataflowStep;
import org.gradoop.flink.algorithms.fsm.dimspan.config.DictionaryType;
import org.gradoop.flink.datagen.transactions.predictable.PredictableTransactionsGenerator;
import org.gradoop.flink.model.GradoopFlinkTestBase;
import org.gradoop.flink.model.impl.GraphCollection;
import org.gradoop.flink.model.impl.GraphTransactions;
import org.junit.Assert;
import org.junit.Test;
public class DIMSpanConfigTest extends GradoopFlinkTestBase {
private static final float MIN_SUPPORT = 1.0f;
private static final long GRAPH_COUNT = 10;
@Test
public void dictionaryType() throws Exception {
for (DictionaryType type : DictionaryType.values()) {
DIMSpanConfig config = new DIMSpanConfig(MIN_SUPPORT, true);
if (type != config.getDictionaryType()) {
config.setDictionaryType(type);
executeWith(config);
}
}
}
@Test
public void embeddingCompression() throws Exception {
DIMSpanConfig config = new DIMSpanConfig(MIN_SUPPORT, true);
config.setEmbeddingCompressionEnabled(! config.isEmbeddingCompressionEnabled());
executeWith(config);
}
@Test
public void graphCompression() throws Exception {
DIMSpanConfig config = new DIMSpanConfig(MIN_SUPPORT, true);
config.setGraphCompressionEnabled(! config.isGraphCompressionEnabled());
executeWith(config);
}
@Test
public void patternCompression() throws Exception {
for (DataflowStep step : DataflowStep.values()) {
DIMSpanConfig config = new DIMSpanConfig(MIN_SUPPORT, true);
if (step != config.getPatternCompressionInStep()) {
config.setPatternCompressionInStep(step);
executeWith(config);
}
}
}
@Test
public void patternVerification() throws Exception {
for (DataflowStep step : DataflowStep.values()) {
DIMSpanConfig config = new DIMSpanConfig(MIN_SUPPORT, true);
if (step != config.getPatternVerificationInStep() && step != DataflowStep.WITHOUT) {
config.setPatternVerificationInStep(step);
executeWith(config);
}
}
}
@Test
public void branchConstraint() throws Exception {
DIMSpanConfig config = new DIMSpanConfig(MIN_SUPPORT, true);
config.setBranchConstraintEnabled(! config.isBranchConstraintEnabled());
executeWith(config);
}
private void executeWith(DIMSpanConfig config) throws Exception {
GraphTransactions transactions = new PredictableTransactionsGenerator(
GRAPH_COUNT, 1, true, getConfig()).execute();
config.setDirected(true);
GraphCollection frequentSubgraphs = new TransactionalFSM(config)
.execute(GraphCollection.fromTransactions(transactions));
Assert.assertEquals(PredictableTransactionsGenerator
.containedDirectedFrequentSubgraphs(MIN_SUPPORT),
frequentSubgraphs.getGraphHeads().count());
config.setDirected(false);
frequentSubgraphs = new TransactionalFSM(config)
.execute(GraphCollection.fromTransactions(transactions));
Assert.assertEquals(PredictableTransactionsGenerator
.containedUndirectedFrequentSubgraphs(MIN_SUPPORT),
frequentSubgraphs.getGraphHeads().count());
}
}