diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin index 1484c9d63d199273496949a2272ca56bf7f42bdd..4846ab9e8f76178806280372871444084470fb81 100644 Binary files a/.gradle/6.8/executionHistory/executionHistory.bin and b/.gradle/6.8/executionHistory/executionHistory.bin differ diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock index ce8e0b75a4f15497dd27e590ec160a6f0a003333..c98c02a78477cd136cc2664e507479da02ffcecc 100644 Binary files a/.gradle/6.8/executionHistory/executionHistory.lock and b/.gradle/6.8/executionHistory/executionHistory.lock differ diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin index 152d843cd679d64cc69955af41c28055723ec3a6..19fb0ad197a8529b77595d2d49389c9099921d5b 100644 Binary files a/.gradle/6.8/fileHashes/fileHashes.bin and b/.gradle/6.8/fileHashes/fileHashes.bin differ diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock index 1741f4b558b925283e6fdb3d2d2c941d9becc038..1bdf0ce5bb346bba926becb2bdd57792eeb8f291 100644 Binary files a/.gradle/6.8/fileHashes/fileHashes.lock and b/.gradle/6.8/fileHashes/fileHashes.lock differ diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock index aa949682b6cbd37a068346226898d1531039b43e..cecf7075d103c0e1ced55bd00bdc267e9af0de4f 100644 Binary files a/.gradle/6.8/javaCompile/javaCompile.lock and b/.gradle/6.8/javaCompile/javaCompile.lock differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 54189f68d9ffa90feae4af53acee81fd488e05cc..7032b9fed6d71a3f43bc743b1350472c50b010ad 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class index fd9b66a608e0ac4f0e0bb9448ca4626cc4be53dd..7ce4a08b41e923bd92d8d8517d5160987933f1e2 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class index e6d19e562eea092e2ab4847d6567ccf4812acc20..d2e9d9d5559e195c2863e7c0933c7fd44aedfb23 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class index feb29ef925440c7f631e4a5e85d8f5294fa81006..00310aa774914cda66536152434c3f66851facf9 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class index a67bb74d8bdbcc68b5851fcbfcb4624e210879f2..71f52bb256b1643108130f59dd575ade35b8cb37 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class differ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java index e65d51034b4630692a4d66ed1dbd04d076bfe483..8ba6ee656b45597aa08f3688ae04fe1567acac6b 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java @@ -280,7 +280,7 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited; } } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set generateRandomUrl_String_visited; /** * @attribute syn * @aspect RandomRequestGenerator @@ -288,24 +288,22 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:74") - public boolean generateRandomUrl(String pathRef, OperationObject operationObject) { - java.util.List _parameters = new java.util.ArrayList(2); - _parameters.add(pathRef); - _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute Get.generateRandomUrl(String,OperationObject)."); + public boolean generateRandomUrl(String pathRef) { + Object _parameters = pathRef; + if (generateRandomUrl_String_visited == null) generateRandomUrl_String_visited = new java.util.HashSet(4); + if (generateRandomUrl_String_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute Get.generateRandomUrl(String)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_visited.add(_parameters); try { try{ - for(ParameterOb o:operationObject.getParameterObs()){ + for(ParameterOb o:getOperationObject().getParameterObs()){ ParameterObject p=o.parameterObject(); SchemaObject s=p.getSchemaOb().schemaObject(); if(p.getIn().equals("path")) - pathRef=root().randomPathParameter(pathRef, p); + pathRef=p.randomPathParameter(pathRef); else if(p.getIn().equals("query")) - pathRef=root().randomQueryParameter(pathRef, p); + pathRef=p.randomQueryParameter(pathRef); } System.out.println("Generated path : "+pathRef); @@ -328,14 +326,14 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; // print result System.out.println("HTTP status code (GET) : "+responseCode); //System.out.println("Response : " + response.toString()); - for(ResponseTuple t:operationObject.getResponseTuples()){ + for(ResponseTuple t:getOperationObject().getResponseTuples()){ if(t.getKey().equals("200")&&responseCode==200){ //System.out.println("Response successfully saved!"); SchemaOb respSchema=t.getResponseOb().responseObject().getContentTuple(0).getMediaTypeObject().getSchemaOb(); if(respSchema.schemaObject().getType().equals("array")) - operationObject.writeDictionaryWithArray(respSchema,response.toString()); + getOperationObject().writeDictionaryWithArray(respSchema,response.toString()); else - operationObject.writeDictionary(respSchema,response.toString()); + getOperationObject().writeDictionary(respSchema,response.toString()); } } return true; @@ -345,7 +343,7 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; } } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java index c0efc40ae8927fe178fe6fde93d8ba433ab3d626..0a70bce697ffbd11bc52b9624f3d246c19a5e838 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java @@ -1316,153 +1316,6 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO } } -/** @apilevel internal */ -protected java.util.Set randomPathParameter_String_ParameterObject_visited; - /** - * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:12 - */ - @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:12") - public String randomPathParameter(String pathRef, ParameterObject p) { - java.util.List _parameters = new java.util.ArrayList(2); - _parameters.add(pathRef); - _parameters.add(p); - if (randomPathParameter_String_ParameterObject_visited == null) randomPathParameter_String_ParameterObject_visited = new java.util.HashSet(4); - if (randomPathParameter_String_ParameterObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OpenAPIObject.randomPathParameter(String,ParameterObject)."); - } - randomPathParameter_String_ParameterObject_visited.add(_parameters); - try { - Random rand = new Random(); - SchemaObject s=p.getSchemaOb().schemaObject(); - String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); - - if(s.getType().equals("string")) - pathRef=pathRef.replace(pathPart,root().generateRandomString(rand,s.getEnumObjs())); - else if(s.getType().equals("integer")) - pathRef=pathRef.replace(pathPart,root().generateRandomInt(rand, - -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, - 10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1 - )); - return pathRef; - } - finally { - randomPathParameter_String_ParameterObject_visited.remove(_parameters); - } - } -/** @apilevel internal */ -protected java.util.Set randomQueryParameter_String_ParameterObject_visited; - /** - * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:27 - */ - @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:27") - public String randomQueryParameter(String pathRef, ParameterObject p) { - java.util.List _parameters = new java.util.ArrayList(2); - _parameters.add(pathRef); - _parameters.add(p); - if (randomQueryParameter_String_ParameterObject_visited == null) randomQueryParameter_String_ParameterObject_visited = new java.util.HashSet(4); - if (randomQueryParameter_String_ParameterObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OpenAPIObject.randomQueryParameter(String,ParameterObject)."); - } - randomQueryParameter_String_ParameterObject_visited.add(_parameters); - try { - Random rand = new Random(); - SchemaObject s=p.getSchemaOb().schemaObject(); - - if(s.getType().equals("string")) - pathRef=pathRef+"?"+p.getName()+"="+root().generateRandomString(rand,s.getEnumObjs()); - else if(s.getType().equals("integer")) - pathRef=pathRef+"?"+p.getName()+"="+root().generateRandomInt(rand, - -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, - 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 - else if(s.getType().equals("array")){ - if(s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string")){ - for(EnumObj e:s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs()) - pathRef=rand.nextDouble()< 0.5?pathRef+"&"+p.getName()+"="+e.getEnumOb():pathRef; - } - else if(s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer")){ - for(int i=0;i< 5;i++) - pathRef=pathRef+"&"+p.getName()+"="+root().generateRandomInt(rand, - -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, - 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 - } - pathRef=pathRef.replaceFirst("&","?"); - } - return pathRef; - } - finally { - randomQueryParameter_String_ParameterObject_visited.remove(_parameters); - } - } -/** @apilevel internal */ -protected java.util.Set generateRandomString_Random_JastAddList_EnumObj__visited; - /** - * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:170 - */ - @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:170") - public String generateRandomString(Random rand, JastAddList<EnumObj> objs) { - java.util.List _parameters = new java.util.ArrayList(2); - _parameters.add(rand); - _parameters.add(objs); - if (generateRandomString_Random_JastAddList_EnumObj__visited == null) generateRandomString_Random_JastAddList_EnumObj__visited = new java.util.HashSet(4); - if (generateRandomString_Random_JastAddList_EnumObj__visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OpenAPIObject.generateRandomString(Random,JastAddList_EnumObj_)."); - } - generateRandomString_Random_JastAddList_EnumObj__visited.add(_parameters); - try { - if(objs.getNumChild()!=0) - return objs.getChild(rand.nextInt(objs.getNumChild())).getEnumOb().toString(); - - return rand - .ints(97,123) - .limit(10) - .collect(StringBuilder::new,StringBuilder::appendCodePoint,StringBuilder::append) - .toString(); - } - finally { - generateRandomString_Random_JastAddList_EnumObj__visited.remove(_parameters); - } - } -/** @apilevel internal */ -protected java.util.Set generateRandomInt_Random_int_int_visited; - /** - * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:181 - */ - @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:181") - public String generateRandomInt(Random rand, int minimum, int maximum) { - java.util.List _parameters = new java.util.ArrayList(3); - _parameters.add(rand); - _parameters.add(minimum); - _parameters.add(maximum); - if (generateRandomInt_Random_int_int_visited == null) generateRandomInt_Random_int_int_visited = new java.util.HashSet(4); - if (generateRandomInt_Random_int_int_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OpenAPIObject.generateRandomInt(Random,int,int)."); - } - generateRandomInt_Random_int_int_visited.add(_parameters); - try { - if(minimum>-1&&maximum>0) - return String.valueOf(rand.nextInt(minimum+maximum)-minimum); - else if(minimum>-1) - return String.valueOf(rand.nextInt()+minimum); - else if(maximum>0) - return String.valueOf(rand.nextInt(maximum)); - return String.valueOf(rand.nextInt()); - } - finally { - generateRandomInt_Random_int_int_visited.remove(_parameters); - } - } /** * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:25 * @apilevel internal @@ -1525,9 +1378,9 @@ protected java.util.Set generateRandomInt_Random_int_int_visited; String path=getServerObject(0).getUrl(); if(p.hasGet()) - p.getGet().generateRandomUrl(path+getPathsObject(i).getRef(),p.getGet().getOperationObject()); + p.getGet().generateRandomUrl(path+getPathsObject(i).getRef()); else if(p.hasPost()) - p.getPost().generateRandomUrl(path+getPathsObject(i).getRef(),p.getPost().getOperationObject()); + p.getPost().generateRandomUrl(path+getPathsObject(i).getRef()); return true;}catch(Exception e){ return false; diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java index b2ca36a0f318407fc1b7599e34e078f6414aa1db..8623a65b509a7f696324f9df14ac94b69be5cfa6 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java @@ -828,6 +828,149 @@ protected java.util.Set composeParameter_ParameterOb_Map_Object__ASTNode__visite } } /** @apilevel internal */ +protected java.util.Set randomPathParameter_String_visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:12 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:12") + public String randomPathParameter(String pathRef) { + Object _parameters = pathRef; + if (randomPathParameter_String_visited == null) randomPathParameter_String_visited = new java.util.HashSet(4); + if (randomPathParameter_String_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute ParameterObject.randomPathParameter(String)."); + } + randomPathParameter_String_visited.add(_parameters); + try { + Random rand = new Random(); + SchemaObject s=getSchemaOb().schemaObject(); + String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); + + if(s.getType().equals("string")) + pathRef=pathRef.replace(pathPart,generateRandomString(rand,s.getEnumObjs())); + else if(s.getType().equals("integer")) + pathRef=pathRef.replace(pathPart,generateRandomInt(rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + )); + return pathRef; + } + finally { + randomPathParameter_String_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set randomQueryParameter_String_visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:27 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:27") + public String randomQueryParameter(String pathRef) { + Object _parameters = pathRef; + if (randomQueryParameter_String_visited == null) randomQueryParameter_String_visited = new java.util.HashSet(4); + if (randomQueryParameter_String_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute ParameterObject.randomQueryParameter(String)."); + } + randomQueryParameter_String_visited.add(_parameters); + try { + Random rand = new Random(); + SchemaObject s=getSchemaOb().schemaObject(); + + if(s.getType().equals("string")) + pathRef=pathRef+"?"+getName()+"="+generateRandomString(rand,s.getEnumObjs()); + else if(s.getType().equals("integer")) + pathRef=pathRef+"?"+getName()+"="+generateRandomInt(rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + else if(s.getType().equals("array")){ + if(s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string")){ + for(EnumObj e:s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs()) + pathRef=rand.nextDouble()< 0.5?pathRef+"&"+getName()+"="+e.getEnumOb():pathRef; + } + else if(s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer")){ + for(int i=0;i< 5;i++) + pathRef=pathRef+"&"+getName()+"="+generateRandomInt(rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + } + pathRef=pathRef.replaceFirst("&","?"); + } + return pathRef; + } + finally { + randomQueryParameter_String_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomString_Random_JastAddList_EnumObj__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:170 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:170") + public String generateRandomString(Random rand, JastAddList<EnumObj> objs) { + java.util.List _parameters = new java.util.ArrayList(2); + _parameters.add(rand); + _parameters.add(objs); + if (generateRandomString_Random_JastAddList_EnumObj__visited == null) generateRandomString_Random_JastAddList_EnumObj__visited = new java.util.HashSet(4); + if (generateRandomString_Random_JastAddList_EnumObj__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute ParameterObject.generateRandomString(Random,JastAddList_EnumObj_)."); + } + generateRandomString_Random_JastAddList_EnumObj__visited.add(_parameters); + try { + if(objs.getNumChild()!=0) + return objs.getChild(rand.nextInt(objs.getNumChild())).getEnumOb().toString(); + + return rand + .ints(97,123) + .limit(10) + .collect(StringBuilder::new,StringBuilder::appendCodePoint,StringBuilder::append) + .toString(); + } + finally { + generateRandomString_Random_JastAddList_EnumObj__visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomInt_Random_int_int_visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:181 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:181") + public String generateRandomInt(Random rand, int minimum, int maximum) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(rand); + _parameters.add(minimum); + _parameters.add(maximum); + if (generateRandomInt_Random_int_int_visited == null) generateRandomInt_Random_int_int_visited = new java.util.HashSet(4); + if (generateRandomInt_Random_int_int_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute ParameterObject.generateRandomInt(Random,int,int)."); + } + generateRandomInt_Random_int_int_visited.add(_parameters); + try { + if(minimum>-1&&maximum>0) + return String.valueOf(rand.nextInt(minimum+maximum)-minimum); + else if(minimum>-1) + return String.valueOf(rand.nextInt()+minimum); + else if(maximum>0) + return String.valueOf(rand.nextInt(maximum)); + return String.valueOf(rand.nextInt()); + } + finally { + generateRandomInt_Random_int_int_visited.remove(_parameters); + } + } +/** @apilevel internal */ protected boolean parameterObject_visited = false; /** * @attribute syn diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java index d16937e5978b2571ba66b9646f5ee7176bb986c5..128d9621b20716c6e111d31dc28949be3ee0b9da 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java @@ -280,7 +280,7 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited; } } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set generateRandomUrl_String_visited; /** * @attribute syn * @aspect RandomRequestGenerator @@ -288,24 +288,22 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:121") - public boolean generateRandomUrl(String pathRef, OperationObject operationObject) { - java.util.List _parameters = new java.util.ArrayList(2); - _parameters.add(pathRef); - _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute Post.generateRandomUrl(String,OperationObject)."); + public boolean generateRandomUrl(String pathRef) { + Object _parameters = pathRef; + if (generateRandomUrl_String_visited == null) generateRandomUrl_String_visited = new java.util.HashSet(4); + if (generateRandomUrl_String_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute Post.generateRandomUrl(String)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_visited.add(_parameters); try { try{ - for(ParameterOb o:operationObject.getParameterObs()){ + for(ParameterOb o:getOperationObject().getParameterObs()){ ParameterObject p=o.parameterObject(); SchemaObject s=p.getSchemaOb().schemaObject(); if(p.getIn().equals("path")) - pathRef=root().randomPathParameter(pathRef, p); + pathRef=p.randomPathParameter(pathRef); else if(p.getIn().equals("query")) - pathRef=root().randomQueryParameter(pathRef, p); + pathRef=p.randomQueryParameter(pathRef); } System.out.println("Generated path : "+pathRef); @@ -330,14 +328,14 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; // print result System.out.println("HTTP status code (POST) : "+responseCode); //System.out.println("Response : " + response.toString()); - for(ResponseTuple t:operationObject.getResponseTuples()){ + for(ResponseTuple t:getOperationObject().getResponseTuples()){ if(t.getKey().equals("200")&&responseCode==200){ //System.out.println("Response successfully saved!"); SchemaOb respSchema=t.getResponseOb().responseObject().getContentTuple(0).getMediaTypeObject().getSchemaOb(); if(respSchema.schemaObject().getType().equals("array")) - operationObject.writeDictionaryWithArray(respSchema,response.toString()); + getOperationObject().writeDictionaryWithArray(respSchema,response.toString()); else - operationObject.writeDictionary(respSchema,response.toString()); + getOperationObject().writeDictionary(respSchema,response.toString()); } }return true; }catch(Exception e){ @@ -346,7 +344,7 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; } } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/main/jastadd/RandomRequestGenerator.jrag b/src/main/jastadd/RandomRequestGenerator.jrag index 02a54e0ba5d0a6bc33b4f8f8ff7d8e93bb428112..efd85ba9f48626b840da7cf5a8546a41dabd0b7c 100644 --- a/src/main/jastadd/RandomRequestGenerator.jrag +++ b/src/main/jastadd/RandomRequestGenerator.jrag @@ -9,39 +9,39 @@ import java.util.stream.IntStream; aspect RandomRequestGenerator{ - syn String OpenAPIObject.randomPathParameter(String pathRef, ParameterObject p){ + syn String ParameterObject.randomPathParameter(String pathRef){ Random rand = new Random(); - SchemaObject s=p.getSchemaOb().schemaObject(); + SchemaObject s=getSchemaOb().schemaObject(); String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); if(s.getType().equals("string")) - pathRef=pathRef.replace(pathPart,root().generateRandomString(rand,s.getEnumObjs())); + pathRef=pathRef.replace(pathPart,generateRandomString(rand,s.getEnumObjs())); else if(s.getType().equals("integer")) - pathRef=pathRef.replace(pathPart,root().generateRandomInt(rand, + pathRef=pathRef.replace(pathPart,generateRandomInt(rand, -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, 10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1 )); return pathRef; } - syn String OpenAPIObject.randomQueryParameter(String pathRef, ParameterObject p){ + syn String ParameterObject.randomQueryParameter(String pathRef){ Random rand = new Random(); - SchemaObject s=p.getSchemaOb().schemaObject(); + SchemaObject s=getSchemaOb().schemaObject(); if(s.getType().equals("string")) - pathRef=pathRef+"?"+p.getName()+"="+root().generateRandomString(rand,s.getEnumObjs()); + pathRef=pathRef+"?"+getName()+"="+generateRandomString(rand,s.getEnumObjs()); else if(s.getType().equals("integer")) - pathRef=pathRef+"?"+p.getName()+"="+root().generateRandomInt(rand, + pathRef=pathRef+"?"+getName()+"="+generateRandomInt(rand, -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 else if(s.getType().equals("array")){ if(s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string")){ for(EnumObj e:s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs()) - pathRef=rand.nextDouble()< 0.5?pathRef+"&"+p.getName()+"="+e.getEnumOb():pathRef; + pathRef=rand.nextDouble()< 0.5?pathRef+"&"+getName()+"="+e.getEnumOb():pathRef; } else if(s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer")){ for(int i=0;i< 5;i++) - pathRef=pathRef+"&"+p.getName()+"="+root().generateRandomInt(rand, + pathRef=pathRef+"&"+getName()+"="+generateRandomInt(rand, -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 } @@ -62,24 +62,24 @@ public void OpenAPIObject.generateRequests()throws Exception{ String path=getServerObject(0).getUrl(); if(p.hasGet()) - p.getGet().generateRandomUrl(path+getPathsObject(i).getRef(),p.getGet().getOperationObject()); + p.getGet().generateRandomUrl(path+getPathsObject(i).getRef()); else if(p.hasPost()) - p.getPost().generateRandomUrl(path+getPathsObject(i).getRef(),p.getPost().getOperationObject()); + p.getPost().generateRandomUrl(path+getPathsObject(i).getRef()); return true;}catch(Exception e){ return false; } } - syn boolean Get.generateRandomUrl(String pathRef,OperationObject operationObject){ + syn boolean Get.generateRandomUrl(String pathRef){ try{ - for(ParameterOb o:operationObject.getParameterObs()){ + for(ParameterOb o:getOperationObject().getParameterObs()){ ParameterObject p=o.parameterObject(); SchemaObject s=p.getSchemaOb().schemaObject(); if(p.getIn().equals("path")) - pathRef=root().randomPathParameter(pathRef, p); + pathRef=p.randomPathParameter(pathRef); else if(p.getIn().equals("query")) - pathRef=root().randomQueryParameter(pathRef, p); + pathRef=p.randomQueryParameter(pathRef); } System.out.println("Generated path : "+pathRef); @@ -102,14 +102,14 @@ public void OpenAPIObject.generateRequests()throws Exception{ // print result System.out.println("HTTP status code (GET) : "+responseCode); //System.out.println("Response : " + response.toString()); - for(ResponseTuple t:operationObject.getResponseTuples()){ + for(ResponseTuple t:getOperationObject().getResponseTuples()){ if(t.getKey().equals("200")&&responseCode==200){ //System.out.println("Response successfully saved!"); SchemaOb respSchema=t.getResponseOb().responseObject().getContentTuple(0).getMediaTypeObject().getSchemaOb(); if(respSchema.schemaObject().getType().equals("array")) - operationObject.writeDictionaryWithArray(respSchema,response.toString()); + getOperationObject().writeDictionaryWithArray(respSchema,response.toString()); else - operationObject.writeDictionary(respSchema,response.toString()); + getOperationObject().writeDictionary(respSchema,response.toString()); } } return true; @@ -118,15 +118,15 @@ public void OpenAPIObject.generateRequests()throws Exception{ return false; } } - syn boolean Post.generateRandomUrl(String pathRef,OperationObject operationObject){ + syn boolean Post.generateRandomUrl(String pathRef){ try{ - for(ParameterOb o:operationObject.getParameterObs()){ + for(ParameterOb o:getOperationObject().getParameterObs()){ ParameterObject p=o.parameterObject(); SchemaObject s=p.getSchemaOb().schemaObject(); if(p.getIn().equals("path")) - pathRef=root().randomPathParameter(pathRef, p); + pathRef=p.randomPathParameter(pathRef); else if(p.getIn().equals("query")) - pathRef=root().randomQueryParameter(pathRef, p); + pathRef=p.randomQueryParameter(pathRef); } System.out.println("Generated path : "+pathRef); @@ -151,14 +151,14 @@ public void OpenAPIObject.generateRequests()throws Exception{ // print result System.out.println("HTTP status code (POST) : "+responseCode); //System.out.println("Response : " + response.toString()); - for(ResponseTuple t:operationObject.getResponseTuples()){ + for(ResponseTuple t:getOperationObject().getResponseTuples()){ if(t.getKey().equals("200")&&responseCode==200){ //System.out.println("Response successfully saved!"); SchemaOb respSchema=t.getResponseOb().responseObject().getContentTuple(0).getMediaTypeObject().getSchemaOb(); if(respSchema.schemaObject().getType().equals("array")) - operationObject.writeDictionaryWithArray(respSchema,response.toString()); + getOperationObject().writeDictionaryWithArray(respSchema,response.toString()); else - operationObject.writeDictionary(respSchema,response.toString()); + getOperationObject().writeDictionary(respSchema,response.toString()); } }return true; }catch(Exception e){ @@ -167,7 +167,7 @@ public void OpenAPIObject.generateRequests()throws Exception{ } } -syn String OpenAPIObject.generateRandomString(Random rand,JastAddList<EnumObj> objs){ +syn String ParameterObject.generateRandomString(Random rand,JastAddList<EnumObj> objs){ if(objs.getNumChild()!=0) return objs.getChild(rand.nextInt(objs.getNumChild())).getEnumOb().toString(); @@ -178,7 +178,7 @@ syn String OpenAPIObject.generateRandomString(Random rand,JastAddList<EnumObj> o .toString(); } -syn String OpenAPIObject.generateRandomInt(Random rand,int minimum,int maximum){ +syn String ParameterObject.generateRandomInt(Random rand,int minimum,int maximum){ if(minimum>-1&&maximum>0) return String.valueOf(rand.nextInt(minimum+maximum)-minimum); else if(minimum>-1)