Hi,
I use randoop to generate test for SAT4J 2.1, using the following command:
"gentests", "--classlist=./sat4jexperiment/sat4jclass.txt", "--timelimit=100"
The sat4jclass.txt is attached, which contains all classes on that release.
However, during the test generation phase, randoop detects that there has been
10s since the last input has generated, so it determines not to generate any
more.
But it seems that randoop exits in a not so elegant way, it dumps all the error
trace without writing any tests. I think that need to change.
Exiting randoop when there are no more tests generated is a reasonable idea,
but randoop should write all generated tests before exit.
here are the output of randoop:
Explorer = randoop.ForwardGenerator@e2cb55
------------------------------------------------------------------------------
Inputs generated Failing inputs |
------------------------------------------------------------------------------
Total 0 0 |
Total 0 0 |
Total 182 5 |
Total 300 13 |
Total 401 14 |
restarting
Total 450 17 |
Total 498 18 |
Total 525 19 |
Total 532 19 |
Total 544 19 |
------------------------------------------------------------------------------
Inputs generated Failing inputs |
------------------------------------------------------------------------------
Total 560 19 |
Total 568 19 |
Total 573 19 |
Total 578 19 |
Total 582 19 |
Total 587 19 |
Total 591 19 |
Total 594 19 |
Total 598 19 |
Total 599 19 |
------------------------------------------------------------------------------
Inputs generated Failing inputs |
------------------------------------------------------------------------------
Total 600 20 |
Total 601 20 |
Total 601 20 |
Total 601 20 |
Total 601 20 |
Total 601 20 |
*** Randoop has detected no input generation attempts after 10000 milliseconds.
This indicates Randoop may be executing an sequence
that leads to nonterminating behavior.
Last sequence generated:
var0 = cons : org.sat4j.minisat.orders.RandomLiteralSelectionStrategy.<init>()
:
var1 = method : org.sat4j.minisat.SolverFactory.newMiniSATHeap() :
var2 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp() :
var3 = method : org.sat4j.minisat.core.Solver.getTimeout() : var2
var4 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp() :
var5 = method : org.sat4j.minisat.core.Solver.getTimeout() : var4
var6 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var2 var5
var7 = method : org.sat4j.minisat.core.Solver.getOrder() : var2
var8 = method : org.sat4j.minisat.core.Solver.toString() : var2
var9 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp() :
var10 = method : org.sat4j.minisat.core.Solver.getTimeout() : var9
var11 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var12 = method : org.sat4j.minisat.core.Solver.getTimeout() : var11
var13 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var9 var12
var14 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var2 var12
var15 = cons :
org.sat4j.tools.ModelIterator.<init>(org.sat4j.specs.ISolver,int) : var1 var12
var16 = prim : int:0 :
var17 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var1 var16
var18 = method :
org.sat4j.minisat.orders.RandomLiteralSelectionStrategy.updateVar(int) : var0
var16
var19 = method : org.sat4j.minisat.SolverFactory.newRelsat() :
var20 = method : org.sat4j.tools.RemiUtils.backbone(org.sat4j.specs.ISolver) :
var19
var21 = cons : org.sat4j.reader.LecteurDimacs.<init>(org.sat4j.specs.ISolver)
: var19
var22 = cons : org.sat4j.opt.MaxSatDecorator.<init>(org.sat4j.specs.ISolver) :
var19
var23 = prim : int:100 :
var24 = cons : org.sat4j.core.VecInt.<init>(int) : var23
var25 = method : org.sat4j.core.VecInt.pop() : var24
var26 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var27 = method : org.sat4j.minisat.core.Solver.getTimeout() : var26
var28 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var29 = method : org.sat4j.minisat.core.Solver.getTimeout() : var28
var30 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var26 var29
var31 = method : org.sat4j.minisat.core.Solver.getOrder() : var26
var32 = cons :
org.sat4j.minisat.orders.RandomWalkDecorator.<init>(org.sat4j.minisat.core.IOrde
r) : var31
var33 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var34 = method : org.sat4j.minisat.core.Solver.getTimeout() : var33
var35 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var36 = method : org.sat4j.minisat.core.Solver.getTimeout() : var35
var37 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var33 var36
var38 = method : org.sat4j.minisat.core.Solver.getOrder() : var33
var39 = method : org.sat4j.minisat.core.Solver.toString() : var33
var40 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var41 = method : org.sat4j.minisat.core.Solver.getTimeout() : var40
var42 = method : org.sat4j.minisat.SolverFactory.newMiniLearningHeapExpSimp()
:
var43 = method : org.sat4j.minisat.core.Solver.getTimeout() : var42
var44 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var40 var43
var45 = method : org.sat4j.minisat.core.Solver.setTimeoutOnConflicts(int) :
var33 var43
var46 = prim : long:0 :
var47 = method : org.sat4j.minisat.core.Solver.setTimeoutMs(long) : var33
var46
var48 = method : org.sat4j.minisat.core.Solver.newVar() : var33
var49 = method : org.sat4j.minisat.orders.RandomWalkDecorator.varActivity(int)
: var32 var48
var50 = method : org.sat4j.core.VecInt.indexOf(int) : var24 var48
var51 = method : org.sat4j.opt.MaxSatDecorator.setExpectedNumberOfClauses(int)
: var22 var48
var52 = cons :
org.sat4j.minisat.orders.NegativeLiteralSelectionStrategy.<init>() :
var53 = prim : int:100 :
var54 = method :
org.sat4j.minisat.orders.NegativeLiteralSelectionStrategy.select(int) : var52
var53
var55 = method :
org.sat4j.minisat.orders.RandomLiteralSelectionStrategy.init(int,int) : var0
var48 var54
var56 = cons : org.sat4j.tools.DimacsStringSolver.<init>(int) : var48
Will print all thread stack traces and exit with code 1.
--------------------------------------------------
Thread Thread[Timer-210,5,main]
Stack trace:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:509)
java.util.TimerThread.run(Timer.java:462)
--------------------------------------------------
Thread Thread[Timer-178,5,main]
Stack trace:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:509)
java.util.TimerThread.run(Timer.java:462)
--------------------------------------------------
Thread Thread[Timer-238,5,main]
Stack trace:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:509)
java.util.TimerThread.run(Timer.java:462)
--------------------------------------------------
Thread Thread[Timer-231,5,main]
Stack trace:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:509)
java.util.TimerThread.run(Timer.java:462)
--------------------------------------------------
Thread Thread[Timer-235,5,main]
Stack trace:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:509)
java.util.TimerThread.run(Timer.java:462)
--------------------------------------------------
..... more stack trace dump omitted