Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 28 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
<jaxb-runtime.version>4.0.9</jaxb-runtime.version>
<jcommander.version>1.82</jcommander.version>
<jconstraints.version>0.9.9</jconstraints.version>
<junit.version>4.13.2</junit.version>
<junit.version>6.1.3</junit.version>
<learnlib-tooling.version>0.1.1</learnlib-tooling.version>
<learnlib.version>0.18.0</learnlib.version>
<log4j.version>2.26.1</log4j.version>
Expand All @@ -91,6 +91,7 @@
<source-plugin.version>3.4.0</source-plugin.version>
<spotbugs-plugin.version>4.10.5.0</spotbugs-plugin.version>
<spotless-plugin.version>3.10.4</spotless-plugin.version>
<surefire-plugin.version>3.6.1</surefire-plugin.version>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -191,10 +192,11 @@

<!-- unit testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
<type>pom</type>
<scope>import</scope>
</dependency>

<!-- checker framework -->
Expand Down Expand Up @@ -353,10 +355,18 @@
<artifactId>jaxb-runtime</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/junit/junit -->
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.checkerframework/checker-qual -->
Expand Down Expand Up @@ -444,6 +454,13 @@
<version>${gpg-plugin.version}</version>
</plugin>

<!-- Run unit tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
</plugin>

<!-- Pin maven-deploy-plugin version -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down Expand Up @@ -474,6 +491,10 @@
<ignoredUnusedDeclaredDependency>
de.learnlib.tooling:annotations:jar:*
</ignoredUnusedDeclaredDependency>
<!-- test engine, discovered at runtime by surefire -->
<ignoredUnusedDeclaredDependency>
org.junit.jupiter:junit-jupiter-engine:jar:*
</ignoredUnusedDeclaredDependency>
</ignoredUnusedDeclaredDependencies>
</configuration>
</execution>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,27 @@

import io.github.protocolfuzzing.protocolstatefuzzer.components.learner.factory.EquivalenceAlgorithmName;
import io.github.protocolfuzzing.protocolstatefuzzer.components.learner.factory.LearningAlgorithmName;
import io.github.protocolfuzzing.protocolstatefuzzer.entrypoints.CliTestSupport;
import io.github.protocolfuzzing.protocolstatefuzzer.entrypoints.CommandLineParser;
import io.github.protocolfuzzing.protocolstatefuzzer.entrypoints.CommandLineParserTest;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerClientConfig;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerClientConfigStandard;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerConfigBuilder;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerServerConfig;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerServerConfigStandard;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.difftest.DiffTesterConfigBuilderSimple;
import io.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.fingerprint.FingerprintConfigBuilderSimple;
import org.junit.Assert;
import org.junit.Test;
import io.github.protocolfuzzing.protocolstatefuzzer.testutil.ConfigBuilders;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.time.Duration;
import java.util.List;

