diff options
4 files changed, 107 insertions, 74 deletions
diff --git a/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java b/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java index e29218d9f..2950c7f7d 100644 --- a/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java +++ b/epsdk-app-onap/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java @@ -37,8 +37,10 @@ */ package org.onap.portalapp.conf; +import java.util.ArrayList; +import java.util.List; +import javax.sql.DataSource; import org.onap.portalapp.login.LoginStrategyImpl; -import org.onap.portalapp.scheduler.RegistryAdapter; import org.onap.portalsdk.core.auth.LoginStrategy; import org.onap.portalsdk.core.conf.AppConfig; import org.onap.portalsdk.core.conf.Configurable; @@ -47,9 +49,15 @@ import org.onap.portalsdk.core.objectcache.AbstractCacheManager; import org.onap.portalsdk.core.service.DataAccessService; import org.onap.portalsdk.core.util.CacheManager; import org.onap.portalsdk.core.util.SystemProperties; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Profile; +import org.springframework.context.annotation.PropertySource; import org.springframework.core.io.Resource; import org.springframework.jdbc.datasource.init.DataSourceInitializer; import org.springframework.jdbc.datasource.init.DatabasePopulator; @@ -59,14 +67,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import org.springframework.scheduling.quartz.SpringBeanJobFactory; import org.springframework.web.multipart.commons.CommonsMultipartResolver; -import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; - -import javax.sql.DataSource; -import java.util.ArrayList; -import java.util.List; /** * ONAP Portal SDK sample application. Extends core AppConfig class to @@ -84,7 +86,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { /** The Constant LOG. */ private static final EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(ExternalAppConfig.class); - + /** The vid schema script. */ @Value("classpath:vid-schema.sql") private Resource vidSchemaScript; @@ -92,7 +94,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { /** The vid data script. */ @Value("classpath:vid-data.sql") private Resource vidDataScript; - + /** * The Class InnerConfiguration. */ @@ -115,7 +117,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { /** * Creates a new list with a single entry that is the external app * definitions.xml path. - * + * * @return List of String, size 1 */ @Override @@ -139,7 +141,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { /** * Creates and returns a new instance of a {@link CacheManager} class. - * + * * @return New instance of {@link CacheManager} */ @Bean @@ -150,7 +152,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { /** * Creates and returns a new instance of a {@link SchedulerFactoryBean} and * populates it with triggers. - * + * * @return New instance of {@link SchedulerFactoryBean} */ @Bean @@ -161,7 +163,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { return schedulerFactory; } - + /** * Data source initializer. * @@ -170,15 +172,15 @@ public class ExternalAppConfig extends AppConfig implements Configurable { */ @Bean public DataSourceInitializer dataSourceInitializer(DataSource dataSource) { - + LOG.info("Initializing VID data source"); - + final DataSourceInitializer initializer = new DataSourceInitializer(); initializer.setDataSource(dataSource); initializer.setDatabasePopulator(databasePopulator()); return initializer; } - + /** * Database populator. * @@ -186,7 +188,7 @@ public class ExternalAppConfig extends AppConfig implements Configurable { */ public DatabasePopulator databasePopulator() { LOG.info("Populating VID data source"); - + final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addScript(vidSchemaScript); populator.addScript(vidDataScript); diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java index 126fbe8d3..6a8439fee 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java @@ -20,8 +20,26 @@ package org.onap.vid.aai; +import static java.util.Collections.emptyList; +import static java.util.stream.Collectors.toMap; +import static org.apache.commons.lang3.ObjectUtils.defaultIfNull; +import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase; +import static org.apache.commons.lang3.StringUtils.isEmpty; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URLEncoder; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.function.Function; +import javax.inject.Inject; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpStatus; import org.apache.http.client.utils.URIBuilder; @@ -32,12 +50,28 @@ import org.json.simple.parser.JSONParser; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.onap.vid.aai.exceptions.InvalidAAIResponseException; import org.onap.vid.aai.model.AaiGetAicZone.AicZones; -import org.onap.vid.aai.model.*; -import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.*; +import org.onap.vid.aai.model.AaiGetInstanceGroupsByCloudRegion; +import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.AaiGetNetworkCollectionDetails; +import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.AaiGetNetworkCollectionDetailsHelper; +import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.AaiGetRelatedInstanceGroupsByVnfId; +import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.CloudRegion; +import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.InstanceGroup; +import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Network; import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList; +import org.onap.vid.aai.model.AaiGetPnfResponse; import org.onap.vid.aai.model.AaiGetPnfs.Pnf; import org.onap.vid.aai.model.AaiGetServicesRequestModel.GetServicesAAIRespone; import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse; +import org.onap.vid.aai.model.CustomQuerySimpleResult; +import org.onap.vid.aai.model.GetServiceModelsByDistributionStatusResponse; +import org.onap.vid.aai.model.LogicalLinkResponse; +import org.onap.vid.aai.model.OwningEntityResponse; +import org.onap.vid.aai.model.PortDetailsTranslator; +import org.onap.vid.aai.model.ProjectResponse; +import org.onap.vid.aai.model.Properties; +import org.onap.vid.aai.model.ResourceType; +import org.onap.vid.aai.model.ServiceRelationships; +import org.onap.vid.aai.model.SimpleResult; import org.onap.vid.aai.util.AAIRestInterface; import org.onap.vid.aai.util.CacheProvider; import org.onap.vid.aai.util.VidObjectMapperType; @@ -51,23 +85,6 @@ import org.onap.vid.utils.Unchecked; import org.springframework.http.HttpMethod; import org.springframework.web.util.UriUtils; -import javax.inject.Inject; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URI; -import java.net.URLEncoder; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.function.Function; - -import static java.util.Collections.emptyList; -import static java.util.stream.Collectors.toMap; -import static org.apache.commons.lang3.ObjectUtils.defaultIfNull; - /** * Created by Oren on 7/4/17. @@ -233,7 +250,7 @@ public class AaiClient implements AaiClientInterface { @Override public boolean isNodeTypeExistsByName(String name, ResourceType type) { - if (StringUtils.isEmpty(name)) { + if (isEmpty(name)) { throw new GenericUncheckedException("Empty resource-name provided to searchNodeTypeByName; request is rejected as this will cause full resources listing"); } @@ -697,7 +714,7 @@ public class AaiClient implements AaiClientInterface { String propKey = checkForNull((String) innerObj.get("property-key")); String propVal = checkForNull((String) innerObj.get("property-value")); - if (propKey.equalsIgnoreCase("tenant.tenant-name")) { + if (equalsIgnoreCase(propKey, "tenant.tenant-name")) { tenantNewObj.put("tenantName", propVal); } } @@ -708,11 +725,11 @@ public class AaiClient implements AaiClientInterface { String rShipKey = checkForNull((String) inner2Obj.get("relationship-key")); String rShipVal = checkForNull((String) inner2Obj.get("relationship-value")); - if (rShipKey.equalsIgnoreCase("cloud-region.cloud-owner")) { + if (equalsIgnoreCase(rShipKey, "cloud-region.cloud-owner")) { tenantNewObj.put("cloudOwner", rShipVal); - } else if (rShipKey.equalsIgnoreCase("cloud-region.cloud-region-id")) { + } else if (equalsIgnoreCase(rShipKey, "cloud-region.cloud-region-id")) { tenantNewObj.put("cloudRegionID", rShipVal); - } else if (rShipKey.equalsIgnoreCase("tenant.tenant-id")) { + } else if (equalsIgnoreCase(rShipKey, "tenant.tenant-id")) { tenantNewObj.put("tenantID", rShipVal); } } @@ -768,12 +785,12 @@ public class AaiClient implements AaiClientInterface { @Override public GetTenantsResponse getHomingDataByVfModule(String vnfInstanceId, String vfModuleId) { - if (StringUtils.isEmpty(vnfInstanceId)||StringUtils.isEmpty(vfModuleId)){ + if (isEmpty(vnfInstanceId)|| isEmpty(vfModuleId)){ throw new GenericUncheckedException("Failed to retrieve homing data associated to vfModule from A&AI, VNF InstanceId or VF Module Id is missing."); } Response resp = doAaiGet("network/generic-vnfs/generic-vnf/" + vnfInstanceId +"/vf-modules/vf-module/"+ vfModuleId, false); String responseAsString = parseForTenantsByServiceSubscription("vserver",resp.readEntity(String.class)); - if (responseAsString.equals("")){ + if (isEmpty(responseAsString)){ throw new GenericUncheckedException( String.format("A&AI has no homing data associated to vfModule '%s' of vnf '%s'", vfModuleId, vnfInstanceId)); } else { @@ -822,7 +839,7 @@ public class AaiClient implements AaiClientInterface { Response resp = doAaiGet(url, false); String responseAsString = parseForTenantsByServiceSubscription("tenant",resp.readEntity(String.class)); - if (StringUtils.isEmpty(responseAsString)){ + if (isEmpty(responseAsString)){ throw new ParsingGetTenantsResponseFailure(String.format("A&AI has no LCP Region & Tenants associated to subscriber '%s' and service type '%s'", globalCustomerId, serviceType)); } else { diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java index fdbe418ea..43be049a6 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java @@ -21,21 +21,19 @@ package org.onap.vid.aai; import com.fasterxml.jackson.databind.JsonNode; +import java.net.URI; +import java.util.List; +import java.util.Map; +import javax.ws.rs.core.Response; import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList; import org.onap.vid.aai.model.AaiGetPnfs.Pnf; import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse; -import org.onap.vid.aai.model.CustomQuerySimpleResult; import org.onap.vid.aai.model.PortDetailsTranslator; import org.onap.vid.aai.model.Properties; import org.onap.vid.aai.model.ResourceType; import org.onap.vid.model.SubscriberList; import org.onap.vid.model.probes.ExternalComponentStatus; -import javax.ws.rs.core.Response; -import java.net.URI; -import java.util.List; -import java.util.Map; - /** * Created by Oren on 7/4/17. */ diff --git a/vid-app-common/src/test/java/org/onap/vid/services/JobsBrokerServiceTest.java b/vid-app-common/src/test/java/org/onap/vid/services/JobsBrokerServiceTest.java index 7b51225f3..85cf23edd 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/JobsBrokerServiceTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/JobsBrokerServiceTest.java @@ -21,8 +21,45 @@ package org.onap.vid.services; +import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static java.util.stream.Collectors.toList; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.both; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.onap.vid.job.Job.JobStatus.COMPLETED; +import static org.onap.vid.job.Job.JobStatus.CREATING; +import static org.onap.vid.job.Job.JobStatus.FAILED; +import static org.onap.vid.job.Job.JobStatus.IN_PROGRESS; +import static org.onap.vid.job.Job.JobStatus.PAUSE; +import static org.onap.vid.job.Job.JobStatus.PENDING; +import static org.onap.vid.job.Job.JobStatus.RESOURCE_IN_PROGRESS; +import static org.onap.vid.job.Job.JobStatus.STOPPED; +import static org.onap.vid.utils.Streams.not; +import static org.testng.Assert.assertNotNull; +import static org.testng.AssertJUnit.assertEquals; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import java.lang.reflect.Method; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeoutException; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import javax.inject.Inject; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; @@ -53,27 +90,6 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; -import javax.inject.Inject; -import java.lang.reflect.Method; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.*; -import java.util.concurrent.*; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static java.util.stream.Collectors.toList; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.both; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.onap.vid.job.Job.JobStatus.*; -import static org.onap.vid.utils.Streams.not; -import static org.testng.Assert.assertNotNull; -import static org.testng.AssertJUnit.assertEquals; - @ContextConfiguration(classes = {DataSourceConfig.class, SystemProperties.class, JobAdapterConfig.class}) public class JobsBrokerServiceTest extends AbstractTestNGSpringContextTests { @@ -85,7 +101,7 @@ public class JobsBrokerServiceTest extends AbstractTestNGSpringContextTests { private final Set<Long> threadsIds = new ConcurrentSkipListSet<>(); - private final long FEW = 500; + private final long FEW = 1000; private final String JOBS_SHOULD_MATCH = "the jobs that added and those that pulled must be the same"; private final String JOBS_PEEKED_SHOULD_MATCH = "the jobs that added and those that peeked must be the same"; |