Package nz.ac.waikato.modeljunit

Examples of nz.ac.waikato.modeljunit.GraphListener


    if(false) {

    Random old = rand_;
    rand_ = new Random(FIXEDSEED);
    // make sure there is a graph listener
    GraphListener graph = (GraphListener) model_.addListener("graph");
    boolean wasTesting = model_.setTesting(false);
    model_.doReset("Buildgraph");
    do {
      generate(10);
      maxSteps -= 10;
    }
    while (graph.numTodo() > 0 && maxSteps > 0);

    int todo = graph.numTodo();
    if (todo > 0) {
      model_.printWarning("buildgraph stopped with "
          + graph.getGraph().numEdges() + " transitions and "
          + graph.getGraph().numVertices() + " states, but "
          + todo + " unexplored branches.");
    }
    model_.setTesting(wasTesting);
    model_.doReset("Buildgraph");
    if (clear) {
      graph.clearDoneTodo();
    }

    // restore the original random number generator.
    rand_ = old;
    return graph;
View Full Code Here


  public GraphListener buildGraphBreadthFirst(int maxDepth, boolean clear)
  {
    System.out.println("Called new buildgraph");
    Random old = rand_;
    rand_ = new Random(FIXEDSEED);
    GraphListener graph = (GraphListener) model_.addListener("graph");
    boolean wasTesting = model_.setTesting(false);

    // Build graph logic
    Set<String> seenActions = new HashSet<String>();
    Set<Object> seenStates = new HashSet<Object>();
    Set<List<Integer>> visitedPaths = new HashSet<List<Integer>>();
    Queue<List<Integer>> highPriority = new LinkedList<List<Integer>>();
    Queue<List<Integer>> lowPriority = new LinkedList<List<Integer>>();

    BitSet enabled = model_.enabledGuards();
 
    //seenStates.put(model_.getState());

    // Initially populate the queues and then proceed
    for(int i = 0; i<enabled.cardinality(); i++) {
           List<Integer> path = new LinkedList<Integer>();
           if(enabled.get(i))
              path.add(i);
           highPriority.offer(path);
           System.out.println("Populated buildgraph");
    }

    while(true) {
       System.out.println("Called new buildgraph main loop");
       List<Integer> path = highPriority.poll();
       if(path == null) path = lowPriority.poll();
       if(path == null) break; // No work left to do - exit
       model_.doReset("Buildgraph");

       // Exit condition
       if(path.size() > maxDepth) break;

       for(Integer p : path) {
          String actionName = model_.getActionName(p);
          model_.doAction(p);
          seenActions.add(actionName);
         // seenStates.add(model_.getState());

          BitSet nenabled = model_.enabledGuards();
          for(int i = 0; i<nenabled.cardinality(); i++) {
             if(nenabled.get(i)) {
                if(!seenActions.contains(model_.getActionName(i))) {
                   // High priority - not seen before
                   List<Integer> newPath = (List<Integer>) ((LinkedList<Integer>) path).clone();
                   newPath.add(i);
                   highPriority.offer(newPath);
                } else {
                   // Low priority
                   List<Integer> newPath = (List<Integer>) ((LinkedList<Integer>) path).clone();
                   newPath.add(i);
                   //TODO: Need to make this a proper equality test - will fail at the moment
                   // because it is checking references.  Should be equivalent to checking
                   // if we have taken the current path + the action under consideration before.
                   if(!visitedPaths.contains(newPath)) {
                      lowPriority.offer(newPath);
                   }
                }

             }
          }
       }

       visitedPaths.add(path);
    }
    model_.setTesting(wasTesting);
    model_.doReset("Buildgraph");
    if (clear) {
      graph.clearDoneTodo();
    }

    // restore the original random number generator.
    rand_ = old;
    return graph;
View Full Code Here

   * @param tester
   * @return average number of test steps required to cover all transitions.
   */
  public static double allTransitions(Tester tester)
  {
    GraphListener graph = tester.buildGraph(100000);
    //tester.addListener(new VerboseListener()); //if you want to see the tests
    CoverageMetric trans = tester.addCoverageMetric(new TransitionCoverage());
    int total = 0;
    tester.setRandom(new Random(Tester.FIXEDSEED));
    for (int run=0; run<RUNS; run++) {
      int steps = 0;
      trans.clear();
      graph.clearDoneTodo();
      tester.reset();
      while (trans.getPercentage() < 100.0) {     
        tester.generate();
        steps++;
      }
View Full Code Here

    TimedModel model = new TimedModel(new SimpleTimedLight());
    Tester tester = new RandomTester(model);
    //tester.addListener(new VerboseListener());
    double origProb = model.getTimeoutProbability();
    model.setTimeoutProbability(0.3); // while exploring the FSM
    GraphListener graph = tester.buildGraph();
    model.setTimeoutProbability(origProb);
    graph.printGraphDot("SimpleTimedLight.dot");
    System.out.println("FSM has " + graph.getGraph().numVertices() + " states and "
        + graph.getGraph().numEdges() + " transitions");
    CoverageMetric metric = tester.addCoverageMetric(new TransitionCoverage());
    for (double prob = 0.1; prob < 0.99; prob += 0.1) {
      model.setTimeoutProbability(prob);
      double totalSteps = 0.0;
      int totalTime = 0; // sum of all the totalTimes.
      for (int seed = 0; seed < experiments; seed++) {
        int testSeqTime = 0;
        int lastTime = 0; // the time after the last transition
        metric.clear();
        tester.reset();
        tester.setRandom(new Random(seed));
        int count = 0;
        while (metric.getPercentage() < 100.0) {
          tester.generate(1);
          if (model.getTime() > lastTime) {
            lastTime = model.getTime();
          } else {
            testSeqTime += lastTime;
            //System.out.println("added " + lastTime + " secs");
            lastTime = 0;
          }
          count++;
        }
        testSeqTime += lastTime;
        //System.out.println("finally added " + lastTime + " secs");
        totalSteps += count;
        totalTime += testSeqTime;
        //System.out.println("Seed=" + seed + " steps=" + count + " time=" + testSeqTime);
      }
      System.out.println(String.format("%.2f", prob) + "," + totalSteps / experiments
          + "," + (double) totalTime / experiments);
    }
    System.out.println("FSM has " + graph.getGraph().numVertices() + " states and "
        + graph.getGraph().numEdges() + " transitions");
  }
View Full Code Here

  {
    Tester tester = new GreedyTester(new AlarmClockOld());
    System.out.println("------------------------");
    tester.setRandom(new Random());
    tester.generate(100);
    GraphListener listener = tester.buildGraph();
    try {
      listener.printGraphDot("OriginalAlarmClock.dot");
    }
    catch (FileNotFoundException e) {
      e.printStackTrace();
    }
  }
View Full Code Here

  public static void main(String[] args) throws FileNotFoundException
  {
    Tester tester = new RandomTester(new ECinema());
    // The guards make this a more difficult graph to explore, but we can
    // increase the default maximum search to complete the exploration.
    GraphListener graph = tester.buildGraph(100000);
    graph.printGraphDot("ecinema.dot");
    CoverageMetric trans = tester.addCoverageMetric(new TransitionCoverage());
    CoverageMetric trpairs = tester.addCoverageMetric(new TransitionPairCoverage());
    CoverageMetric states = tester.addCoverageMetric(new StateCoverage());
    CoverageMetric actions = tester.addCoverageMetric(new ActionCoverage());
    tester.addListener("verbose");
View Full Code Here

      if (line == null)
        break;
      if (line.equals("graph")) {
        quidonc.out.println("Building FSM graph...");
        Tester tester = new GreedyTester(quidonc);
        GraphListener graph = tester.buildGraph();
        graph.printGraphDot("QuiDonc.dot");
        quidonc.out.println("Printed FSM graph to QuiDonc.dot.");
        quidonc.out.println("Use dotty or dot from http://www.graphviz.org"
            + " to view/transform the graph.");
      }
      else if (line.equals("dial")) {
View Full Code Here

  {
    System.out.println("Exploring the SimCard model without testing the SUT.");
    RandomTester tester = new GreedyTester(new SimCard(null));
    // use very long test sequences (since reset corresponds to a new card).
    tester.setResetProbability(0.0001);
    GraphListener graph = tester.buildGraph(1000000);
    graph.printGraphDot("gsm.dot");
    System.out.println("Graph contains "
        + graph.getGraph().numVertices() + " states and "
        + graph.getGraph().numEdges() + " transitions.");
  }
View Full Code Here

  public static void main(String[] args)
  {
    Tester tester = new GreedyTester(new AlarmClock());
    tester.setRandom(new Random());
    tester.generate(100);
    GraphListener listener = tester.buildGraph();
    try {
      listener.printGraphDot("AlarmClock.dot");
    }
    catch (FileNotFoundException e) {
      e.printStackTrace();
    }
  }
View Full Code Here

    final int experiments = 100;
    SimpleNaiveLight fsm = new SimpleNaiveLight();
    Tester tester = new RandomTester(fsm);
    //tester.addListener(new VerboseListener());
    //tester.addListener(new VerboseListener());
    GraphListener graph = tester.buildGraph();
    System.out.println("FSM has " + graph.getGraph().numVertices() + " states and "
        + graph.getGraph().numEdges() + " transitions");
    CoverageMetric metric = tester.addCoverageMetric(new TransitionCoverage());
    for (double prob = 0.1; prob < 0.99; prob += 0.1) {
      double totalSteps = 0.0;
      int totalTime = 0; // sum of all the totalTimes.
      for (int seed = 0; seed < experiments; seed++) {
        int testSeqTime = 0;
        int lastTime = 0; // the time after the last transition
        metric.clear();
        tester.reset();
        tester.setRandom(new Random(seed));
        int count = 0;
        while (metric.getPercentage() < 100.0) {
          tester.generate(1);
          if (fsm.time > lastTime) {
            lastTime = fsm.time;
          } else {
            testSeqTime += lastTime;
            //System.out.println("added " + lastTime + " secs");
            lastTime = 0;
          }
          count++;
        }
        testSeqTime += lastTime;
        //System.out.println("finally added " + lastTime + " secs");
        totalSteps += count;
        totalTime += testSeqTime;
        //System.out.println("Seed=" + seed + " steps=" + count + " time=" + testSeqTime);
      }
      System.out.println(String.format("%.2f", prob) + "," + totalSteps / experiments
          + "," + (double) totalTime / experiments);
    }
    System.out.println("FSM has " + graph.getGraph().numVertices() + " states and "
        + graph.getGraph().numEdges() + " transitions");
  }
View Full Code Here

TOP

Related Classes of nz.ac.waikato.modeljunit.GraphListener

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.