public class LearnerConfigTest<M> {
public class LearnerConfigTest {
@Test
public void parseAllOptions_SFCstd_SFSstd() {
parseAllOptions(
new StateFuzzerConfigBuilder() {
@Override
public StateFuzzerClientConfig buildClientConfig() {
return new StateFuzzerClientConfigStandard(new LearnerConfigStandard(), null, null, null, null);
}

@Override
public StateFuzzerServerConfig buildServerConfig() {
return new StateFuzzerServerConfigStandard(new LearnerConfigStandard(), null, null, null, null);
}
});
ConfigBuilders.stateFuzzer(
() -> new StateFuzzerClientConfigStandard(new LearnerConfigStandard(), null, null, null, null),
() -> new StateFuzzerServerConfigStandard(new LearnerConfigStandard(), null, null, null, null)));
}

private void parseAllOptions(StateFuzzerConfigBuilder stateFuzzerConfigBuilder) {
Expand Down Expand Up @@ -84,45 +75,43 @@ private void parseAllOptions(StateFuzzerConfigBuilder stateFuzzerConfigBuilder)
// @formatter:on

for (LearnerConfig learnerConfig: learnerConfigs) {
Assert.assertNotNull(learnerConfig);
Assert.assertEquals(alphabet, learnerConfig.getAlphabetFilename());
Assert.assertEquals(learningAlgorithm, learnerConfig.getLearningAlgorithm());
Assert.assertEquals(equivalenceAlgorithms, learnerConfig.getEquivalenceAlgorithms());
Assert.assertEquals(depth, learnerConfig.getMaxDepth());
Assert.assertEquals(minLength, learnerConfig.getMinLength());
Assert.assertEquals(maxLength, learnerConfig.getMaxLength());
Assert.assertEquals(randLength, learnerConfig.getRandLength());
Assert.assertEquals(equivalenceQueryBound, learnerConfig.getEquivQueryBound());
Assert.assertEquals(memQueryRuns, learnerConfig.getRunsPerMembershipQuery());
Assert.assertEquals(memQueryRetries, learnerConfig.getMembershipQueryRetries());
Assert.assertTrue(learnerConfig.isLogQueries());
Assert.assertEquals(probReset, learnerConfig.getProbReset(), 0.0);
Assert.assertEquals(testFile, learnerConfig.getTestFile());
Assert.assertEquals(seed, learnerConfig.getSeed());
Assert.assertTrue(learnerConfig.isCacheTests());
Assert.assertFalse(learnerConfig.isCeSanitization());
Assert.assertTrue(learnerConfig.isSkipNonDetTests());
Assert.assertEquals(ceReruns, learnerConfig.getCeReruns());
Assert.assertFalse(learnerConfig.isProbabilisticSanitization());
Assert.assertEquals(timeLimit, learnerConfig.getTimeLimit());
Assert.assertEquals(testLimit, learnerConfig.getTestLimit());
Assert.assertEquals(roundLimit, learnerConfig.getRoundLimit());
Assertions.assertNotNull(learnerConfig);
Assertions.assertEquals(alphabet, learnerConfig.getAlphabetFilename());
Assertions.assertEquals(learningAlgorithm, learnerConfig.getLearningAlgorithm());
Assertions.assertEquals(equivalenceAlgorithms, learnerConfig.getEquivalenceAlgorithms());
Assertions.assertEquals(depth, learnerConfig.getMaxDepth());
Assertions.assertEquals(minLength, learnerConfig.getMinLength());
Assertions.assertEquals(maxLength, learnerConfig.getMaxLength());
Assertions.assertEquals(randLength, learnerConfig.getRandLength());
Assertions.assertEquals(equivalenceQueryBound, learnerConfig.getEquivQueryBound());
Assertions.assertEquals(memQueryRuns, learnerConfig.getRunsPerMembershipQuery());
Assertions.assertEquals(memQueryRetries, learnerConfig.getMembershipQueryRetries());
Assertions.assertTrue(learnerConfig.isLogQueries());
Assertions.assertEquals(probReset, learnerConfig.getProbReset(), 0.0);
Assertions.assertEquals(testFile, learnerConfig.getTestFile());
Assertions.assertEquals(seed, learnerConfig.getSeed());
Assertions.assertTrue(learnerConfig.isCacheTests());
Assertions.assertFalse(learnerConfig.isCeSanitization());
Assertions.assertTrue(learnerConfig.isSkipNonDetTests());
Assertions.assertEquals(ceReruns, learnerConfig.getCeReruns());
Assertions.assertFalse(learnerConfig.isProbabilisticSanitization());
Assertions.assertEquals(timeLimit, learnerConfig.getTimeLimit());
Assertions.assertEquals(testLimit, learnerConfig.getTestLimit());
Assertions.assertEquals(roundLimit, learnerConfig.getRoundLimit());
}
}

private LearnerConfig[] parseWithStandard(StateFuzzerConfigBuilder stateFuzzerConfigBuilder, String[] partialArgs) {
CommandLineParser<M> commandLineParser = new CommandLineParser<>(stateFuzzerConfigBuilder,
new DiffTesterConfigBuilderSimple(), new FingerprintConfigBuilderSimple(), null, null, null, null, null,
null);
CommandLineParser<?> commandLineParser = CliTestSupport.parser(stateFuzzerConfigBuilder);

LearnerConfig[] learnerConfigs = new LearnerConfig[2];

StateFuzzerClientConfig clientConfig = CommandLineParserTest.parseClientArgs(commandLineParser, partialArgs);
Assert.assertNotNull(clientConfig);
StateFuzzerClientConfig clientConfig = CliTestSupport.parseClientArgs(commandLineParser, partialArgs);
Assertions.assertNotNull(clientConfig);
learnerConfigs[0] = clientConfig.getLearnerConfig();

StateFuzzerServerConfig serverConfig = CommandLineParserTest.parseServerArgs(commandLineParser, partialArgs);
Assert.assertNotNull(serverConfig);
StateFuzzerServerConfig serverConfig = CliTestSupport.parseServerArgs(commandLineParser, partialArgs);
Assertions.assertNotNull(serverConfig);
learnerConfigs[1] = serverConfig.getLearnerConfig();

return learnerConfigs;
Expand All @@ -131,75 +120,41 @@ private LearnerConfig[] parseWithStandard(StateFuzzerConfigBuilder stateFuzzerCo
@Test
public void invalidParseWithEmpty_SFCstd_SFSstd() {
invalidParseWithEmpty(
new StateFuzzerConfigBuilder() {
@Override
public StateFuzzerClientConfig buildClientConfig() {
return new StateFuzzerClientConfigStandard(new LearnerConfig() {}, null, null, null, null);
}

@Override
public StateFuzzerServerConfig buildServerConfig() {
return new StateFuzzerServerConfigStandard(new LearnerConfig() {}, null, null, null, null);
}
});
ConfigBuilders.stateFuzzer(
() -> new StateFuzzerClientConfigStandard(new LearnerConfig() {}, null, null, null, null),
() -> new StateFuzzerServerConfigStandard(new LearnerConfig() {}, null, null, null, null)));
}

@Test
public void invalidParseWithEmpty_SFCstd_SFSemp() {
invalidParseWithEmpty(
new StateFuzzerConfigBuilder() {
@Override
public StateFuzzerClientConfig buildClientConfig() {
return new StateFuzzerClientConfigStandard(new LearnerConfig() {}, null, null, null, null);
}

@Override
public StateFuzzerServerConfig buildServerConfig() {
return new StateFuzzerServerConfig() {};
}
});
ConfigBuilders.stateFuzzer(
() -> new StateFuzzerClientConfigStandard(new LearnerConfig() {}, null, null, null, null),
() -> new StateFuzzerServerConfig() {}));
}

@Test
public void invalidParseWithEmpty_SFCemp_SFSstd() {
invalidParseWithEmpty(
new StateFuzzerConfigBuilder() {
@Override
public StateFuzzerClientConfig buildClientConfig() {
return new StateFuzzerClientConfig() {};
}

@Override
public StateFuzzerServerConfig buildServerConfig() {
return new StateFuzzerServerConfigStandard(new LearnerConfig() {}, null, null, null, null);
}
});
ConfigBuilders.stateFuzzer(
() -> new StateFuzzerClientConfig() {},
() -> new StateFuzzerServerConfigStandard(new LearnerConfig() {}, null, null, null, null)));
}

