Changeset 2009


Ignore:
Timestamp:
07/14/15 13:20:26 (9 years ago)
Author:
sherbold
Message:
  • UMLInteractionCreator now caches instance specifications and reuses them is possible
  • UMLUtil.createInteractionFromEventSequence now works with a collection of sequences instead of single sequence; this allows the enforcement of the instance specification caching
  • updated tests to comply with new interface of UMLUtils
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-plugin-uml-test/src/test/java/de/ugoe/cs/autoquest/plugin/uml/UMLUtilsTest.java

    r2006 r2009  
    306306 
    307307        // create a test case for each observed sequence 
    308         int i = 0; 
    309         for (List<Event> sequence : sequences) { 
    310             UMLUtils.createInteractionFromEventSequence(sequence, model, 
    311                                                         properties.getProperty("testcases.prefix") + 
    312                                                             "_" + i, 
    313                                                         properties.getProperty("test.context"), 
    314                                                         false); 
    315             i++; 
    316         } 
     308        UMLUtils.createInteractionFromEventSequence(sequences, model,  properties.getProperty("testcases.prefix"), properties.getProperty("test.context"), false); 
    317309 
    318310        ModelUtils.writeModelToFile(model, OUTPUT_DIR + testdata.testSuiteFile); 
     
    330322 
    331323        int i = 1; 
    332         List<Interaction> interactions = new LinkedList<>(); 
     324        List<Interaction> interactions = UMLUtils.createInteractionFromEventSequence(generatedSequences, model, properties.getProperty("testcases.prefix"), properties.getProperty("test.context"), Boolean.parseBoolean(properties.getProperty("testcases.data.random", "false"))); 
    333325        int[] lengths = new int[generatedSequences.size()]; 
    334326        for (List<Event> sequence : generatedSequences) { 
    335             interactions.add(UMLUtils 
    336                 .createInteractionFromEventSequence(sequence, model, 
    337                                                     properties.getProperty("testcases.prefix") + 
    338                                                         "_" + i, 
    339                                                     properties.getProperty("test.context"), 
    340                                                     Boolean.parseBoolean(properties.getProperty("testcases.data.random", "false")))); 
    341327            lengths[i - 1] = sequence.size(); 
    342328            i++; 
     
    357343        Collection<List<Event>> generatedSequences = 
    358344            createRandomSequences(usageProfile, properties); 
    359         int i = 1; 
    360         for (List<Event> sequence : generatedSequences) { 
    361             UMLUtils.createInteractionFromEventSequence(sequence, model, 
    362                                                         properties.getProperty("testcases.prefix") + 
    363                                                             "_" + i, 
    364                                                         properties.getProperty("test.context"), 
    365                                                         true); 
    366             i++; 
    367         } 
    368  
     345        UMLUtils.createInteractionFromEventSequence(generatedSequences, model, properties.getProperty("testcases.prefix"), properties.getProperty("test.context"), Boolean.parseBoolean(properties.getProperty("testcases.data.random", "false"))); 
     346         
    369347        UMLUtils.createScheduling(model, usageProfile, properties.getProperty("test.context")); 
    370348 
     
    419397        int testCaseMinLength = Integer.parseInt(properties.getProperty("testcases.minlenth", "1")); 
    420398        int testCaseMaxLength = 
    421             Integer.parseInt(properties.getProperty("testcases.maxlenth", "100")); 
     399            Integer.parseInt(properties.getProperty("testcases.maxlength", "100")); 
    422400        int maxIter = numberOfTestCases * 100; 
    423401        RandomWalkGenerator testGenerator = 
    424402            new RandomWalkGenerator(numberOfTestCases, testCaseMinLength, testCaseMaxLength, true, 
    425403                                    maxIter); 
    426         return testGenerator.generateTestSuite(usageProfile); 
     404        return SOAPUtils.dropInvalidResponseRequestPairs(testGenerator.generateTestSuite(usageProfile)); 
    427405    } 
    428406 
  • trunk/autoquest-plugin-uml-test/src/test/resources/ita_imported_properties.prop

    r2007 r2009  
    2323testcases.number = 10 
    2424testcases.minlenght = 1 
    25 testcases.maxlength = 10 
     25testcases.maxlength = 50 
    2626testcases.data.random = false 
    2727 
  • trunk/autoquest-plugin-uml/src/main/java/de/ugoe/cs/autoquest/plugin/uml/UMLInteractionCreator.java

    r2008 r2009  
    1515package de.ugoe.cs.autoquest.plugin.uml; 
    1616 
     17import java.util.HashMap; 
    1718import java.util.Iterator; 
    1819import java.util.List; 
     20import java.util.Map; 
    1921import java.util.Set; 
    2022import java.util.logging.Level; 
     
    4547import org.eclipse.uml2.uml.Slot; 
    4648import org.eclipse.uml2.uml.UMLPackage; 
     49import org.w3c.dom.Element; 
    4750 
    4851import de.ugoe.cs.autoquest.eventcore.Event; 
     
    7578     */ 
    7679    private final boolean useRandomMsgBodies; 
    77  
     80     
     81    /** 
     82     * TODO 
     83     */ 
     84    private final Map<String, InstanceSpecification> instanceSpecificationCache; 
     85     
    7886    /** 
    7987     * <p> 
     
    93101        this.testContextName = testContextName; 
    94102        this.useRandomMsgBodies = useRandomMsgBodies; 
     103        instanceSpecificationCache = new HashMap<String, InstanceSpecification>(); 
    95104    } 
    96105 
     
    316325                                      String prefix) 
    317326    { 
    318         org.w3c.dom.Element requestBody; 
     327        Element requestBody; 
    319328        if (SOAPUtils.isSOAPRequest(event)) { 
    320329            requestBody = 
     
    388397                                                 internalParameter.getType(), 
    389398                                                 UMLPackage.Literals.INSTANCE_VALUE); 
    390                             value 
    391                                 .setInstance(createInstanceSpecification((DataType) internalParameter 
    392                                                                              .getType(), 
    393                                                                          instSpecPkg, prefix, 
    394                                                                          instSpecNumber, paramNode, 
    395                                                                          path)); 
     399                            InstanceSpecification instSpec = createInstanceSpecification((DataType) internalParameter 
     400                                                                                        .getType(), 
     401                                                                                        instSpecPkg, prefix, 
     402                                                                                        instSpecNumber, paramNode, 
     403                                                                                        path); 
     404                            value.setInstance(instSpec); 
    396405                            /* 
    397406                             * InstanceValue value = (InstanceValue) argument .createOperand(null, 
     
    443452                                                              String path) 
    444453    { 
     454        if( instanceSpecificationCache.containsKey(SOAPUtils.getSerialization(currentNode)) ) { 
     455            return instanceSpecificationCache.get(SOAPUtils.getSerialization(currentNode)); 
     456        } 
    445457        if ("".equals(path)) { 
    446458            path = type.getName(); 
     
    505517            } 
    506518        } 
     519        instanceSpecificationCache.put(SOAPUtils.getSerialization(currentNode), instSpec); 
    507520        return instSpec; 
    508521    } 
  • trunk/autoquest-plugin-uml/src/main/java/de/ugoe/cs/autoquest/plugin/uml/UMLUtils.java

    r2008 r2009  
    423423     *            defines is random request bodies are used or the body of the associated event 
    424424     */ 
    425     public static Interaction createInteractionFromEventSequence(List<Event> sequence, 
     425    public static List<Interaction> createInteractionFromEventSequence(Collection<List<Event>> sequences, 
    426426                                                                 Model model, 
    427427                                                                 String interactionName, 
     
    429429                                                                 boolean useRandomMsgBodies) 
    430430    { 
     431        List<Interaction> interactions = new LinkedList<>(); 
    431432        UMLInteractionCreator interactionCreator = new UMLInteractionCreator(model, testContextName, useRandomMsgBodies); 
    432         return interactionCreator.createInteraction(sequence, interactionName); 
     433        int i=0; 
     434        for( List<Event> sequence : sequences ) { 
     435            interactions.add(interactionCreator.createInteraction(sequence, interactionName+"_"+i)); 
     436            i++; 
     437        } 
     438        return interactions; 
    433439    } 
    434440 
Note: See TracChangeset for help on using the changeset viewer.