/src/tests/gov/nasa/jpf/test/bdd/comparisons/OutOfMemory_ComparisonTest.java
Java | 260 lines | 207 code | 16 blank | 37 comment | 48 complexity | 715fe70f56c56afcacd9e93dadc7fc06 MD5 | raw file
- package gov.nasa.jpf.test.bdd.comparisons;
- import gov.nasa.jpf.bdd.TrackWithBDD;
- import gov.nasa.jpf.vm.Verify;
- import gov.nasa.jpf.test.bdd.listeners.StateSpaceCounter;
- import gov.nasa.jpf.util.test.TestJPF;
- import org.junit.Test;
- /**
- * This test shows a case where normal JPF terminates with a OutOfMemory-Exception and jpf-bdd does not.
- * In fact jpf-bdd is finished after less than a second.
- *
- * I switched the testing with normal jpf off, because i want to keep this class with the normal unit-Tests and
- * the run with normal JPF takes about 10 minutes.
- *
- * @author rhein
- *
- */
- public class OutOfMemory_ComparisonTest extends TestJPF {
- private static final String[] JPF_BDD = {"+listener=,gov.nasa.jpf.bdd.BddListener,"
- + "gov.nasa.jpf.test.bdd.listeners.StateSpaceCounter,"
- //+ "gov.nasa.jpf.test.bdd.listeners.StateSpaceDotWithBDD"
- ,"+search.class=gov.nasa.jpf.search.heuristic.BFSHeuristic"
- };
- private static final String[] NO_BDD = {"+listener=,gov.nasa.jpf.test.bdd.listeners.StateSpaceCounter,"
- //+ "gov.nasa.jpf.test.bdd.listeners.StateSpaceDotWithBDD"
- ,"+search.class=gov.nasa.jpf.search.heuristic.BFSHeuristic"
- ,"+jvm.insn_factory.class=gov.nasa.jpf.jvm.bytecode.InstructionFactory"
- //,"vm.class=gov.nasa.jpf.jvm.JVM"
- };
-
- static boolean testBDD = true;
- static boolean testNoBDD = false;
-
- @TrackWithBDD
- static boolean a1;
- @TrackWithBDD
- static boolean a2;
- @TrackWithBDD
- static boolean a3;
- @TrackWithBDD
- static boolean a4;
- @TrackWithBDD
- static boolean a5;
- @TrackWithBDD
- static boolean a6;
- @TrackWithBDD
- static boolean a7;
- @TrackWithBDD
- static boolean a8;
- @TrackWithBDD
- static boolean a9;
- @TrackWithBDD
- static boolean a10;
- @TrackWithBDD
- static boolean a11;
- @TrackWithBDD
- static boolean a12;
- @TrackWithBDD
- static boolean a13;
- @TrackWithBDD
- static boolean a14;
- @TrackWithBDD
- static boolean a15;
- @TrackWithBDD
- static boolean a16;
- @TrackWithBDD
- static boolean a17;
- @TrackWithBDD
- static boolean a18;
- @TrackWithBDD
- static boolean a19;
- @TrackWithBDD
- static boolean a20;
- @TrackWithBDD
- static boolean a21;
- @TrackWithBDD
- static boolean a22;
- @TrackWithBDD
- static boolean a23;
- @TrackWithBDD
- static boolean a24;
- @TrackWithBDD
- static boolean a25;
- @TrackWithBDD
- static boolean a26;
- @TrackWithBDD
- static boolean a27;
- @TrackWithBDD
- static boolean a28;
- @TrackWithBDD
- static boolean a29;
-
- @Test
- public void timingTest() throws Throwable {
-
- StateSpaceCounter.reset();
-
- boolean OOMwithBDD = false;
- if (testBDD) {
- try {
- executeJPF_Bdd();
- } catch (Throwable t) {
- if (t.getMessage().contains("gov.nasa.jpf.jvm.NoOutOfMemoryErrorProperty")
- || t.getMessage().contains("Java heap space")) {
- OOMwithBDD = true;
- t.printStackTrace();
- }
- }
- }
- long bddMaxStateID = StateSpaceCounter.maxStateID;
- long bddBacktracked = StateSpaceCounter.backtracked;
- long bddInsns = StateSpaceCounter.insns;
- long bddTime = StateSpaceCounter.time;
- long bddStateSave = StateSpaceCounter.newStates;
- long bddVisited = StateSpaceCounter.visitedStates;
- long bddCGs = StateSpaceCounter.createdCGs;
-
- System.gc();
- StateSpaceCounter.reset();
-
- boolean OOMwithoutbdd = false;
- if (testNoBDD) {
- try {
- executeJPF_no_bdd();
- } catch (Throwable t) {
- if (t.getMessage().contains("gov.nasa.jpf.jvm.NoOutOfMemoryErrorProperty")
- || t.getMessage().contains("Java heap space")) {
- System.out.println(t.getClass());
- OOMwithoutbdd = true;
- t.printStackTrace();
- }
- }
- }
-
- long nbddMaxStateID = StateSpaceCounter.maxStateID;
- long nbddBacktracked = StateSpaceCounter.backtracked;
- long nbddInsns = StateSpaceCounter.insns;
- long nbddTime = StateSpaceCounter.time;
- long nbddStateSave = StateSpaceCounter.newStates;
- long nbddVisited = StateSpaceCounter.visitedStates;
- long nbddCGs = StateSpaceCounter.createdCGs;
-
- System.out.println("StateSpaceSize : ");
- System.out.println(" normal : " + (nbddMaxStateID+1));
- System.out.println(" jpf-bdd: " + (bddMaxStateID+1));
- System.out.println("Backtracked : ");
- System.out.println(" normal : " + nbddBacktracked);
- System.out.println(" jpf-bdd: " + bddBacktracked);
- System.out.println("Visited : ");
- System.out.println(" normal : " + nbddVisited);
- System.out.println(" jpf-bdd: " + bddVisited);
- System.out.println("newStates : ");
- System.out.println(" normal : " + nbddStateSave);
- System.out.println(" jpf-bdd: " + bddStateSave);
- System.out.println("Instructions : ");
- System.out.println(" normal : " + nbddInsns);
- System.out.println(" jpf-bdd: " + bddInsns);
- System.out.println("ChoiceGenerators : ");
- System.out.println(" normal : " + nbddCGs);
- System.out.println(" jpf-bdd: " + bddCGs);
- System.out.println("Time : ");
- System.out.println(" normal : " + nbddTime);
- System.out.println(" jpf-bdd: " + bddTime);
- System.out.println("OOM-Errors: ");
- System.out.println(" normal : " + OOMwithoutbdd);
- System.out.println(" jpf-bdd: " + OOMwithBDD);
-
- assertTrue("OOM with jpf-bdd",!OOMwithBDD);
-
- StateSpaceCounter.printCGs=false;
-
- }
- public void executeJPF_no_bdd() {
- //if (verifyAssertionErrorDetails("some details", NO_BDD)) {
- if(verifyNoPropertyViolation(NO_BDD)) {
- testFunction_no_bdd();
- }
- if (isJPFRun())
- System.exit(0);
- }
- public void executeJPF_Bdd() {
- if(verifyNoPropertyViolation(JPF_BDD)) {
- testFunction_bdd();
- }
- if (isJPFRun())
- System.exit(0);
- }
- public void testFunction_no_bdd() {
- @SuppressWarnings("unused")
- int i = 0;
- //LinkedList<Boolean> list = new LinkedList<Boolean>();
- if (a1 = Verify.getBoolean()) {i++;/* list.add(a1); */}
- if (a2 = Verify.getBoolean()) {i++;/* list.add(a2); */}
- if (a3 = Verify.getBoolean()) {i++;/* list.add(a3); */}
- if (a4 = Verify.getBoolean()) {i++;/* list.add(a4); */}
- if (a5 = Verify.getBoolean()) {i++;/* list.add(a5); */}
- if (a6 = Verify.getBoolean()) {i++;/* list.add(a6); */}
- if (a7 = Verify.getBoolean()) {i++;/* list.add(a7); */}
- if (a8 = Verify.getBoolean()) {i++;/* list.add(a8); */}
- if (a9 = Verify.getBoolean()) {i++;/* list.add(a9); */}
- if (a10 = Verify.getBoolean()){i++;/* list.add(a10); */}
- if (a11 = Verify.getBoolean()){i++;/* list.add(a11); */}
- if (a12 = Verify.getBoolean()){i++;/* list.add(a12); */}
- if (a13 = Verify.getBoolean()){i++;/* list.add(a13); */}
- if (a14 = Verify.getBoolean()){i++;/* list.add(a14); */}
- if (a15 = Verify.getBoolean()){i++;/* list.add(a15); */}
- if (a16 = Verify.getBoolean()){i++;/* list.add(a16); */}
- if (a17 = Verify.getBoolean()){i++;/* list.add(a17); */}
- if (a18 = Verify.getBoolean()){i++;/* list.add(a18); */}
- if (a19 = Verify.getBoolean()){i++;/* list.add(a19); */}
- /*if (a20 = Verify.getBoolean()){list.add(a20);}
- if (a21 = Verify.getBoolean()){list.add(a21);}
- if (a22 = Verify.getBoolean()){list.add(a22);}
- if (a23 = Verify.getBoolean()){list.add(a23);}
- if (a24 = Verify.getBoolean()){list.add(a24);}
- if (a25 = Verify.getBoolean()){list.add(a25);}
- if (a26 = Verify.getBoolean()){list.add(a26);}
- if (a27 = Verify.getBoolean()){list.add(a27);}
- if (a28 = Verify.getBoolean()){list.add(a28);}
- if (a29 = Verify.getBoolean()){list.add(a29);}*/
- }
- public void testFunction_bdd() {
- int i = 0;
- //LinkedList<Boolean> list = new LinkedList<Boolean>();
- if (a1) {i++;/* list.add(a1); */}
- if (a2) {i++;/* list.add(a2); */}
- if (a3) {i++;/* list.add(a3); */}
- if (a4) {i++;/* list.add(a4); */}
- if (a5) {i++;/* list.add(a5); */}
- if (a6) {i++;/* list.add(a6); */}
- if (a7) {i++;/* list.add(a7); */}
- if (a8) {i++;/* list.add(a8); */}
- if (a9) {i++;/* list.add(a9); */}
- if (a10) {i++;/* list.add(a10); */}
- if (a11) {i++;/* list.add(a11); */}
- if (a12) {i++;/* list.add(a12); */}
- if (a13) {i++;/* list.add(a13); */}
- if (a14) {i++;/* list.add(a14); */}
- if (a15) {i++;/* list.add(a15); */}
- if (a16) {i++;/* list.add(a16); */}
- if (a17) {i++;/* list.add(a17); */}
- if (a18) {i++;/* list.add(a18); */}
- if (a19) {i++;/* list.add(a19); */}
- /*if (a20){list.add(a20);}
- if (a21){list.add(a21);}
- if (a22){list.add(a22);}
- if (a23){list.add(a23);}
- if (a24){list.add(a24);}
- if (a25){list.add(a25);}
- if (a26){list.add(a26);}
- if (a27){list.add(a27);}
- if (a28){list.add(a28);}
- if (a29){list.add(a29);}*/
- //Debug.printBDDshort(); //works, but the bdds get too long for console printout
- System.out.println(i);
- }
- }
-