You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/11/17 12:07:54 UTC
[servicecomb-pack] branch SCB-1597 created (now 6ae83b9)
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a change to branch SCB-1597
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git.
at 6ae83b9 SCB-1597 Clean up the code of acceptance-tests
This branch includes the following new commits:
new 6ae83b9 SCB-1597 Clean up the code of acceptance-tests
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[servicecomb-pack] 01/01: SCB-1597 Clean up the code of
acceptance-tests
Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch SCB-1597
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
commit 6ae83b96e3ed4a34fd181c5a1447c5f3cbb22bd2
Author: Willem Jiang <wi...@gmail.com>
AuthorDate: Sun Nov 17 20:06:51 2019 +0800
SCB-1597 Clean up the code of acceptance-tests
---
.../acceptance-pack-akka-spring-demo/pom.xml | 49 +------
.../org/apache/servicecomb/pack/PackStepdefs.java | 77 +----------
.../acceptance-pack-cluster-spring-demo/pom.xml | 48 +------
.../org/apache/servicecomb/pack/PackStepdefs.java | 133 +-----------------
.../acceptance-pack-dubbo-demo/pom.xml | 11 +-
.../acceptance/dubbodemo/DubboDemoStepdefs.java | 69 +---------
.../pom.xml | 48 +------
.../org/apache/servicecomb/pack/PackStepdefs.java | 82 +----------
.../acceptance-pack-spring-demo-with-nacos/pom.xml | 48 +------
.../org/apache/servicecomb/pack/PackStepdefs.java | 76 +---------
.../pom.xml | 48 +------
.../org/apache/servicecomb/pack/PackStepdefs.java | 82 +----------
.../acceptance-pack-spring-demo/pom.xml | 48 +------
.../acceptance-pack-tcc-spring-demo/pom.xml | 43 +-----
.../org/apache/servicecomb/pack/PackStepdefs.java | 72 +---------
acceptance-tests/acceptance-test-common/pom.xml | 31 +++++
.../apache/servicecomb/pack/StepDefSupport.java} | 153 ++++-----------------
acceptance-tests/pom.xml | 126 +++++++++++++++--
18 files changed, 207 insertions(+), 1037 deletions(-)
diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml b/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml
index dde0a3b..b8aadd0 100644
--- a/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml
+++ b/acceptance-tests/acceptance-pack-akka-spring-demo/pom.xml
@@ -31,56 +31,13 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.byteman</groupId>
- <artifactId>byteman-submit</artifactId>
- <version>${byteman.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
-
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
index 19c1487..533cdad 100644
--- a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
@@ -40,21 +40,15 @@ import cucumber.api.DataTable;
import cucumber.api.java.After;
import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+public class PackStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
private static final String CAR_SERVICE_ADDRESS = "car.service.address";
private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address";
private static final String BOOKING_SERVICE_ADDRESS = "booking.service.address";
- private static final String INFO_SERVICE_URI = "info.service.uri";
private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS};
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
-
- private static final Map<String, Submit> submits = new HashMap<>();
-
public PackStepdefs() {
String[] globalTxId = new String[1];
@@ -141,73 +135,4 @@ public class PackStepdefs implements En {
}
}
}
-
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
- List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
- List<Map<String, String>> actualMaps = new ArrayList<>();
-
- await().atMost(10, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
- // write the log if the Map size is not same
- boolean result = expectedMaps.size() == actualMaps.size();
- if (!result) {
- LOG.warn("The response message size is not we expected. ExpectedMap size is {}, ActualMap size is {}", expectedMaps.size(), actualMaps.size());
- }
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.diff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
- Map<String, String>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
-
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
-
- private Submit getBytemanSubmit(String service) {
- if (submits.containsKey(service)) {
- return submits.get(service);
- } else {
- String address = System.getProperty("byteman.address");
- String port = System.getProperty(service.toLowerCase() + ".byteman.port");
- Submit bm = new Submit(address, Integer.parseInt(port));
- submits.put(service, bm);
- return bm;
- }
- }
}
diff --git a/acceptance-tests/acceptance-pack-cluster-spring-demo/pom.xml b/acceptance-tests/acceptance-pack-cluster-spring-demo/pom.xml
index 60fb6fe..c62299c 100644
--- a/acceptance-tests/acceptance-pack-cluster-spring-demo/pom.xml
+++ b/acceptance-tests/acceptance-pack-cluster-spring-demo/pom.xml
@@ -31,56 +31,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.byteman</groupId>
- <artifactId>byteman-submit</artifactId>
- <version>${byteman.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
index 33c77cd..3bcf8ee 100644
--- a/acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
@@ -41,21 +41,16 @@ import cucumber.api.DataTable;
import cucumber.api.java.After;
import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+public class PackStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
private static final String CAR_SERVICE_ADDRESS = "car.service.address";
private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address";
private static final String BOOKING_SERVICE_ADDRESS = "booking.service.address";
- private static final String INFO_SERVICE_URI = "info.service.uri";
private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS};
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
-
private static AlpahClusterAddress alphaClusterAddress;
- private static final Map<String, Submit> submits = new HashMap<>();
@Before
public void before() {
@@ -154,130 +149,4 @@ public class PackStepdefs implements En {
}
}
}
-
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
- List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
- List<Map<String, String>> actualMaps = new ArrayList<>();
-
- await().atMost(5, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
- // write the log if the Map size is not same
- boolean result = expectedMaps.size() == actualMaps.size();
- if (!result) {
- LOG.warn("The response message size is not we expected. ExpectedMap size is {}, ActualMap size is {}", expectedMaps.size(), actualMaps.size());
- }
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.diff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
- Map<String, String>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
-
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
-
- private void probeAlphaMaster(AlpahClusterAddress alphaClusterAddress) {
- LOG.info("Check to Alpah Master server");
- assertNotNull(alphaClusterAddress.getMasterAddress());
- }
-
- private Submit getBytemanSubmit(String service) {
- if (submits.containsKey(service)) {
- return submits.get(service);
- } else {
- String address = System.getProperty("byteman.address");
- String port = System.getProperty(service.toLowerCase() + ".byteman.port");
- Submit bm = new Submit(address, Integer.parseInt(port));
- submits.put(service, bm);
- return bm;
- }
- }
-
- class AlpahClusterAddress {
-
- private List<String> addresss;
-
- private int maxRetry=6;
-
- AlpahClusterAddress(String address) {
- this.addresss = Arrays.asList(address.split(","));
- }
-
- public List<String> getAddresss() {
- return addresss;
- }
-
- // get the master node in the alpha server cluster
- public String getMasterAddress() {
- Predicate<String> matchMasterNode =
- endpoint -> matches(endpoint::toString, ofNullable("MASTER"));
- Optional<String> masterAddress = Optional.empty();
- int retryCounter = 0;
- while(!masterAddress.isPresent() && retryCounter<maxRetry){
- masterAddress = addresss.stream().filter(matchMasterNode).findAny();
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- retryCounter++;
- }
- if(masterAddress.isPresent()){
- return masterAddress.get();
- }else{
- throw new RuntimeException("Max retries exception!");
- }
- }
-
- private <T> boolean matches(Supplier<T> supplier, Optional<String> value) {
- try{
- String nodeType = given().get(supplier.get() + "/alpha/api/v1/metrics").jsonPath().getString("nodeType");
- LOG.info("Check alpha server {} nodeType is {}",supplier.get(),nodeType);
- if (value.get().equalsIgnoreCase(nodeType)) {
- return true;
- } else {
- return false;
- }
- }catch (Exception ex){
- LOG.info("Check alpha server {} nodeType fail, {}",supplier.get(),ex.getMessage());
- return false;
- }
- }
- }
}
diff --git a/acceptance-tests/acceptance-pack-dubbo-demo/pom.xml b/acceptance-tests/acceptance-pack-dubbo-demo/pom.xml
index 580b362..cd0cf68 100644
--- a/acceptance-tests/acceptance-pack-dubbo-demo/pom.xml
+++ b/acceptance-tests/acceptance-pack-dubbo-demo/pom.xml
@@ -30,14 +30,9 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
diff --git a/acceptance-tests/acceptance-pack-dubbo-demo/src/test/java/org/apache/servicecomb/pack/acceptance/dubbodemo/DubboDemoStepdefs.java b/acceptance-tests/acceptance-pack-dubbo-demo/src/test/java/org/apache/servicecomb/pack/acceptance/dubbodemo/DubboDemoStepdefs.java
index 810073f..690f706 100644
--- a/acceptance-tests/acceptance-pack-dubbo-demo/src/test/java/org/apache/servicecomb/pack/acceptance/dubbodemo/DubboDemoStepdefs.java
+++ b/acceptance-tests/acceptance-pack-dubbo-demo/src/test/java/org/apache/servicecomb/pack/acceptance/dubbodemo/DubboDemoStepdefs.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.pack.acceptance.dubbodemo;
import static io.restassured.RestAssured.given;
import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.awaitility.Awaitility.await;
import static org.hamcrest.core.Is.is;
@@ -30,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
+import org.apache.servicecomb.pack.StepDefSupport;
import org.hamcrest.core.StringContains;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,7 +39,7 @@ import cucumber.api.DataTable;
import cucumber.api.java.Before;
import cucumber.api.java8.En;
-public class DubboDemoStepdefs implements En {
+public class DubboDemoStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
@@ -50,10 +50,6 @@ public class DubboDemoStepdefs implements En {
private static final String SERVICEC_ADDRESS = "servicec.address";
- private static final String INFO_SERVICE_URI = "info.service.uri";
-
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
public DubboDemoStepdefs() {
Given("^ServiceA is up and running$", () -> probe(System.getProperty(SERVICEA_ADDRESS)));
@@ -76,9 +72,9 @@ public class DubboDemoStepdefs implements En {
});
Then("^Alpha records the following events$", (DataTable dataTable) -> {
- Consumer<Map<String, Object>[]> sortAndColumnStrippingConsumer = dataMaps -> {
+ Consumer<Map<String, String>[]> sortAndColumnStrippingConsumer = dataMaps -> {
//blur match: service for sagaEndedEvent may be unable to que
- for (Map<String, Object> dataMap : dataMaps) {
+ for (Map<String, String> dataMap : dataMaps) {
if (dataMap.values().contains("SagaEndedEvent")) {
for (String key : dataMap.keySet()) {
if ("SagaEndedEvent".equals(dataMap.get(key))) {
@@ -89,7 +85,7 @@ public class DubboDemoStepdefs implements En {
}
}
//strip columns
- for (Map<String, Object> map : dataMaps) {
+ for (Map<String, String> map : dataMaps) {
map.keySet().retainAll(dataTable.topCells());
}
};
@@ -98,8 +94,8 @@ public class DubboDemoStepdefs implements En {
});
And("^(service[a-c]+) success update status$", (String serviceName, DataTable dataTable) -> {
- Consumer<Map<String, Object>[]> columnStrippingConsumer = dataMap -> {
- for (Map<String, Object> map : dataMap) {
+ Consumer<Map<String, String>[]> columnStrippingConsumer = dataMap -> {
+ for (Map<String, String> map : dataMap) {
map.keySet().retainAll(dataTable.topCells());
}
};
@@ -120,56 +116,5 @@ public class DubboDemoStepdefs implements En {
.statusCode(is(200));
}
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, Object>[]> dataProcessor) {
- List<Map<String, Object>> expectedMaps = dataTable.asMaps(String.class, Object.class);
- List<Map<String, Object>> actualMaps = new ArrayList<>();
-
- await().atMost(8, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
-
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.unorderedDiff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, Object>[] retrieveDataMaps(String address, Consumer<Map<String, Object>[]> dataProcessor) {
- Map<String, Object>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
}
diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-consul/pom.xml b/acceptance-tests/acceptance-pack-spring-demo-with-consul/pom.xml
index 83908ac..5a7bbe7 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-consul/pom.xml
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-consul/pom.xml
@@ -31,56 +31,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.byteman</groupId>
- <artifactId>byteman-submit</artifactId>
- <version>${byteman.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-consul/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-spring-demo-with-consul/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
index 711edd2..795c6c5 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-consul/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-consul/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
@@ -18,15 +18,10 @@
package org.apache.servicecomb.pack;
import static io.restassured.RestAssured.given;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.apache.commons.lang3.StringUtils.isEmpty;
-import static org.awaitility.Awaitility.await;
import static org.hamcrest.core.Is.is;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -38,23 +33,16 @@ import org.slf4j.LoggerFactory;
import io.restassured.response.Response;
import cucumber.api.DataTable;
import cucumber.api.java.After;
-import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+public class PackStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
private static final String CAR_SERVICE_ADDRESS = "car.service.address";
private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address";
private static final String BOOKING_SERVICE_ADDRESS = "booking.service.address";
- private static final String INFO_SERVICE_URI = "info.service.uri";
private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS};
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
-
- private static final Map<String, Submit> submits = new HashMap<>();
-
public PackStepdefs() {
Given("^Car Service is up and running$", () -> {
probe(System.getProperty(CAR_SERVICE_ADDRESS));
@@ -140,72 +128,4 @@ public class PackStepdefs implements En {
}
}
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
- List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
- List<Map<String, String>> actualMaps = new ArrayList<>();
-
- await().atMost(5, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
- // write the log if the Map size is not same
- boolean result = expectedMaps.size() == actualMaps.size();
- if (!result) {
- LOG.warn("The response message size is not we expected. ExpectedMap size is {}, ActualMap size is {}", expectedMaps.size(), actualMaps.size());
- }
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.diff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
- Map<String, String>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
-
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
-
- private Submit getBytemanSubmit(String service) {
- if (submits.containsKey(service)) {
- return submits.get(service);
- } else {
- String address = System.getProperty("byteman.address");
- String port = System.getProperty(service.toLowerCase() + ".byteman.port");
- Submit bm = new Submit(address, Integer.parseInt(port));
- submits.put(service, bm);
- return bm;
- }
- }
}
diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml b/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml
index 7ec46ba..47a5832 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-nacos/pom.xml
@@ -31,56 +31,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.byteman</groupId>
- <artifactId>byteman-submit</artifactId>
- <version>${byteman.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-nacos/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-spring-demo-with-nacos/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
index 711edd2..8ff4165 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-nacos/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-nacos/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
@@ -40,21 +40,15 @@ import cucumber.api.DataTable;
import cucumber.api.java.After;
import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+public class PackStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
private static final String CAR_SERVICE_ADDRESS = "car.service.address";
private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address";
private static final String BOOKING_SERVICE_ADDRESS = "booking.service.address";
- private static final String INFO_SERVICE_URI = "info.service.uri";
private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS};
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
-
- private static final Map<String, Submit> submits = new HashMap<>();
-
public PackStepdefs() {
Given("^Car Service is up and running$", () -> {
probe(System.getProperty(CAR_SERVICE_ADDRESS));
@@ -140,72 +134,4 @@ public class PackStepdefs implements En {
}
}
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
- List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
- List<Map<String, String>> actualMaps = new ArrayList<>();
-
- await().atMost(5, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
- // write the log if the Map size is not same
- boolean result = expectedMaps.size() == actualMaps.size();
- if (!result) {
- LOG.warn("The response message size is not we expected. ExpectedMap size is {}, ActualMap size is {}", expectedMaps.size(), actualMaps.size());
- }
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.diff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
- Map<String, String>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
-
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
-
- private Submit getBytemanSubmit(String service) {
- if (submits.containsKey(service)) {
- return submits.get(service);
- } else {
- String address = System.getProperty("byteman.address");
- String port = System.getProperty(service.toLowerCase() + ".byteman.port");
- Submit bm = new Submit(address, Integer.parseInt(port));
- submits.put(service, bm);
- return bm;
- }
- }
}
diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/pom.xml b/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/pom.xml
index 9a132da..8a8b306 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/pom.xml
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/pom.xml
@@ -31,56 +31,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.byteman</groupId>
- <artifactId>byteman-submit</artifactId>
- <version>${byteman.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
index 711edd2..795c6c5 100644
--- a/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-pack-spring-demo-with-zookeeper/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
@@ -18,15 +18,10 @@
package org.apache.servicecomb.pack;
import static io.restassured.RestAssured.given;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.apache.commons.lang3.StringUtils.isEmpty;
-import static org.awaitility.Awaitility.await;
import static org.hamcrest.core.Is.is;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -38,23 +33,16 @@ import org.slf4j.LoggerFactory;
import io.restassured.response.Response;
import cucumber.api.DataTable;
import cucumber.api.java.After;
-import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+public class PackStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
private static final String CAR_SERVICE_ADDRESS = "car.service.address";
private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address";
private static final String BOOKING_SERVICE_ADDRESS = "booking.service.address";
- private static final String INFO_SERVICE_URI = "info.service.uri";
private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS};
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
-
- private static final Map<String, Submit> submits = new HashMap<>();
-
public PackStepdefs() {
Given("^Car Service is up and running$", () -> {
probe(System.getProperty(CAR_SERVICE_ADDRESS));
@@ -140,72 +128,4 @@ public class PackStepdefs implements En {
}
}
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
- List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
- List<Map<String, String>> actualMaps = new ArrayList<>();
-
- await().atMost(5, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
- // write the log if the Map size is not same
- boolean result = expectedMaps.size() == actualMaps.size();
- if (!result) {
- LOG.warn("The response message size is not we expected. ExpectedMap size is {}, ActualMap size is {}", expectedMaps.size(), actualMaps.size());
- }
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.diff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
- Map<String, String>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
-
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
-
- private Submit getBytemanSubmit(String service) {
- if (submits.containsKey(service)) {
- return submits.get(service);
- } else {
- String address = System.getProperty("byteman.address");
- String port = System.getProperty(service.toLowerCase() + ".byteman.port");
- Submit bm = new Submit(address, Integer.parseInt(port));
- submits.put(service, bm);
- return bm;
- }
- }
}
diff --git a/acceptance-tests/acceptance-pack-spring-demo/pom.xml b/acceptance-tests/acceptance-pack-spring-demo/pom.xml
index ca944d5..9ab873e 100644
--- a/acceptance-tests/acceptance-pack-spring-demo/pom.xml
+++ b/acceptance-tests/acceptance-pack-spring-demo/pom.xml
@@ -31,56 +31,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.byteman</groupId>
- <artifactId>byteman-submit</artifactId>
- <version>${byteman.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-tcc-spring-demo/pom.xml b/acceptance-tests/acceptance-pack-tcc-spring-demo/pom.xml
index c54afa0..6f3fbaa 100644
--- a/acceptance-tests/acceptance-pack-tcc-spring-demo/pom.xml
+++ b/acceptance-tests/acceptance-pack-tcc-spring-demo/pom.xml
@@ -31,51 +31,14 @@
<dependencies>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <type>test-jar</type>
</dependency>
</dependencies>
<profiles>
<profile>
- <id>jdk9</id>
- <activation>
- <jdk>[9,)</jdk>
- </activation>
- <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
- <properties>
- <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
- </properties>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>${jaxb.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>${javax.activation.version}</version>
- </dependency>
- </dependencies>
- </profile>
- <profile>
<id>docker</id>
<activation>
<file>
diff --git a/acceptance-tests/acceptance-pack-tcc-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-pack-tcc-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
index f5bae62..35ae648 100644
--- a/acceptance-tests/acceptance-pack-tcc-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-pack-tcc-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
@@ -18,15 +18,9 @@
package org.apache.servicecomb.pack;
import static io.restassured.RestAssured.given;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.apache.commons.lang3.StringUtils.isEmpty;
-import static org.awaitility.Awaitility.await;
import static org.hamcrest.core.Is.is;
import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -36,9 +30,9 @@ import org.slf4j.LoggerFactory;
import io.restassured.response.Response;
import cucumber.api.DataTable;
import cucumber.api.java.After;
-import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+
+public class PackStepdefs extends StepDefSupport {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
@@ -47,13 +41,9 @@ public class PackStepdefs implements En {
private static final String ORDERING_SERVICE_ADDRESS = "ordering.service.address";
private static final String INVENTORY_ORDERS_URI = "/orderings";
private static final String PAYMENT_ORDERS_URI = "/transactions";
- private static final String INFO_SERVICE_URI = "info.service.uri";
private static final String[] addresses = {INVENTORY_SERVICE_ADDRESS, PAYMENT_SERVICE_ADDRESS};
private static final String[] uris = {INVENTORY_ORDERS_URI, PAYMENT_ORDERS_URI};
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
- };
-
public PackStepdefs() {
Given("^Inventory Service is up and running$", () -> {
probe(System.getProperty(INVENTORY_SERVICE_ADDRESS));
@@ -128,62 +118,4 @@ public class PackStepdefs implements En {
.statusCode(is(200));
}
-
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
- List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
- List<Map<String, String>> actualMaps = new ArrayList<>();
-
- await().atMost(5, SECONDS).until(() -> {
- actualMaps.clear();
- Collections.addAll(actualMaps, retrieveDataMaps(address, dataProcessor));
- // write the log if the Map size is not same
- boolean result = expectedMaps.size() == actualMaps.size();
- if (!result) {
- LOG.warn("The response message size is not we expected. ExpectedMap size is {}, ActualMap size is {}", expectedMaps.size(), actualMaps.size());
- }
- return expectedMaps.size() == actualMaps.size();
- });
-
- if (expectedMaps.isEmpty() && actualMaps.isEmpty()) {
- return;
- }
-
- LOG.info("Retrieved data {} from service", actualMaps);
- dataTable.diff(DataTable.create(actualMaps));
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
- Map<String, String>[] dataMap = given()
- .when()
- .get(address)
- .then()
- .statusCode(is(200))
- .extract()
- .body()
- .as(Map[].class);
-
- dataProcessor.accept(dataMap);
- return dataMap;
- }
-
- private void probe(String address) {
- String infoURI = System.getProperty(INFO_SERVICE_URI);
- if (isEmpty(infoURI)) {
- infoURI = "/info";
- }
- LOG.info("The info service uri is " + infoURI);
- probe(address, infoURI);
- }
-
- private void probe(String address, String infoURI) {
- LOG.info("Connecting to service address {}", address);
- given()
- .when()
- .get(address + infoURI)
- .then()
- .statusCode(is(200));
- }
-
}
diff --git a/acceptance-tests/acceptance-test-common/pom.xml b/acceptance-tests/acceptance-test-common/pom.xml
new file mode 100644
index 0000000..f831b80
--- /dev/null
+++ b/acceptance-tests/acceptance-test-common/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>acceptance-tests</artifactId>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <version>0.6.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>acceptance-test-common</artifactId>
+ <name>Pack:Acceptance Tests:Common</name>
+
+</project>
diff --git a/acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java b/acceptance-tests/acceptance-test-common/src/test/java/org/apache/servicecomb/pack/StepDefSupport.java
similarity index 52%
copy from acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
copy to acceptance-tests/acceptance-test-common/src/test/java/org/apache/servicecomb/pack/StepDefSupport.java
index 33c77cd..a424dc4 100644
--- a/acceptance-tests/acceptance-pack-cluster-spring-demo/src/test/java/org/apache/servicecomb/pack/PackStepdefs.java
+++ b/acceptance-tests/acceptance-test-common/src/test/java/org/apache/servicecomb/pack/StepDefSupport.java
@@ -1,4 +1,4 @@
-/*
+package org.apache.servicecomb.pack;/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
@@ -15,148 +15,41 @@
* limitations under the License.
*/
-package org.apache.servicecomb.pack;
-
-import static io.restassured.RestAssured.given;
import static java.util.Optional.ofNullable;
import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.apache.commons.lang3.StringUtils.isEmpty;
+import static io.restassured.RestAssured.given;
import static org.awaitility.Awaitility.await;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertNotNull;
import java.lang.invoke.MethodHandles;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
-import cucumber.api.java.Before;
import org.jboss.byteman.agent.submit.Submit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import io.restassured.response.Response;
import cucumber.api.DataTable;
-import cucumber.api.java.After;
import cucumber.api.java8.En;
-public class PackStepdefs implements En {
+public class StepDefSupport implements En {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
- private static final String ALPHA_REST_ADDRESS = "alpha.rest.address";
- private static final String CAR_SERVICE_ADDRESS = "car.service.address";
- private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address";
- private static final String BOOKING_SERVICE_ADDRESS = "booking.service.address";
private static final String INFO_SERVICE_URI = "info.service.uri";
- private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS};
-
- private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
+ protected static final Map<String, Submit> submits = new HashMap<>();
+ protected static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> {
};
- private static AlpahClusterAddress alphaClusterAddress;
- private static final Map<String, Submit> submits = new HashMap<>();
-
- @Before
- public void before() {
- alphaClusterAddress = new AlpahClusterAddress(System.getProperty(ALPHA_REST_ADDRESS));
- }
-
- public PackStepdefs() {
- Given("^Car Service is up and running$", () -> {
- probe(System.getProperty(CAR_SERVICE_ADDRESS));
- });
-
- And("^Hotel Service is up and running$", () -> {
- probe(System.getProperty(HOTEL_SERVICE_ADDRESS));
- });
-
- And("^Booking Service is up and running$", () -> {
- probe(System.getProperty(BOOKING_SERVICE_ADDRESS));
- });
-
- And("^Alpha is up and running$", () -> {
- probeAlphaMaster(alphaClusterAddress);
- });
-
- And("^Alpha cluster is up and running$", () -> {
- alphaClusterAddress.getAddresss().stream().forEach(address -> {
- LOG.info("Alpha address {}", address);
- probe(address);
- });
- LOG.info("Alpah master address {}", alphaClusterAddress.getMasterAddress());
- });
-
- Given("^Install the byteman script ([A-Za-z0-9_\\.]+) to ([A-Za-z]+) Service$", (String script, String service) -> {
- LOG.info("Install the byteman script {} to {} service", script, service);
- List<String> rules = new ArrayList<>();
- rules.add("target/test-classes/" + script);
- Submit bm = getBytemanSubmit(service);
- bm.addRulesFromFiles(rules);
- });
-
- When("^User ([A-Za-z]+) requests to book ([0-9]+) cars and ([0-9]+) rooms (success|fail)$", (username, cars, rooms, result) -> {
- LOG.info("Received request from user {} to book {} cars and {} rooms", username, cars, rooms);
-
- Response resp = given()
- .pathParam("name", username)
- .pathParam("rooms", rooms)
- .pathParam("cars", cars)
- .when()
- .post(System.getProperty("booking.service.address") + "/booking/{name}/{rooms}/{cars}");
- if (result.equals("success")) {
- resp.then().statusCode(is(200));
- } else if (result.equals("fail")) {
- resp.then().statusCode(is(500));
- }
- });
-
- Then("^Alpha records the following events$", (DataTable dataTable) -> {
- Consumer<Map<String, String>[]> columnStrippingConsumer = dataMap -> {
- for (Map<String, String> map : dataMap)
- map.keySet().retainAll(dataTable.topCells());
- };
- dataMatches(alphaClusterAddress.getMasterAddress() + "/saga/events", dataTable, columnStrippingConsumer);
- });
-
-
- And("^Car Service contains the following booking orders$", (DataTable dataTable) -> {
- dataMatches(System.getProperty(CAR_SERVICE_ADDRESS) + "/bookings", dataTable, NO_OP_CONSUMER);
- });
-
- And("^Hotel Service contains the following booking orders$", (DataTable dataTable) -> {
- dataMatches(System.getProperty(HOTEL_SERVICE_ADDRESS) + "/bookings", dataTable, NO_OP_CONSUMER);
- });
- }
-
- @After
- public void cleanUp() {
- LOG.info("Cleaning up services");
- for (String address : addresses) {
- given()
- .when()
- .delete(System.getProperty(address) + "/bookings")
- .then()
- .statusCode(is(200));
- }
-
- given()
- .when()
- .delete(alphaClusterAddress.getMasterAddress() + "/saga/events")
- .then()
- .statusCode(is(200));
-
- for (Submit bm : submits.values()) {
- try {
- bm.deleteAllRules();
- } catch (Exception e) {
- LOG.warn("Fail to delete the byteman rules " + e);
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
+ protected void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) {
List<Map<String, String>> expectedMaps = dataTable.asMaps(String.class, String.class);
List<Map<String, String>> actualMaps = new ArrayList<>();
@@ -180,7 +73,7 @@ public class PackStepdefs implements En {
}
@SuppressWarnings("unchecked")
- private Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
+ protected Map<String, String>[] retrieveDataMaps(String address, Consumer<Map<String, String>[]> dataProcessor) {
Map<String, String>[] dataMap = given()
.when()
.get(address)
@@ -194,7 +87,7 @@ public class PackStepdefs implements En {
return dataMap;
}
- private void probe(String address) {
+ protected void probe(String address) {
String infoURI = System.getProperty(INFO_SERVICE_URI);
if (isEmpty(infoURI)) {
infoURI = "/info";
@@ -212,12 +105,7 @@ public class PackStepdefs implements En {
.statusCode(is(200));
}
- private void probeAlphaMaster(AlpahClusterAddress alphaClusterAddress) {
- LOG.info("Check to Alpah Master server");
- assertNotNull(alphaClusterAddress.getMasterAddress());
- }
-
- private Submit getBytemanSubmit(String service) {
+ protected Submit getBytemanSubmit(String service) {
if (submits.containsKey(service)) {
return submits.get(service);
} else {
@@ -229,6 +117,11 @@ public class PackStepdefs implements En {
}
}
+ protected void probeAlphaMaster(AlpahClusterAddress alphaClusterAddress) {
+ LOG.info("Check to Alpha Master server");
+ assertNotNull(alphaClusterAddress.getMasterAddress());
+ }
+
class AlpahClusterAddress {
private List<String> addresss;
@@ -246,7 +139,7 @@ public class PackStepdefs implements En {
// get the master node in the alpha server cluster
public String getMasterAddress() {
Predicate<String> matchMasterNode =
- endpoint -> matches(endpoint::toString, ofNullable("MASTER"));
+ endpoint -> matches(endpoint::toString, ofNullable("MASTER"));
Optional<String> masterAddress = Optional.empty();
int retryCounter = 0;
while(!masterAddress.isPresent() && retryCounter<maxRetry){
diff --git a/acceptance-tests/pom.xml b/acceptance-tests/pom.xml
index e91e82f..0f8f3a6 100644
--- a/acceptance-tests/pom.xml
+++ b/acceptance-tests/pom.xml
@@ -30,6 +30,7 @@
<name>Pack:Acceptance Tests</name>
<packaging>pom</packaging>
<modules>
+ <module>acceptance-test-common</module>
<module>acceptance-pack-dubbo-demo</module>
<module>acceptance-pack-spring-demo</module>
<module>acceptance-pack-tcc-spring-demo</module>
@@ -42,21 +43,79 @@
<properties>
<cucumber.version>2.3.1</cucumber.version>
+ <groovy.version>2.4.15</groovy.version>
<info.service.uri>/actuator/info</info.service.uri>
</properties>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>io.cucumber</groupId>
+ <artifactId>cucumber-java8</artifactId>
+ <version>${cucumber.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.cucumber</groupId>
+ <artifactId>cucumber-junit</artifactId>
+ <version>${cucumber.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-submit</artifactId>
+ <version>${byteman.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${jackson.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>${groovy.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Added the dependency version of acceptance-test-common -->
+ <dependency>
+ <groupId>org.apache.servicecomb.pack</groupId>
+ <artifactId>acceptance-test-common</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
<dependencies>
<dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.byteman</groupId>
+ <artifactId>byteman-submit</artifactId>
+ </dependency>
+ <dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
- <version>${cucumber.version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
- <version>${cucumber.version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
@@ -65,27 +124,22 @@
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
@@ -95,8 +149,58 @@
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
- <version>2.4.15</version>
- <scope>test</scope>
</dependency>
</dependencies>
+
+ <profiles>
+ <profile>
+ <id>jdk9</id>
+ <activation>
+ <jdk>[9,)</jdk>
+ </activation>
+ <!-- TODO using jdk argLine to get rid of the jaxb dependencies -->
+ <properties>
+ <jdk.argLine>--add-modules java.xml.bind</jdk.argLine>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>${jaxb.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
+ <version>${jaxb.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>${javax.activation.version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>3.2.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>