From c3b1a3c3fba9d9ee81cee17de376a5a47f985010 Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Tue, 6 Apr 2021 21:48:43 -0500 Subject: [PATCH 1/8] Support to skip special characters --- .../test/APITestWithExcelAsRunManager.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java b/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java index 278bd287..b012281a 100644 --- a/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java +++ b/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java @@ -203,5 +203,29 @@ public void executeApiTests_5() { } } + @Test + public void executeApiTests_6() { + int status =0 ; + try { + int testPlanIndex = 6; + File f = new File(System.getProperty("user.dir") +"/target/"+testPlanIndex); + if(!f.exists()) + f.mkdir(); + //pass the spreadsheet that you want to pass to the user + IdaithalamConfiguration.setProperty("workflow","Enabled"); + ExcelToCollectionGenerator.createCollection(null, "virtualan_collection_testcase_02.xlsx", + System.getProperty("user.dir") +"/target/"+testPlanIndex); + //Generate feature and summary page html report for the selected testcase from the excel + status = IdaithalamExecutor.validateContract("Scriptlet testcase execution version 5", System.getProperty("user.dir") +"/target/"+testPlanIndex); + System.out.println(status); + if(status != 0) { + Assert.assertTrue(false); + } + Assert.assertTrue (true); + }catch (Exception e){ + System.out.println(e.getMessage()); + Assert.assertTrue(false); + } + } } \ No newline at end of file From fca0a3fd6ea558b8c1a0194e02fb04598159921f Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Tue, 6 Apr 2021 21:55:41 -0500 Subject: [PATCH 2/8] Support to skip special characters --- .../idaithalam/src/main/resources/virtualan-contract.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/idaithalam/src/main/resources/virtualan-contract.mustache b/modules/idaithalam/src/main/resources/virtualan-contract.mustache index b3270fb0..8b19f15b 100644 --- a/modules/idaithalam/src/main/resources/virtualan-contract.mustache +++ b/modules/idaithalam/src/main/resources/virtualan-contract.mustache @@ -14,10 +14,10 @@ Feature: {{feature}} - API Contract validation status {{/items}} {{#items}} {{#tags}} - {{{tags}}} @{{{resource}}} + {{{tags}}} @{{{resource}}}{{#skipScenario}} @skip{{/skipScenario}} {{/tags}} {{^tags}} - @{{{resource}}} + @{{{resource}}}{{#skipScenario}} @skip{{/skipScenario}} {{/tags}} Scenario: {{scenario}} - {{method}} api call Given a user perform a api action From 0eada90ac7572ea1cae97f422b1f2a6801639db4 Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Fri, 16 Apr 2021 00:20:17 -0500 Subject: [PATCH 3/8] Validation changes added for empty and details error summary --- modules/idaithalam/pom.xml | 2 +- .../generator/ExcelToCollectionGenerator.java | 9 +++++---- .../test/APITestWithExcelAsRunManager.java | 2 +- .../test/resources/get_response_empty.json | 18 ++++++++++++++++++ .../virtualan_collection_testcase_4.xlsx | Bin 8146 -> 8296 bytes 5 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 samples/idaithalam-excel-apitesting/src/test/resources/get_response_empty.json diff --git a/modules/idaithalam/pom.xml b/modules/idaithalam/pom.xml index f3674c78..c5e34ea1 100644 --- a/modules/idaithalam/pom.xml +++ b/modules/idaithalam/pom.xml @@ -6,7 +6,7 @@ idaithalam-platform-testing 1.2.2-SNAPSHOT - 1.1.9 + 1.1.10 1.8 ${java.version} ${java.version} diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java index 321ee0ca..3ca58e12 100644 --- a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java @@ -1,6 +1,7 @@ package io.virtualan.idaithalam.core.generator; import io.virtualan.idaithalam.config.IdaithalamConfiguration; +import io.virtualan.idaithalam.core.UnableToProcessException; import io.virtualan.idaithalam.core.domain.CreateFileInfo; import io.virtualan.idaithalam.core.domain.SheetObject; import java.io.BufferedReader; @@ -74,7 +75,7 @@ public static String convertStreamToString(InputStream is) throws IOException { public static void createCollection(List generatedTestCaseList, String excelFilePath, String generatedPath) - throws IOException { + throws IOException, UnableToProcessException { createCollection(null, generatedTestCaseList, excelFilePath, generatedPath); @@ -112,7 +113,7 @@ private static Map getRow(Row nextRow, Map head public static void createCollection(String basePath, List generatedTestCaseList, String excelFilePath, String generatedPath) - throws IOException { + throws IOException, UnableToProcessException { InputStream stream = getInputStream(basePath, excelFilePath); try { if (stream != null) { @@ -206,7 +207,7 @@ private static boolean byEachTestCase(List generatedTestCaseList, * @throws FileNotFoundException the file not found exception */ public static InputStream getInputStream(String basePath, String fileNameWithSubCategory) - throws FileNotFoundException { + throws FileNotFoundException, UnableToProcessException { InputStream stream = null; String filePath = basePath + File.separator + fileNameWithSubCategory; File file = new File(filePath); @@ -232,7 +233,7 @@ public static InputStream getInputStream(String basePath, String fileNameWithSub } if (stream == null) { log.error(" File is missing(" + basePath + ") : " + fileNameWithSubCategory); - System.exit(-1); + throw new UnableToProcessException(" File is missing(" + basePath + ") : " + fileNameWithSubCategory); } return stream; } diff --git a/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java b/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java index b012281a..98bb8ef7 100644 --- a/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java +++ b/samples/idaithalam-excel-apitesting/src/test/java/io/virtualan/test/APITestWithExcelAsRunManager.java @@ -37,7 +37,7 @@ public void executeApiTests_1(){ //Add the testcaseName that List of testcases to be executed from the excel //for the test selected execution //list.add("PetPost"); - list.add("PetGet"); // uncomment and test again see the summary report + //list.add("PetGet"); // uncomment and test again see the summary report File f = new File(System.getProperty("user.dir") +"/target/"+testcase); if(!f.exists()) f.mkdir(); diff --git a/samples/idaithalam-excel-apitesting/src/test/resources/get_response_empty.json b/samples/idaithalam-excel-apitesting/src/test/resources/get_response_empty.json new file mode 100644 index 00000000..e96abafe --- /dev/null +++ b/samples/idaithalam-excel-apitesting/src/test/resources/get_response_empty.json @@ -0,0 +1,18 @@ +{ + "category": { + "id": 200, + "name": "Bulldog" + }, + "id": 201, + "name": "", + "photoUrls": [ + "string" + ], + "status": "available", + "tags": [ + { + "id": 201, + "name": "grey" + } + ] +} \ No newline at end of file diff --git a/samples/idaithalam-excel-apitesting/src/test/resources/virtualan_collection_testcase_4.xlsx b/samples/idaithalam-excel-apitesting/src/test/resources/virtualan_collection_testcase_4.xlsx index 1b702ab68bb7d72abdd00fdccb587ce7419861c3..888182fcbe0f751204fb84c8501dc5a078c2e67e 100644 GIT binary patch delta 3408 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 delta 3271 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 From 19542aa48c08dbd245428a40c24631fad69b8b6d Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Fri, 16 Apr 2021 00:21:41 -0500 Subject: [PATCH 4/8] [maven-release-plugin] prepare release idaithalam-project-1.2.2 --- modules/idaithalam/pom.xml | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/idaithalam/pom.xml b/modules/idaithalam/pom.xml index c5e34ea1..1d28e163 100644 --- a/modules/idaithalam/pom.xml +++ b/modules/idaithalam/pom.xml @@ -4,7 +4,7 @@ idaithalam jar idaithalam-platform-testing - 1.2.2-SNAPSHOT + 1.2.2 1.1.10 1.8 @@ -24,7 +24,7 @@ scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - V1.0.13.1 + idaithalam-project-1.2.2 diff --git a/pom.xml b/pom.xml index ba49a450..71754581 100644 --- a/pom.xml +++ b/pom.xml @@ -9,14 +9,14 @@ idaithalam-project pom idaithalam-project - 1.2.2-SNAPSHOT + 1.2.2 https://virtualan.io scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - V1.0.13.1 + idaithalam-project-1.2.2 From 1a3a569d76382f3979d9128257407925c37467c9 Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Fri, 16 Apr 2021 00:21:42 -0500 Subject: [PATCH 5/8] [maven-release-plugin] prepare for next development iteration --- modules/idaithalam/pom.xml | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/idaithalam/pom.xml b/modules/idaithalam/pom.xml index 1d28e163..0644c541 100644 --- a/modules/idaithalam/pom.xml +++ b/modules/idaithalam/pom.xml @@ -4,7 +4,7 @@ idaithalam jar idaithalam-platform-testing - 1.2.2 + 1.2.3-SNAPSHOT 1.1.10 1.8 @@ -24,7 +24,7 @@ scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - idaithalam-project-1.2.2 + V1.0.13.1 diff --git a/pom.xml b/pom.xml index 71754581..984a32fc 100644 --- a/pom.xml +++ b/pom.xml @@ -9,14 +9,14 @@ idaithalam-project pom idaithalam-project - 1.2.2 + 1.2.3-SNAPSHOT https://virtualan.io scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - idaithalam-project-1.2.2 + V1.0.13.1 From 867ea6add9525c35ca682484104c51bc9bb72956 Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Fri, 16 Apr 2021 08:20:39 -0500 Subject: [PATCH 6/8] [maven-release-plugin] prepare release idaithalam-project-1.2.3 --- modules/idaithalam/pom.xml | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/idaithalam/pom.xml b/modules/idaithalam/pom.xml index 0644c541..a574da7a 100644 --- a/modules/idaithalam/pom.xml +++ b/modules/idaithalam/pom.xml @@ -4,7 +4,7 @@ idaithalam jar idaithalam-platform-testing - 1.2.3-SNAPSHOT + 1.2.3 1.1.10 1.8 @@ -24,7 +24,7 @@ scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - V1.0.13.1 + idaithalam-project-1.2.3 diff --git a/pom.xml b/pom.xml index 984a32fc..d0bf245d 100644 --- a/pom.xml +++ b/pom.xml @@ -9,14 +9,14 @@ idaithalam-project pom idaithalam-project - 1.2.3-SNAPSHOT + 1.2.3 https://virtualan.io scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - V1.0.13.1 + idaithalam-project-1.2.3 From 5911f20e2ebcc601376fbaaa615426a119fae50a Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Fri, 16 Apr 2021 08:20:39 -0500 Subject: [PATCH 7/8] [maven-release-plugin] prepare for next development iteration --- modules/idaithalam/pom.xml | 4 ++-- pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/idaithalam/pom.xml b/modules/idaithalam/pom.xml index a574da7a..57fc3c1b 100644 --- a/modules/idaithalam/pom.xml +++ b/modules/idaithalam/pom.xml @@ -4,7 +4,7 @@ idaithalam jar idaithalam-platform-testing - 1.2.3 + 1.2.4-SNAPSHOT 1.1.10 1.8 @@ -24,7 +24,7 @@ scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - idaithalam-project-1.2.3 + V1.0.13.1 diff --git a/pom.xml b/pom.xml index d0bf245d..0521765f 100644 --- a/pom.xml +++ b/pom.xml @@ -9,14 +9,14 @@ idaithalam-project pom idaithalam-project - 1.2.3 + 1.2.4-SNAPSHOT https://virtualan.io scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git scm:git:ssh://git@github.com/virtualansoftware/idaithalam.git https://github.com/virtualansoftware/idaithalam.git - idaithalam-project-1.2.3 + V1.0.13.1 From 0b47aa018ee5b2a9fead0bc0f6f4d0b564fb8be8 Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Sat, 17 Apr 2021 11:12:32 -0500 Subject: [PATCH 8/8] Execution of multiple testplan in parallel --- modules/idaithalam/pom.xml | 2 +- .../contract/ExecutionClassloader.java | 31 ++++ .../contract/IdaithalamExecutor.java | 86 ++++----- .../idaithalam/core/api/MassApiExecutor.java | 56 ++++++ .../idaithalam/core/api/ParallelExecutor.java | 66 +++++++ .../core/domain/ApiExecutorParam.java | 122 +++++++++++++ .../core/domain/ExecutionPlanner.java | 76 ++++++++ .../generator/ExcelToCollectionGenerator.java | 2 +- .../core/generator/FeatureFileGenerator.java | 7 +- .../idaithalam-massapibatch-testing/pom.xml | 93 ++++++++++ .../idaithalam-massapibatch-testing/readme.md | 18 ++ .../standard/EDI270And271Parser.java | 170 ++++++++++++++++++ .../test/BatchAPITestExecutionManager.java | 24 +++ .../src/test/resources/apiexecution.yaml | 61 +++++++ .../src/test/resources/apiexecution_2.yaml | 25 +++ .../test/resources/cucumblan-env.properties | 4 + .../src/test/resources/get_response.json | 18 ++ .../src/test/resources/input.xml | 41 +++++ .../src/test/resources/output.xml | 39 ++++ .../src/test/resources/post-request.json | 18 ++ .../resources/post-request_with_param.json | 19 ++ .../resources/post-request_without_param.json | 18 ++ .../src/test/resources/post-response.json | 18 ++ .../src/test/resources/request_xml.xml | 8 + .../src/test/resources/response_xml.xml | 8 + .../virtualan_collection_testcase_0.xlsx | Bin 0 -> 5633 bytes .../virtualan_collection_testcase_01.xlsx | Bin 0 -> 5925 bytes .../virtualan_collection_testcase_02.xlsx | Bin 0 -> 6229 bytes .../virtualan_collection_testcase_2.xlsx | Bin 0 -> 6054 bytes .../virtualan_collection_testcase_3.xlsx | Bin 0 -> 8157 bytes .../virtualan_collection_testcase_4.xlsx | Bin 0 -> 8146 bytes .../virtualan_collection_testcase_5.xlsx | Bin 0 -> 6177 bytes .../virtualan_collection_testcase_6.xlsx | Bin 0 -> 5560 bytes .../virtualan_collection_testcase_7.xlsx | Bin 0 -> 6929 bytes .../virtualan_collection_testcase_8.xlsx | Bin 0 -> 8168 bytes 35 files changed, 983 insertions(+), 47 deletions(-) create mode 100644 modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/ExecutionClassloader.java create mode 100644 modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/MassApiExecutor.java create mode 100644 modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/ParallelExecutor.java create mode 100644 modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ApiExecutorParam.java create mode 100644 modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ExecutionPlanner.java create mode 100644 samples/idaithalam-massapibatch-testing/pom.xml create mode 100644 samples/idaithalam-massapibatch-testing/readme.md create mode 100644 samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/cucumblan/standard/EDI270And271Parser.java create mode 100644 samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/test/BatchAPITestExecutionManager.java create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution.yaml create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution_2.yaml create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/cucumblan-env.properties create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/get_response.json create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/input.xml create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/output.xml create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/post-request.json create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/post-request_with_param.json create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/post-request_without_param.json create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/post-response.json create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/request_xml.xml create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/response_xml.xml create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_0.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_01.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_02.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_2.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_3.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_4.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_5.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_6.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_7.xlsx create mode 100644 samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_8.xlsx diff --git a/modules/idaithalam/pom.xml b/modules/idaithalam/pom.xml index 57fc3c1b..20d480e6 100644 --- a/modules/idaithalam/pom.xml +++ b/modules/idaithalam/pom.xml @@ -6,7 +6,7 @@ idaithalam-platform-testing 1.2.4-SNAPSHOT - 1.1.10 + 1.1.11-SNAPSHOT 1.8 ${java.version} ${java.version} diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/ExecutionClassloader.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/ExecutionClassloader.java new file mode 100644 index 00000000..6f770010 --- /dev/null +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/ExecutionClassloader.java @@ -0,0 +1,31 @@ +package io.virtualan.idaithalam.contract; + +import java.net.URL; +import java.net.URLClassLoader; + +/** + * The type Execution classloader. + */ +public class ExecutionClassloader extends URLClassLoader { + + /** + * Instantiates a new Execution classloader. + * + * @param urls the urls + * @param classLoader the class loader + */ + public ExecutionClassloader(URL[] urls, ClassLoader classLoader) { + super(urls, classLoader); + } + + @Override + public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + return super.loadClass(name, resolve); + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + return super.findClass(name); + } + } + diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/IdaithalamExecutor.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/IdaithalamExecutor.java index e5e29fb2..7f072354 100644 --- a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/IdaithalamExecutor.java +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/contract/IdaithalamExecutor.java @@ -27,6 +27,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.MalformedURLException; @@ -35,6 +36,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Properties; import java.util.UUID; import java.util.logging.Logger; import net.masterthought.cucumber.Configuration; @@ -108,13 +110,12 @@ public static int validateContract(String featureHeading, String path) byte exitStatus; try { String fileIndex = UUID.randomUUID().toString(); - VirtualanClassLoader classLoader = new VirtualanClassLoader(IdaithalamExecutor.class.getClassLoader()); - feature = featureHeading; - addConfToClasspath(classLoader, path); - generateFeatureFile(path); - String[] argv = getCucumberOptions(path); + VirtualanClassLoader classLoaderParnet = new VirtualanClassLoader(IdaithalamExecutor.class.getClassLoader()); + ExecutionClassloader classLoader = addConfToClasspath(classLoaderParnet, path); + generateFeatureFile(classLoader, path); + String[] argv = getCucumberOptions(path, fileIndex); exitStatus = Main.run(argv, classLoader); - generateReport(path, fileIndex); + generateReport(featureHeading, path, fileIndex); } catch (IOException | UnableToProcessException e) { LOGGER.severe("Provide appropriate input data? : " + e.getMessage()); throw new UnableToProcessException("Provide appropriate input data? : " + e.getMessage()); @@ -122,6 +123,14 @@ public static int validateContract(String featureHeading, String path) return exitStatus; } + private static String[] getCucumberOptions(String path, String build) { + return new String[]{ + "-p", path == null ? "json:target/cucumber-"+build+".json" : "json:"+path+"/cucumber-"+build+".json", + "-p", path == null ? "html:target/cucumber-html-report.html" : "html:"+path+"/cucumber-html-report.html", + "--glue", "io.virtualan.cucumblan.core", "", path == null ? "conf/feature/" : path+"/feature/", + }; + } + /** * Validate contract int. * @@ -136,14 +145,12 @@ public static int validateContract(String featureHeading, String path, int runId byte exitStatus; try { String fileIndex = UUID.randomUUID().toString(); - VirtualanClassLoader classLoader = new VirtualanClassLoader(IdaithalamExecutor.class.getClassLoader()); - feature = featureHeading; - addConfToClasspath(classLoader, path); - addConfToClasspath( classLoader, path + File.separator + runId); - generateFeatureFile(path + File.separator + runId); - String[] argv = getCucumberOptions(path + File.separator + runId); + VirtualanClassLoader classLoaderParent = new VirtualanClassLoader(IdaithalamExecutor.class.getClassLoader()); + ExecutionClassloader classLoader = addConfToClasspath( classLoaderParent, path + File.separator + runId); + generateFeatureFile(classLoader, path + File.separator + runId); + String[] argv = getCucumberOptions(path + File.separator + runId, fileIndex); exitStatus = Main.run(argv, classLoader); - generateReport(path + File.separator + runId, fileIndex); + generateReport(featureHeading, path + File.separator + runId, fileIndex); } catch (IOException | UnableToProcessException e) { LOGGER.severe("Provide appropriate input data? : " + e.getMessage()); throw new UnableToProcessException("Provide appropriate input data? : " + e.getMessage()); @@ -155,13 +162,13 @@ public static int validateContract(String featureHeading, String path, int runId * generate cucumber report */ - private static void generateReport(String path, String index) { + private static void generateReport(String featureHeading, String path, String index) { path = path == null ? "target" : path; File reportOutputDirectory = new File(path); List jsonFiles = new ArrayList<>(); - jsonFiles.add(path+"/cucumber.json"); + jsonFiles.add(path+"/cucumber-"+index+".json"); String buildNumber = index; - String projectName = feature + " - Testing"; + String projectName = featureHeading + " - Testing"; Configuration configuration = new Configuration(reportOutputDirectory, projectName); configuration.setNotFailingStatuses(Collections.singleton(Status.SKIPPED)); configuration.setBuildNumber(buildNumber); @@ -192,44 +199,37 @@ private static String[] getCucumberOptions(String path) { * @throws MalformedURLException */ - private static void addConfToClasspath(VirtualanClassLoader classLoader, String path) throws MalformedURLException { + private static ExecutionClassloader addConfToClasspath(VirtualanClassLoader classLoader, String path) throws MalformedURLException { path = path == null ? "conf" : path; ExecutionClassloader cl = new ExecutionClassloader(new URL[] {new File(path).toURI().toURL()}, classLoader); Thread.currentThread().setContextClassLoader(cl); + return cl; } - /** - * The type Execution classloader. - */ - static class ExecutionClassloader extends URLClassLoader { + public static Properties readCucumblan(ClassLoader classLoader) { + Properties propertiesForInstance = new Properties(); - /** - * Instantiates a new Execution classloader. - * - * @param urls the urls - * @param classLoader the class loader - */ - ExecutionClassloader(URL[] urls, ClassLoader classLoader) { - super(urls, classLoader); - } - - @Override - public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { - return super.loadClass(name, resolve); + try { + InputStream stream = classLoader.getResourceAsStream("cucumblan.properties"); + if (stream != null) { + propertiesForInstance.load(stream); + } else { + LOGGER.warning("unable to load cucumblan.properties"); + } + } catch (Exception var3) { + LOGGER.warning("cucumblan.properties not found"); } - @Override - protected Class findClass(String name) throws ClassNotFoundException { - return super.findClass(name); - } + return propertiesForInstance; } + /** * Generate the feature file for the provided collection * * @throws IOException */ - private static void generateFeatureFile(String path) throws IOException, UnableToProcessException { + private static void generateFeatureFile(ExecutionClassloader classloader, String path) throws IOException, UnableToProcessException { if(path == null || !new File(path).exists()) { if (!new File("conf").exists()) { new File("conf").mkdir(); @@ -239,9 +239,11 @@ private static void generateFeatureFile(String path) throws IOException, UnableT if (!new File(path+"/feature").exists()) { new File(path+"/feature").mkdir(); } - List> items = FeatureFileGenerator.generateFeatureFile(path); - String okta = ApplicationConfiguration.getProperty("service.api.okta"); - String featureTitle = ApplicationConfiguration.getProperty("virtualan.data.heading"); + Properties properties = readCucumblan(classloader); + List> items = FeatureFileGenerator.generateFeatureFile(properties, path); + + String okta = properties.getProperty("service.api.okta"); + String featureTitle = properties.getProperty("virtualan.data.heading"); for(int i=0; i< items.size(); i++){ MustacheFactory mf = new DefaultMustacheFactory(); diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/MassApiExecutor.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/MassApiExecutor.java new file mode 100644 index 00000000..7558a4f6 --- /dev/null +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/MassApiExecutor.java @@ -0,0 +1,56 @@ +package io.virtualan.idaithalam.core.api; + +import io.virtualan.idaithalam.core.domain.ExecutionPlanner; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import lombok.extern.slf4j.Slf4j; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; + +@Slf4j +public class MassApiExecutor { + + private static final int NTHREDS = 1; + + public static boolean invoke(String configMapper) throws InterruptedException { + Yaml yaml = new Yaml(new Constructor(ExecutionPlanner.class)); + InputStream inputStream = MassApiExecutor.class.getClassLoader() + .getResourceAsStream(configMapper); + ExecutionPlanner executionPlanner = yaml.load(inputStream); + ExecutorService executor = Executors + .newFixedThreadPool(executionPlanner.getApiExecutor().size()); + List> futures = new ArrayList<>(); + executionPlanner.getApiExecutor().stream().forEach( + x -> { + Callable worker = new ParallelExecutor(x); + Future future = executor.submit(worker); + futures.add(future); + }); + + // This will make the executor accept no new threads + // and finish all existing threads in the queue + executor.shutdown(); + while (!executor.isTerminated()) { + } + // Wait until all threads are finish + executor.awaitTermination(executionPlanner.getTimeout(), TimeUnit.MINUTES); + boolean bool = futures.stream().anyMatch(x -> { + try { + return x.get() != 0; + } catch (InterruptedException | ExecutionException e) { + return false; + } + }); + + log.info("Finished all api execution"); + return true; + } + +} diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/ParallelExecutor.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/ParallelExecutor.java new file mode 100644 index 00000000..4d1e8ede --- /dev/null +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/api/ParallelExecutor.java @@ -0,0 +1,66 @@ +package io.virtualan.idaithalam.core.api; + +import io.virtualan.idaithalam.contract.IdaithalamExecutor; +import io.virtualan.idaithalam.core.domain.ApiExecutorParam; +import io.virtualan.idaithalam.core.generator.ExcelToCollectionGenerator; +import java.io.File; +import java.io.FileInputStream; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.Callable; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class ParallelExecutor implements Callable { + + private String outputDir; + private String inputExcel; + private String env; + private String reportTitle; + private Map cucumblanProperies; + + ParallelExecutor(ApiExecutorParam apiExecutorPrarm) { + this.outputDir = apiExecutorPrarm.getOutputDir(); + this.inputExcel = apiExecutorPrarm.getInputExcel(); + this.env = apiExecutorPrarm.getEnv(); + this.reportTitle = apiExecutorPrarm.getReportTitle(); + this.cucumblanProperies = apiExecutorPrarm.getCucumblanProperies(); + } + + + @Override + public Integer call() { + int status = 0; + try { + File f = new File(outputDir); + if (!f.exists()) { + f.mkdirs(); + } + ExcelToCollectionGenerator.createCollection(null, inputExcel, outputDir); + + if(cucumblanProperies != null && !cucumblanProperies.isEmpty()) { + File file = new File(outputDir +File.separator+"cucumblan.properties"); + Properties properties = new Properties(); + properties.load(new FileInputStream(file)); + cucumblanProperies.entrySet().stream().forEach( + x -> { + properties.setProperty(x.getKey(), x.getValue()); + } + ); + ExcelToCollectionGenerator.createPrpos(outputDir, + (Map)properties, + "cucumblan.properties"); + } + //Generate feature and summary page html report for the selected testcase from the excel + status = IdaithalamExecutor + .validateContract(env + " : " + reportTitle, + outputDir); + } catch (Exception e) { + log.warn(env + " : " + reportTitle + " : " + e.getMessage()); + status = 1; + e.printStackTrace(); + } + log.info(env + " : " + reportTitle + " : status : " + status); + return status; + } +} diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ApiExecutorParam.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ApiExecutorParam.java new file mode 100644 index 00000000..924f23c2 --- /dev/null +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ApiExecutorParam.java @@ -0,0 +1,122 @@ +package io.virtualan.idaithalam.core.domain; + +import java.util.Map; + +/** + * The type Api executor param. + */ +public class ApiExecutorParam { + + private String reportTitle; + private String env; + private String outputDir; + private String inputExcel; + private Map cucumblanProperies; + + + /** + * Instantiates a new Api executor param. + */ + public ApiExecutorParam() { + } + + /** + * Gets cucumblan props. + * + * @return the cucumblan props + */ + public Map getCucumblanProperies() { + return cucumblanProperies; + } + + /** + * Sets cucumblan props. + * + * @param cucumblanProperies the cucumblan props + */ + public void setCucumblanProperies(Map cucumblanProperies) { + this.cucumblanProperies = cucumblanProperies; + } + + /** + * Gets report title. + * + * @return the report title + */ + public String getReportTitle() { + return reportTitle; + } + + /** + * Gets env. + * + * @return the env + */ + public String getEnv() { + return env; + } + + /** + * Gets output dir. + * + * @return the output dir + */ + public String getOutputDir() { + return outputDir; + } + + /** + * Gets input excel. + * + * @return the input excel + */ + public String getInputExcel() { + return inputExcel; + } + + /** + * Sets report title. + * + * @param reportTitle the report title + */ + public void setReportTitle(String reportTitle) { + this.reportTitle = reportTitle; + } + + /** + * Sets env. + * + * @param env the env + */ + public void setEnv(String env) { + this.env = env; + } + + /** + * Sets output dir. + * + * @param outputDir the output dir + */ + public void setOutputDir(String outputDir) { + this.outputDir = outputDir; + } + + /** + * Sets input excel. + * + * @param inputExcel the input excel + */ + public void setInputExcel(String inputExcel) { + this.inputExcel = inputExcel; + } + + @Override + public String toString() { + return "ApiExecutorParam{" + + "reportTitle='" + reportTitle + '\'' + + ", env='" + env + '\'' + + ", outputDir='" + outputDir + '\'' + + ", inputExcel='" + inputExcel + '\'' + + '}'; + } +} diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ExecutionPlanner.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ExecutionPlanner.java new file mode 100644 index 00000000..79019281 --- /dev/null +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/domain/ExecutionPlanner.java @@ -0,0 +1,76 @@ +package io.virtualan.idaithalam.core.domain; + +import java.util.List; + +/** + * The type Execution planner. + */ +public class ExecutionPlanner { + + @Override + public String toString() { + return "ExecutionPlanner{" + + "parallelExecution=" + parallelExecution + + ", apiExecutor=" + apiExecutor + + '}'; + } + + private int parallelExecution; + private List apiExecutor; + private int timeout; + + /** + * Gets timeout. + * + * @return the timeout + */ + public int getTimeout() { + return timeout; + } + + /** + * Sets timeout. + * + * @param timeout the timeout + */ + public void setTimeout(int timeout) { + this.timeout = timeout; + } + + /** + * Gets parallel execution. + * + * @return the parallel execution + */ + public int getParallelExecution() { + return parallelExecution; + } + + /** + * Sets parallel execution. + * + * @param parallelExecution the parallel execution + */ + public void setParallelExecution(int parallelExecution) { + this.parallelExecution = parallelExecution; + } + + /** + * Gets api executor. + * + * @return the api executor + */ + public List getApiExecutor() { + return apiExecutor; + } + + /** + * Sets api executor. + * + * @param apiExecutor the api executor + */ + public void setApiExecutor( + List apiExecutor) { + this.apiExecutor = apiExecutor; + } +} \ No newline at end of file diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java index 3ca58e12..c4f89236 100644 --- a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/ExcelToCollectionGenerator.java @@ -468,7 +468,7 @@ private static void createPrpos(String path, InputStream stream, String fileName } } - private static void createPrpos(String path, Map propsMap, String fileName) { + public static void createPrpos(String path, Map propsMap, String fileName) { try { Properties props = new Properties(); //Populating the properties file diff --git a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/FeatureFileGenerator.java b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/FeatureFileGenerator.java index a79f3333..4987eef0 100644 --- a/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/FeatureFileGenerator.java +++ b/modules/idaithalam/src/main/java/io/virtualan/idaithalam/core/generator/FeatureFileGenerator.java @@ -27,6 +27,7 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Properties; import org.json.JSONArray; import org.json.JSONObject; @@ -55,13 +56,13 @@ private FeatureFileGenerator() { * @throws UnableToProcessException the unable to process exception * @throws IOException the io exception */ - public static List> generateFeatureFile(String path) + public static List> generateFeatureFile(Properties properties, String path) throws UnableToProcessException, IOException { List> items = new ArrayList<>(); ApplicationConfiguration.reload(); ExcludeConfiguration.reload(); - String contractFileName = ApplicationConfiguration.getProperty("virtualan.data.load"); - String contractFileType = ApplicationConfiguration.getProperty("virtualan.data.type"); + String contractFileName = properties.getProperty("virtualan.data.load"); + String contractFileType = properties.getProperty("virtualan.data.type"); JSONArray jsonArray = null; if (contractFileType == null) { LOGGER.severe("provide appropriate virtualan.data.type for the input data?"); diff --git a/samples/idaithalam-massapibatch-testing/pom.xml b/samples/idaithalam-massapibatch-testing/pom.xml new file mode 100644 index 00000000..3237abaf --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/pom.xml @@ -0,0 +1,93 @@ + + 4.0.0 + io.virtualan + idaithalam-massapibatch-apitesting + jar + idaithalam-batch-apitesting + 1.0.1-SNAPSHOT + + 1.7.30 + 1.2.4-SNAPSHOT + 1.8 + 7.4.0 + ${java.version} + ${java.version} + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.0.0-M3 + + + + integration-test + + + + + + + + + + + + + **/*Runner.java + + + + + + + + + + + + + + + + + + + + io.virtualan + idaithalam + ${idaithalam.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-simple + ${slf4j.version} + + + org.testng + testng + ${testng.ver} + + + + diff --git a/samples/idaithalam-massapibatch-testing/readme.md b/samples/idaithalam-massapibatch-testing/readme.md new file mode 100644 index 00000000..c70b3226 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/readme.md @@ -0,0 +1,18 @@ +# Idaithalam Excel support + +## Create the Excel in the following format + +|TestCaseName|TestCaseNameDesc|URL|ContentType|RequestFile|RequestProcessingType|ResponseFile|ResponseProcessingType|HTTPAction|ExcludeField|HttpStatusCode| +| -----------|:--------------:|-----:| -----:| -----:| -----:| -----:| -----:| -----:| -----:| -----:| +|PetPost|pet post api test|http://mockbin.org/bin/2c5f64fe-4b65-4453-85a5-5308767e79e8|application/xml|input.xml||output.xml|VirtualanStdType=EDI-271|POST|Date|200| +|PetGet|get API testing|https://live.virtualandemo.com/api/pets/findByTags?tags=grey|application/json|||get_response.json||GET||200| + + +## Example excel is attached. +[Example excel](https://github.com/virtualansoftware/idaithalam/blob/master/samples/idaithalam-excel-apitesting/src/test/resources/virtualan_collection_pet.xlsx) + +## Example Project. +[idaithalam-excel-apitesting](https://github.com/virtualansoftware/idaithalam/tree/master/samples/idaithalam-excel-apitesting) + +## Example Genrated reports: + diff --git a/samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/cucumblan/standard/EDI270And271Parser.java b/samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/cucumblan/standard/EDI270And271Parser.java new file mode 100644 index 00000000..3c23b6af --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/cucumblan/standard/EDI270And271Parser.java @@ -0,0 +1,170 @@ +/* + * + * + * Copyright (c) 2021. Virtualan Contributors (https://virtualan.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * + * + * + */ + +package io.virtualan.cucumblan.standard; + +import io.virtualan.idaithalam.core.generator.ExcelToCollectionGenerator; +import java.io.IOException; +import java.io.StringReader; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathFactory; +import org.json.JSONArray; +import org.json.JSONObject; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class EDI270And271Parser implements StandardProcessing { + + static Map elementMap = new HashMap(); + static Map providerMap = new HashMap(); + + private static String getEDI271AsJson(String content) { + String[] contents = content.split("~"); + AtomicInteger i = new AtomicInteger(0); + List list = Arrays.stream(contents) + .map(x -> buildJsonObject(x, i.incrementAndGet())).collect( + Collectors.toList()); + JSONArray array = new JSONArray(); + list.stream().forEach(x -> array.put(x)); + return array.toString(); + } + + public static JSONObject buildJsonObject(String content, int index) { + String[] contents = content.trim().split("\\*"); + JSONObject newObject = new JSONObject(); + initialize(); + String code = elementMap.get(contents[0]); + if (code == null && contents.length > 1) { + code = elementMap.get(contents[0] + "*" + contents[1]); + } + if (contents[0] != null && !contents[0].isEmpty()) { + if (code == null) { + newObject.put(contents[0], content.trim()); + } else { + String[] codes = code.split("\\*"); + JSONObject childObject = new JSONObject(); + + List lists = IntStream + .range(0, contents.length) + .filter(i -> !codes[i].isEmpty()) + .mapToObj(i -> { + //System.out.println(codes[i] + " : " + contents[i]); + childObject.put(codes[i], contents[i]); + return childObject; + }).collect(Collectors.toList()); + newObject.put(contents[0] + "::" + index, childObject); + } + } + //System.out.println(newObject); + return newObject; + } + + public static void initialize() { + elementMap.put("ST", + "Code*TransactionSet*TransactionSetIDCode*TransactionSetControlNumber*Implementation Convention Reference = 005010X279A1"); + elementMap.put("BHT", + "Code*HierarchicalStructureCode*TransactionSetPurposeCode*ReferenceIdentification*Date*Time"); + elementMap.put("HL", + "Code*HierarchicalIDNumber*HierarchicalParentIDNumber*HierarchicalLevelCode*HierarchicalChildCode"); + elementMap.put("NM1", + "Code*EntityIdentifierCode*EntityTypeQualifier*LastName*FirstName*MiddleName*NamePrefix*NameSuffix*IdentificationCodeQualifier*IdentificationCode"); + elementMap.put("TRN", + "Code*TraceTypeCode*ReferenceIdentification*OriginatingCompanyIdentifier*ReferenceIdentification"); + elementMap.put("N3", "Code*AddressInformation1*AddressInformation2"); + elementMap.put("N4", "Code*City*StateorProvCode*PostalCode"); + elementMap.put("DMG", "Code*DateTimePeriodFormat*DateTimePeriod*GenderCode"); + elementMap.put("DTP", "Code*DateTimeQualifier*DateTimePeriodFormatQualifier*DateTimePeriod"); + elementMap.put("EB*1", + "Code*EligibilityorBenefitInformationCode*CoverageLevelCode*ServiceTypeCode*InsuranceTypeCode*PlanCoverageDescription"); + elementMap.put("EB*B", + "EligibilityorBenefitInformationCode*CoverageLevelCode*MedicalCareServiceTypeCode*ChiropracticServiceTypeCode*DentalCareServiceTypeCode*HospitalServiceTypeCode*EmergencyServicesServiceTypeCode*PharmacyServiceTypeCode*ProfessionalPhysicianVisitOfficeServiceTypeCode*VisionOptometryServiceTypeCode*MentalHealthServiceTypeCode*UrgentCareServiceTypeCode*InsuranceTypeCode*PlanCoverageDescription*TimePeriodQualifier*MonetaryValue*Percent*QuantityQualifier*Quantity*CertificationAuthorizationIndicator*InPlanNetworkIndicator"); + elementMap.put("LS", "Code*LoopIdentifierCode"); + elementMap.put("LE", "Code*LoopIdentifierCode"); + elementMap.put("SE", "Code*NumberofIncludedSegments*TransactionSetControlNumber"); + elementMap + .put("AAA", "Code*ValidityCode*AgencyQualifierCode*RejectReasonCode*FollowUpActionCode"); + } + + public static void init() { + providerMap.put("1", "Medical Care"); + providerMap.put("33", "Chiropractic"); + providerMap.put("35", "Dental Care"); + providerMap.put("47", "Hospital"); + providerMap.put("86", "Emergency Services"); + providerMap.put("88", "Pharmacy"); + providerMap.put("98", "Professional (Physician) Visit – Office"); + providerMap.put("AL", "Vision (Optometry)"); + providerMap.put("MH", "Mental Health"); + providerMap.put("UC", "Urgent Care"); + } + + public static void main(String[] args) throws IOException { + + new EDI270And271Parser().getXMLValue(ExcelToCollectionGenerator.getFileAsString( + "\"D:\\\\Elan\\\\virtualan-software-ws\\\\idaithalam\\\\excel-idaithalam\\\\idaithalam\\\\samples\\\\idaithalam-excel-apitesting\\\\src\\\\test\\\\resources", + "output.xml")); + } + + @Override + public String getType() { + return "EDI-271"; + } + + @Override + public String preRequestProcessing(String s) { + return null; + } + + @Override + public String postResponseProcessing(String s) { + return getEDI271AsJson(getXMLValue(s)); + //return getEDI271AsJson(s); + } + + private String getXMLValue(String xml) { + String response = null; + DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); + try { + InputSource ips = new InputSource(new StringReader(xml)); + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + Document xmlDocument = builder.parse(ips); + XPath xPath = XPathFactory.newInstance().newXPath(); + String expression = "//request/text()"; + NodeList nodeList = (NodeList) xPath.compile(expression) + .evaluate(xmlDocument, XPathConstants.NODESET); + response = nodeList.item(0).getNodeValue(); + } catch (Exception e) { + e.printStackTrace(); + } + return response; + } + +} diff --git a/samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/test/BatchAPITestExecutionManager.java b/samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/test/BatchAPITestExecutionManager.java new file mode 100644 index 00000000..af8aa62d --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/java/io/virtualan/test/BatchAPITestExecutionManager.java @@ -0,0 +1,24 @@ +package io.virtualan.test; + + +import io.virtualan.idaithalam.core.api.MassApiExecutor; +import org.junit.Assert; +import org.testng.annotations.Test; + +public class BatchAPITestExecutionManager { + + + @Test + public static void main() { + try { + boolean isSuccess = MassApiExecutor.invoke("apiexecution.yaml"); + if (!isSuccess) { + Assert.assertTrue(false); + } + + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution.yaml b/samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution.yaml new file mode 100644 index 00000000..da22e584 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution.yaml @@ -0,0 +1,61 @@ +parallelExecution: 4 +timeout: 30000 +apiExecutor: + - reportTitle: "Risk Fackor - 0" + env: dev + outputDir: target/risk/1 + inputExcel: virtualan_collection_testcase_0.xlsx + - reportTitle: "API Testing 1 live" + env: dev + outputDir: target/dev/1 + inputExcel: virtualan_collection_testcase_01.xlsx + cucumblanProperies: + service.api.api: https://live.virtualandemo.com + - reportTitle: "API Testing 1 - 82" + env: dev + outputDir: target/dev/2 + inputExcel: virtualan_collection_testcase_02.xlsx + cucumblanProperies: + service.api.api: https://localhost:8082 + - reportTitle: "API Testing 83" + env: dev + outputDir: target/dev/3 + inputExcel: virtualan_collection_testcase_2.xlsx + cucumblanProperies: + service.api.api: https://localhost:8083 + - reportTitle: "API Testing 84" + env: dev + outputDir: target/dev/4 + inputExcel: virtualan_collection_testcase_3.xlsx + cucumblanProperies: + service.api.api: https://localhost:8084 + - reportTitle: "API Testing 85" + env: dev + outputDir: target/dev/5 + inputExcel: virtualan_collection_testcase_4.xlsx + cucumblanProperies: + service.api.api: https://localhost:8085 + - reportTitle: "API Testing 86" + env: dev + outputDir: target/dev/6 + inputExcel: virtualan_collection_testcase_5.xlsx + cucumblanProperies: + service.api.api: https://localhost:8086 + - reportTitle: "API Testing 87" + env: dev + outputDir: target/dev/7 + inputExcel: virtualan_collection_testcase_6.xlsx + cucumblanProperies: + service.api.api: https://localhost:8087 + - reportTitle: "API Testing 88" + env: dev + outputDir: target/dev/8 + inputExcel: virtualan_collection_testcase_7.xlsx + cucumblanProperies: + service.api.api: https://localhost:8088 + - reportTitle: "API Testing 89" + env: dev + outputDir: target/dev/9 + inputExcel: virtualan_collection_testcase_8.xlsx + cucumblanProperies: + service.api.api: https://localhost:8089 \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution_2.yaml b/samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution_2.yaml new file mode 100644 index 00000000..38bbeefb --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/apiexecution_2.yaml @@ -0,0 +1,25 @@ +parallelExecution: 4 +timeout: 5 +apiExecutor: + - reportTitle: "Risk factor" + env: dev + outputDir: target/dev/risk/1 + inputExcel: virtualan_collection_testcase_02.xlsx + - reportTitle: "pet" + env: dev + outputDir: target/dev/pet/1 + inputExcel: virtualan_collection_testcase_01.xlsx + cucumblanProperies: + service.api.api: https://live.virtualandemo.com + - reportTitle: "API Testing 1" + env: dev + outputDir: target/dev/2 + inputExcel: virtualan_collection_testcase_7.xlsx + cucumblanProperies: + service.api.api: https://live.virtualandemo.com + - reportTitle: "API Testing 2" + env: dev + outputDir: target/dev/3 + inputExcel: virtualan_collection_testcase_2.xlsx + cucumblanProperies: + service.api.api: https://live.virtualandemo.com \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/cucumblan-env.properties b/samples/idaithalam-massapibatch-testing/src/test/resources/cucumblan-env.properties new file mode 100644 index 00000000..8f52e2d7 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/cucumblan-env.properties @@ -0,0 +1,4 @@ +okta_user_id.bin=test +okta_user_password.bin=change +basic_auth_user_id.api=test +basic_auth_password.api=test diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/get_response.json b/samples/idaithalam-massapibatch-testing/src/test/resources/get_response.json new file mode 100644 index 00000000..c072bbfe --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/get_response.json @@ -0,0 +1,18 @@ +{ + "category": { + "id": 200, + "name": "Bulldog" + }, + "id": 201, + "name": "Butch", + "photoUrls": [ + "string" + ], + "status": "available", + "tags": [ + { + "id": 201, + "name": "grey" + } + ] +} \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/input.xml b/samples/idaithalam-massapibatch-testing/src/test/resources/input.xml new file mode 100644 index 00000000..5100cb7a --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/input.xml @@ -0,0 +1,41 @@ + + + + + ISA*00*Authorizat*00*Security I*ZZ*Interchange Sen*ZZ*Interchange + Rec*141001*1037*^*00501*000031033*0*T*:~ + + GS*HS*Sample Sen*Sample Rec*20141001*1037*123456*X*005010X279A1~ + + ST*270*1234*005010X279A1~ + + BHT*0022*13*10001234*20141001*1319~ + + HL*1**20*1~ + + NM1*PR*2*ABC COMPANY*****PI*842610001~ + + HL*2*1*21*1~ + + NM1*1P*2*BONE AND JOINT CLINIC*****XX*1234567893~ + + HL*3*2*22*0~ + + TRN*1*93175-0001*9877281234~ + + NM1*IL*1*SMITH*ROBERT****MI*11122333301~ + + DMG*D8*19430519~ + + DTP*291*D8*20141001~ + + EQ*30~ + + SE*13*1234~ + + GE*1*123456~ + + IEA*1*000031033~ + + + \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/output.xml b/samples/idaithalam-massapibatch-testing/src/test/resources/output.xml new file mode 100644 index 00000000..7a3e7ba1 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/output.xml @@ -0,0 +1,39 @@ + + + + ISA*00*Authorizat*00*Security I*ZZ*Interchange Sen*ZZ*Interchange Rec*141001*1037*^*00501*000031033*0*T*:~ + + GS*HS*Sample Sen*Sample Rec*20141001*1037*123456*X*005010X279A1~ + + ST*270*1234*005010X279A1~ + + BHT*0022*13*10001234*20141001*1319~ + + HL*1**20*1~ + + NM1*PR*2*ABC COMPANY*****PI*842610001~ + + HL*2*1*21*1~ + + NM1*1P*2*BONE AND JOINT CLINIC*****XX*1234567893~ + + HL*3*2*22*0~ + + TRN*1*93175-0001*9877281234~ + + NM1*IL*1*SMITH*ROBERT****MI*11122333301~ + + DMG*D8*19430519~ + + DTP*291*D8*20141001~ + + EQ*30~ + + SE*13*1234~ + + GE*1*123456~ + + IEA*1*000031033~ + + + \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/post-request.json b/samples/idaithalam-massapibatch-testing/src/test/resources/post-request.json new file mode 100644 index 00000000..90edd5c6 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/post-request.json @@ -0,0 +1,18 @@ +{ + "category": { + "id": 100, + "name": "string" + }, + "id": 100, + "name": "[petName]", + "photoUrls": [ + "string" + ], + "status": "available", + "tags": [ + { + "id": 0, + "name": "string" + } + ] +} \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/post-request_with_param.json b/samples/idaithalam-massapibatch-testing/src/test/resources/post-request_with_param.json new file mode 100644 index 00000000..cb6d1857 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/post-request_with_param.json @@ -0,0 +1,19 @@ +{ + "category": { + "id": 0, + "name": "string" + }, + "id": , + "name": "", + "photoUrls": [ + "string" + ], + "status": "available", + "tags": [ + { + "id": 0, + "name": "string" + } + ], + "type": "DOGS" +} \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/post-request_without_param.json b/samples/idaithalam-massapibatch-testing/src/test/resources/post-request_without_param.json new file mode 100644 index 00000000..f0d7a93f --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/post-request_without_param.json @@ -0,0 +1,18 @@ +{ + "category": { + "id": 100, + "name": "string" + }, + "id": 100, + "name": "doggie", + "photoUrls": [ + "string" + ], + "status": "available", + "tags": [ + { + "id": 0, + "name": "string" + } + ] +} \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/post-response.json b/samples/idaithalam-massapibatch-testing/src/test/resources/post-response.json new file mode 100644 index 00000000..f0d7a93f --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/post-response.json @@ -0,0 +1,18 @@ +{ + "category": { + "id": 100, + "name": "string" + }, + "id": 100, + "name": "doggie", + "photoUrls": [ + "string" + ], + "status": "available", + "tags": [ + { + "id": 0, + "name": "string" + } + ] +} \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/request_xml.xml b/samples/idaithalam-massapibatch-testing/src/test/resources/request_xml.xml new file mode 100644 index 00000000..c0c32c4f --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/request_xml.xml @@ -0,0 +1,8 @@ + + + + + 100 + + + \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/response_xml.xml b/samples/idaithalam-massapibatch-testing/src/test/resources/response_xml.xml new file mode 100644 index 00000000..cb60d238 --- /dev/null +++ b/samples/idaithalam-massapibatch-testing/src/test/resources/response_xml.xml @@ -0,0 +1,8 @@ + + + + + 212 + + + \ No newline at end of file diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_0.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_0.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..88b6e748a29c9dc2591dcd794534338847523ecd GIT binary patch literal 5633 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 BmdpSE literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_01.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_01.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..00c0457dca4d47b4dc911d3fbede5f225c0f5759 GIT binary patch literal 5925 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 literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_02.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_02.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d414dfbd1c07e384b5c6e98008f74f42c73fe1a3 GIT binary patch literal 6229 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 literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_2.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..783f08610237e8e015a4be0cee67dac775c6caec GIT binary patch literal 6054 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 VxsM2dU!7r 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 literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_5.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_5.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e577449b094c5ec3ececf20d76c8aa2d91c2bdc7 GIT binary patch literal 6177 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 literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_6.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_6.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b7c3893b9a947a7c031cc94ca43c0eff8ea97846 GIT binary patch literal 5560 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 literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_7.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_7.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..639c6fa315e1b9c0f88f0847232e7a5b4bb9e1e2 GIT binary patch literal 6929 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 G!2bad5-36d literal 0 HcmV?d00001 diff --git a/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_8.xlsx b/samples/idaithalam-massapibatch-testing/src/test/resources/virtualan_collection_testcase_8.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..acf395529b4fb9461826a36d837217b789ad9bb3 GIT binary patch literal 8168 zcmeHsbx>T}vo0_R?iSqL-Q6t&cga9-hr!)~yUPT(1cF;|cY=fve6T=p34x$*l5^^p zdwA#Gy6^utHMQ65soh`g)vN96R#OH%!G(c=L4Dj;L{TOY`XLJEW3KN|N|MN%&mr=}9O;Z%g+ML|EQPmRbTPR86Kfmtxcc(1|EUj-ih4U;acIl9_F_6jxz!$D&CmidKE{-m(Fe zdLkgxnFS-S1TBmZ6IdLdqmWr4lw~_Kej7xbF8N(D)|bB53X;7!o;dokRkR&7Wi4>= zXYCRS>EMRc+O+u3#bknEF|f_Judjha(5t2=&LQ;ji&lH(srsy`1}p7Py68eUyx(Iu zj;()1vzBES@J7*FX1k+5YKbJjW8U8t4-S0S_Y(!+@$tUO+5-J`OGiH4n%X~(t=Or6 zq7Hgo4A7%Pfv%>m7WQuJY`?B?A0^R4I53}1;dn(@{?Kp+#un6Y(%GYtpeWwh(pOp`FS2tTAAT(hVdOp!JI$r`qCQjTMrTJ{Ev1~7!-8_R{A=Imjf{Fjg0I9 zBbkm;;w|0SW}!i1a-LfvBSUN+N%xk)lb^>O;>{> zi^0=i&+?c3h+`XOr;%W~qo^j*LI~zFJiWqolTkhW19z3%pm^p+j1Ic=f~3&*O&=t) z%Dz>h&Z07)bIID^hRwX9;M)ue9QonCqSJCVr<@QUADh_UF&r$!qk!DGH93xre)C?$ zs}G{d*urBv~jd@WB>aH=P%8H zr;MTAjEZoAbAYbBYGXivBaLe^rOJU0p>-rqN*F~iS`L_2;VwyCYD|rO>{Oq|AP_SDGIU7JC~?5?rh$;R>SKEu)uFFRSsj*tY@dOW zj;IiX3w3w40d0$-G+C$uX;RTcXY$>i?3n~&wr_t+9^J-X4P`en;GXDWWmuzgbk1~m z1$PLR^hF;_tF+H>L@k|3XNrZK=TUI8HGnjDY`8_>YICKQX@swlf!V&+WVLF%o~qgO z|5RSuyy_RkOY-^sk*u|Ra=@Ci{|xy1NI^E0Tyb!O#2wmbaXH$ ze$MqBo%W1`e^A`v1!7*GGuKONW%VW_kvf4*KA!&ex-l~m+2|}nCX*;Z*^+g}JG8lw zNplX1YS&K~g@JYRJjClq#U*tw?!`O6s&MQp3_JU8#LMyIZQ#heqa!u{PAm8p+3 zow$Irh%-%d%X=l{&}K9s#c8&tQn*a-ZB)~mVrMMNGcaBpz|-DPl?YF>_`URXhj%9j z9`oU@HCap1wB#vc?AIO3l;dY+O-Zh*18UX^Se@mnHHuZ2<9j!UKb)_e^r_MIcPiO~ z1OO=cZaTWRNDx}B1}q4-v3)i_j7#3;RzFXAR;^xevkw(qgp9WeZCGhYanNg)u&un$ z1rCw3?acQ$SN@~^cIT^eln-^3ojH5XwGtn{dq{b?qh~zBGg#tI@TRzm@*f^@qBwLl zOOYu4?vt+Eld?6Ez2I-jfAp$PMtiPe4$lv9|LSBu{4L7TRL)Nm->a%V<`X>%M--8x zH`5TNXqoNtoN0mcwH-+@$KxdUrP_y+6Uer!dc|#lzBrZT#3f_RF>aKfDUi?2)g6o~QN~_D?yT^Pr)*(j)(K`0M98M)C)uEe|OFj32r`UQ^;i!|oUw z3=H)9+X+D4_7=abe`KqtZpi9M*Im&iI;C)1RE*_ z9!k-Rz9<@wV3{?FAlro*dnwPN^eP6_+RwVzFe|1 z+^Xkz-Q(7N)AB0ET}oQ<8D9%sE>~L{9E&i}N|19`J~mxb8iRoy z7+dM9AmTj0Nz<(n11Cq&eD&$F`_)FVt`Hm9xXOHF6QxM#?BW0+Clf(16?oHW-TiX2 zBh?fyH@+y4c2bsUB91~Uj>`I(*ErmCi%vC|#}SDc&T~c8iib(~;K=G*9s!|bh<`lB zm(zx6d3>BYp}MkeRMhLeG#acj99lj72al}su)@8SO3Q_CB%*Y_7c8`1LMeFyMr17} z4s_^^5wq%?T5egQt8dkBRn&p}4xdb}Vk7o$Xx7l4ZAoXV9hEP@Qf@ZDdVdb zkO_Vunby`_82JF7f)vBB&u~wr(M+|Z$3*b0Gd77S%n$&Z62?M59(Idc(+J72KkJJd=lf~WxW;XU zYL|ey*cEN(`cEZddu?ZHCJ$)Dw~s0pi=tp41Jr%0(Ep+!&>RA?ws5fc>-xKBnb2Kw zT&BRh3%Lhubo9)3Ft(}J%{i_8+P?8DK5BF zVI1c6*HNhh$dp(N-1yJDB{Q$_w?+Cio_ohi#gpSX$R(NUbEmGS_AKUg4T>ie@=&yi z2v~-VM2F!-mn5?#H(+9NrNUK+HEWAEErEs(aaZCLerS@E|WR))^!hm{@# z1T{IVtvT9(08y^j+ZJ9iQiGEfw^_N1@`U#(=N)jn8*dLsg8Y~i!T{lIUl~hjMNP0o z95MPcNiQPnQ#)pvSUI@>b3m(=@~(aAilTT8C5*GE_wDU2_Nyw^c0yN!4|~n55px+ly)c+cF~pi(%U~zek#s zzP{D@k3_!jKKLk_LDh<;?7e!G%)O*ooSvriy-kxPW`c!gK=Cp-LTz<~r;s|kE0Yq$ zNEl7*boaNnFXlvjOUjZL(3S|1oW6mpW=OFHJ@%tHnt&nFGyHk2pU1YnD!}T5=L5c< zh|rGVM?Y|%luzdFGiSp*vm>b3S3#?nIz_^l4zj5vqYtjcxfADC?g?K8CTVfpRYZ#` z)2;`VW-abp5;E8|E=(?8w``<;9vUOrdzK}Gg|rn`0)Fd+H?lj=A2OyGpjC*Wc!hYh zoAl7lq<+85hC@&)#kYW}>1cn%7t^u-RxFyDUF0sPKsIDQ-pu4Ho>2m^pd5*TjW`oe zdT*OoVEp@=I?dymTx*K+5yOMK?Dm3DQr+!@Rrj&*3%?96UulkF*1?k2&6!f4Awu#e zgRb>a?Sd(De&+nU#|E$3nJ+3YUo4H({Y3a@UdoA2`sxm)1Org#!uTsM{Z|eJPEmJ) z62+mlOGbsY+Ls`8s!ZB3Y*YM{){YEU1!@OHL#(blbS?PP@PmrGX3wtsW7idXVtpT8 z0_KKjMFEsZgy?;ha&whV4D$PEug{!mwHnNkBX}$ebnH1Xd}UhuDG@(M2aBEGM>90G z!;BoL=;oi$&C78`%#c)6q1KG!!>Fc%$evVdaTN^5VJeC}rOFZnGw0dqbJA<5BYPg| ziI&EXER^p~o|Hi348d)D^vSXEjVw2iuiqxb0$!hL?X*IIs$G%MA|`*>zFJao@$YN5 z3rNpjuJQoT>g1=f%2<#$&>5+?eg8DhYno2<5r{It3@DH*SAcF^WPYY78?sbXz$rHZCMy zmcZnI0ZI4_z7a_C06>z$&E2!CQ0TteS&;A1EsIiu!jCjUx%N|Bs!oqIO$B|oo#O+g zHybC(jT!e(a7&UAAfc>JpZu*7w|1a z)mIE2L_||CFI)ORu|cgH4X{L5?|+X#d5V%Lt#b&pEZ@OPW?N?^B!aR=UM*i zR|%8KMa0R|NQ!E1)Wt_cXPp6x$BG*OYuM1~FNs*9`fNvEodhHzt^C-lUQo&0y#7x4 z1z}L+SUtFGurNODv%phIHsc|d6IRgh*+{YFk#HyrTjq!oPk)t+T=IqWDZTw{Q}SlY zx^TFVkxkFFf@|ofCB&!mKmlOd`cm8{(_Df2!YbuT=A^R^*`*e2Z$W)OS*rN-gJ)x< z1)1X$b*ardccdlCfD{KG6z(yo#9R?t+Z7@+^B&JQXt(VL-R zs0Q^v-HBhJ=x;;+W8x(l%5ED1m_x@mj7DNA6C@$0p)@s+3fN=`I+f=omY$Q*tf43) zXG$AMPU5UxH5LwZjlQsych_rGM>@qS;(3g<@tHBH7Timus17JrSTVEq!u1c=E`jcL zhEjzra$y!;mR)ARK=g;qHw0@jq=Pes)2})v2;|wHeE#SdM70Drr!sy3PW{>MBGb@^ z8wES&0?&-JiK}=u(i}f5DCbfj6SavJF^?{5qr<3T{hbUe`szN>R5tdjLMc0=;P8eN2xm%uP<5ELF2ospgewu!^JVQwHXQBH#8rqmb>9W_vnL*0=sikZCD8Gb3!C zYMHHe*Urn>Y=Qok&1IfGgw17*{(W1&bY9ChZ068sX!@5)Nlk0=fI^2WJ8~D^G%ay}Il8!o{u*6lJN|JaQyYc(=>6)!9FNJy4TmSx9qLZE= z>sBK|Ox6rLK;Z?%JT6t;8Yq(XuBa*Kb0KkPLQ<^eU(lVN z^|EpqZfZ3O^A6+Yi61L}{+k$tklwO3C-Oj%YJPI^ z+ZTCa_S<)x}cAHp>Z-X@8T_P+h6+Ji%yEP z{`Eb5OlHu}r%tBu7_ZMsq$9*WwNo)W)v@N~Dysn3gN$sJX_)O4 z#c&z4;~oCCLp75u=qd+piQc=#s48v9=ecqca$Iv+aa0@GNzFFW)qTass1;bV5cV~s zpYgtj8 zBcWR)RicihWAZFPz%{H-+UVQ6!&DBR!@Pg6^wMQ1DO!B%!9=^Xzj!R|A`4-tj@*1o z8#s_8pyIIGhj^@}+VB1m%_n&6plj+JIb#Tf(6lX)@j5k##m_(y_3&^(CxmU_vQ?vH zzZKIa(@iqPKzq?7?w7k0p*e{+5b5aj4UV4suI~C%&sSA$6>_1-k>||qxK<;ahXiuF zjTYm!notE(Jdb_DN|zT}Zgh)I!|pXq8?iE5Dej^=(?s=^cD)g?S(ycdR;|q9-g}IF zDTD=zLIAfMVkZc39$+(r2^fMa(IT-&QeX)|NykDPO!`X%n6wTb;pIoOn&G#6tPw^< z-`O4U@?IhncY*C1ccG8Gc}9!ffJM8a{6c&Ktlw&XW@POu?eD_qm|T*n!j@24gab`1gX6 z^%HkL#y)0ToM*^C?9ZECZtx3e-=Y2r1I?9`i3?jWj)W?v@~Z}hvY<03dg38SPF2yF zaTVrAhhA>1I(_0^er(AY#L=jHQmy_e{nAPxysOVU58&MGCie}Le!xO|!T7~yfF@(+Rx(q9PwXHei<^BCYU8T|vW4CSU!fd5KO9}7R`Nq>X`u>K?bKe49AfR8!AAHZ|${{iq1BX|t> zxWN4bXa)6$zqj{)mAj8o9%s%!C|b}&`Y$Md8_H9t0sQJcqrrGW&C-zM*WLdC^~)tM literal 0 HcmV?d00001