Skip to content

Commit 910274d

Browse files
committed
experimental: replace old statistics collection with new approach
code compiles but parallel oracle tests still fail because the implementation is not thread-safe. final solution is still open for discussion.
1 parent 1926d93 commit 910274d

59 files changed

Lines changed: 322 additions & 1098 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

algorithms/active/adt/src/test/java/de/learnlib/algorithm/adt/it/ADTIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import de.learnlib.oracle.equivalence.MealySimulatorEQOracle;
4343
import de.learnlib.oracle.membership.MealySimulatorOracle;
4444
import de.learnlib.oracle.membership.SULAdaptiveOracle;
45+
import de.learnlib.statistic.Statistics;
4546
import de.learnlib.sul.SUL;
4647
import de.learnlib.testsupport.MQ2AQWrapper;
4748
import de.learnlib.testsupport.it.learner.AbstractMealyLearnerIT;
@@ -130,6 +131,7 @@ public void testIssue137() throws IOException, FormatException {
130131
for (int seed = 0; seed < 50; seed++) {
131132
long last = 0;
132133
for (int iter = 0; iter < 5; iter++) {
134+
Statistics.getContainer().clear();
133135
final CounterAdaptiveQueryOracle<String, String> counter =
134136
new CounterAdaptiveQueryOracle<>(aqo);
135137
final ADTLearner<String, String> learner = new ADTLearner<>(alphabet,
@@ -151,7 +153,8 @@ public void testIssue137() throws IOException, FormatException {
151153

152154
exp.run();
153155

154-
final long count = counter.getResetCounter().getCount();
156+
final long count =
157+
Statistics.getContainer().getCount(CounterAdaptiveQueryOracle.RESET_KEY).orElse(0L);
155158

156159
if (iter == 0) {
157160
last = count;

api/src/main/java/de/learnlib/statistic/DummyStatsContainer.java

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,58 +9,50 @@
99
* A dummy implementation of {@link StatsContainer} that does nothing.
1010
*/
1111
class DummyStatsContainer implements StatsContainer {
12-
@Override
13-
public void addTextInfo(String id, @Nullable String description, String text) {
1412

15-
}
13+
@Override
14+
public void addTextInfo(String id, @Nullable String description, String text) {}
1615

1716
@Override
1817
public Optional<String> getTextValue(String id) {
1918
return Optional.empty();
2019
}
2120

2221
@Override
23-
public void setFlag(String id, @Nullable String description, boolean value) {
24-
25-
}
22+
public void setFlag(String id, @Nullable String description, boolean value) {}
2623

2724
@Override
2825
public Optional<Boolean> getFlagValue(String id) {
2926
return Optional.empty();
3027
}
3128

3229
@Override
33-
public void startOrResumeClock(String id, @Nullable String description) {
34-
35-
}
30+
public void startOrResumeClock(String id, @Nullable String description) {}
3631

3732
@Override
38-
public void pauseClock(String id) {
39-
40-
}
33+
public void pauseClock(String id) {}
4134

4235
@Override
4336
public Optional<Duration> getClockValue(String id) {
4437
return Optional.empty();
4538
}
4639

4740
@Override
48-
public void increaseCounter(String id, @Nullable String description, long increment) {
49-
50-
}
41+
public void increaseCounter(String id, @Nullable String description, long increment) {}
5142

5243
@Override
53-
public void setCounter(String id, @Nullable String description, long count) {
54-
55-
}
44+
public void setCounter(String id, @Nullable String description, long count) {}
5645

5746
@Override
5847
public Optional<Long> getCount(String id) {
5948
return Optional.empty();
6049
}
6150

6251
@Override
63-
public void printStats() {
64-
System.out.println("Dummy container");
52+
public void clear() {}
53+
54+
@Override
55+
public String printStats() {
56+
return "Dummy container";
6557
}
6658
}

api/src/main/java/de/learnlib/statistic/StatisticCollector.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

api/src/main/java/de/learnlib/statistic/StatisticData.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

api/src/main/java/de/learnlib/statistic/StatisticLearner.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

api/src/main/java/de/learnlib/statistic/StatisticOracle.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

api/src/main/java/de/learnlib/statistic/StatisticSUL.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

api/src/main/java/de/learnlib/statistic/StatsContainer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,10 @@ default void increaseCounter(String id, @Nullable String description) {
122122
*/
123123
Optional<Long> getCount(String id);
124124

125+
126+
void clear();
125127
/**
126128
* Prints all stored statistics.
127129
*/
128-
void printStats();
130+
String printStats();
129131
}

archetypes/basic/src/main/resources/archetype-resources/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@
4848
<groupId>de.learnlib</groupId>
4949
<artifactId>learnlib-lstar</artifactId>
5050
</dependency>
51+
<dependency>
52+
<groupId>de.learnlib</groupId>
53+
<artifactId>learnlib-statistics</artifactId>
54+
</dependency>
5155
<dependency>
5256
<groupId>de.learnlib</groupId>
5357
<artifactId>learnlib-util</artifactId>

archetypes/basic/src/main/resources/archetype-resources/src/main/java/Example.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle;
1010
import de.learnlib.oracle.equivalence.DFAWMethodEQOracle;
1111
import de.learnlib.oracle.membership.DFASimulatorOracle;
12+
import de.learnlib.statistic.Statistics;
1213
import de.learnlib.util.Experiment.DFAExperiment;
13-
import de.learnlib.util.statistic.SimpleProfiler;
1414
import net.automatalib.alphabet.Alphabet;
1515
import net.automatalib.alphabet.impl.Alphabets;
1616
import net.automatalib.automaton.fsa.DFA;
@@ -60,12 +60,6 @@ public static void main(String[] args) throws IOException {
6060
// active learning
6161
DFAExperiment<Character> experiment = new DFAExperiment<>(lstar, wMethod, inputs);
6262

63-
// turn on time profiling
64-
experiment.setProfile(true);
65-
66-
// enable logging of models
67-
experiment.setLogModels(true);
68-
6963
// run experiment
7064
experiment.run();
7165

@@ -75,12 +69,8 @@ public static void main(String[] args) throws IOException {
7569
// report results
7670
System.out.println("-------------------------------------------------------");
7771

78-
// profiling
79-
SimpleProfiler.logResults();
80-
8172
// learning statistics
82-
System.out.println(experiment.getRounds().getSummary());
83-
System.out.println(mqOracle.getStatisticalData().getSummary());
73+
System.out.println(Statistics.getContainer().printStats());
8474

8575
// model statistics
8676
System.out.println("States: " + result.size());

0 commit comments

Comments
 (0)