aboutsummaryrefslogtreecommitdiffstats
path: root/vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java')
-rw-r--r--vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java177
1 files changed, 1 insertions, 176 deletions
diff --git a/vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java
index 5f83f36dc..058cb2f5b 100644
--- a/vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java
+++ b/vid-automation/src/test/java/org/onap/vid/api/AsyncInfraApiTest.java
@@ -1,205 +1,30 @@
package org.onap.vid.api;
import com.google.common.collect.ImmutableList;
-import com.google.gson.JsonObject;
-import net.codestory.http.WebServer;
import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet;
import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet;
import org.onap.vid.more.LoggerFormatTest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.testng.Assert;
import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import vid.automation.test.infra.Features;
-import vid.automation.test.infra.Wait;
-import vid.automation.test.model.JobBulk;
-import vid.automation.test.model.JobModel;
import vid.automation.test.services.SimulatorApi;
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.List;
import java.util.UUID;
-import java.util.concurrent.ConcurrentSkipListSet;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.*;
+import static org.hamcrest.Matchers.containsString;
import static org.testng.AssertJUnit.assertEquals;
public class AsyncInfraApiTest extends BaseApiTest {
- private static final String PENDING = "PENDING";
public static final String API_URL = "asyncForTests";
- private boolean asyncJobsIsOn() {
- return Features.FLAG_ASYNC_JOBS.isActive()
- && Features.FLAG_ASYNC_INSTANTIATION.isActive();
- }
-
@BeforeClass
public void login() {
super.login();
}
- @BeforeMethod
- protected void deleteAllPendingJobs() {
- System.out.println("Connecting database...");
-
- try (Connection connection = DriverManager.getConnection(DB_CONFIG.url, DB_CONFIG.username, DB_CONFIG.password)) {
- System.out.println("Database connected!");
- try (Statement stmt = connection.createStatement()) {
- stmt.addBatch("DELETE from `vid_service_info`");
- stmt.addBatch("DELETE FROM `vid_job`");
-
- int[] executeBatch = stmt.executeBatch();
- }
-
- } catch (SQLException e) {
- throw new IllegalStateException("Cannot connect the database!", e);
- }
- }
-
-
- @Test
- public void createBulkOfJobsViaApi_thenGetEachOneOfThem() {
- int jobCount = 10;
- final String url = "http://localhost:1234/testMe";
- ResponseEntity<JobBulk> result = postJobBulk(jobCount, url, "NoOp");
- assertEquals(HttpStatus.OK, result.getStatusCode());
- Assert.assertNotNull(result.getBody());
- assertEquals(jobCount, getJobChildren(result).size());
-
-
- result.getBody().getJobs().forEach(job -> {
- assertThat(job.getUuid(), not(isEmptyOrNullString()));
- assertEquals(PENDING, job.getStatus());
- });
-
- result.getBody().getJobs().forEach(job -> {
- ResponseEntity<JobModel> jobResult = restTemplate.getForEntity(buildUri(API_URL+"/job/{uuid}"), JobModel.class, job.getUuid());
- assertEquals(job.getUuid(), jobResult.getBody().getUuid());
- //assertEquals(PENDING, jobResult.getBody().getStatus());
- });
- }
-
- private List<JobModel> getJobChildren(ResponseEntity<JobBulk> result) {
- return result.getBody().getJobs().stream().filter(job -> job.getTemplateId() != null).collect(Collectors.toList());
- }
-
- private ResponseEntity<JobBulk> postJobBulk(int jobCount, String url, String type) {
- JsonObject jsonObject = new JsonObject();
- jsonObject.addProperty("name", "service-"+random.nextInt());
- jsonObject.addProperty("count", jobCount);
- jsonObject.addProperty("url", url);
- jsonObject.addProperty("type", type);
- ResponseEntity<JobBulk> result = restTemplate.postForEntity(buildUri(API_URL), jsonObject.toString(), JobBulk.class);
- return result;
- }
-
- @Test
- public void addFewJobs_verifyCallbacksAreAllAndNoDuplicates() throws InterruptedException {
- final Collection<String> expected = new ConcurrentSkipListSet<>();
- final Collection<String> results = new ConcurrentSkipListSet<>();
- final Collection<String> duplicates = new ConcurrentSkipListSet<>();
- final String targetPath = "/my-mso";
-
- // https://github.com/CodeStory/fluent-http
- final WebServer server = new WebServer().configure(routes -> routes
- .post(targetPath, (context) -> {
- final String body = context.extract(String.class);
- if (!results.add(body)) {
- duplicates.add(body);
- }
- return body;
- })
- ).startOnRandomPort();
-
- final int jobCount = 10;
- final int childCount = 2;
-
- InetAddress inetAddress = getExternalInetAddress();
-
- final String returnUrl = "http://" + inetAddress.getHostAddress() + ":" + server.port() + targetPath;
- System.out.println(returnUrl);
-
- // POST jobs
- IntStream.range(0, jobCount).parallel().forEach(i -> {
- ResponseEntity<JobBulk> result = postJobBulk(childCount, returnUrl, "HttpCall");
- getJobChildren(result).forEach(child -> {
- expected.add(child.getUuid());
- });
- });
- Wait.waitFor((actual -> actual.size() == expected.size()), results, 75, 200, TimeUnit.MILLISECONDS);
- // wait some another time give change for duplications
- TimeUnit.SECONDS.sleep(5);
-
- if (asyncJobsIsOn()) {
- assertThat("async jobs is on: should callback for all jobs - no more, no less", results, equalTo(expected));
- assertThat("async jobs is on: should callback for exactly number of jobs", results, hasSize(jobCount * childCount));
- assertThat("async jobs is on: should have no duplicate jobs callback", duplicates, empty());
- } else {
- assertThat("async jobs is off: should not callback for any job", results, empty());
- assertThat("async jobs is off: should have no duplicate jobs callback", duplicates, empty());
- }
-
- server.stop();
-
- }
-
- private InetAddress getExternalInetAddress() {
- // https://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java
- InetAddress candidateAddress = null;
- try {
- for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
- NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
-
- if (iface.getName().contains("docker")) {
- // ignore local docker virtual gateway IPs
- continue;
- }
-
- // Iterate all IP addresses assigned to each card...
- for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) {
- InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
-
- // take only non-loopback, ipv4 addresses
- if (!inetAddr.isLoopbackAddress() && inetAddr instanceof Inet4Address) {
-
- System.out.println("inetAddr (" + iface.getName() + "): " + inetAddr);
- if (inetAddr.isSiteLocalAddress()) {
- // Found non-loopback site-local address. Return it immediately...
- System.out.println("inetAddr, site-local (" + iface.getName() + "): " + inetAddr);
- candidateAddress = inetAddr;
- }
- else if (candidateAddress == null) {
- // Found non-loopback address, but not necessarily site-local.
- // Store it as a candidate to be returned if site-local address is not subsequently found...
- candidateAddress = inetAddr;
- // Note that we don't repeatedly assign non-loopback non-site-local addresses as candidates,
- // only the first. For subsequent iterations, candidate will be non-null.
- }
- }
- }
-
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- return candidateAddress;
- }
-
@Test
public void testGetStatusBadRequest() {
ResponseEntity<String> jobResult = getJob("1234");