@Test
public void invalidParseWithEmpty_SFCemp_SFSemp() {
invalidParseWithEmpty(
new StateFuzzerConfigBuilder() {
@Override
public StateFuzzerClientConfig buildClientConfig() {
return new StateFuzzerClientConfig() {};
}

@Override
public StateFuzzerServerConfig buildServerConfig() {
return new StateFuzzerServerConfig() {};
}
});
ConfigBuilders.stateFuzzer(
() -> new StateFuzzerClientConfig() {},
() -> new StateFuzzerServerConfig() {}));
}

private void invalidParseWithEmpty(StateFuzzerConfigBuilder stateFuzzerConfigBuilder) {
CommandLineParser<M> commandLineParser = new CommandLineParser<>(stateFuzzerConfigBuilder,
new DiffTesterConfigBuilderSimple(), new FingerprintConfigBuilderSimple(), null, null, null, null, null,
null);
CommandLineParser<?> commandLineParser = CliTestSupport.parser(stateFuzzerConfigBuilder);

String[] partialArgs = new String[] {"-alphabet", "alphabetPath"};

CommandLineParserTest.assertInvalidClientParse(commandLineParser, partialArgs);
CommandLineParserTest.assertInvalidServerParse(commandLineParser, partialArgs);
CliTestSupport.assertInvalidClientParse(commandLineParser, partialArgs);
CliTestSupport.assertInvalidServerParse(commandLineParser, partialArgs);
}
}
Loading
Loading