diff options
author | Michael Lando <ml636r@att.com> | 2017-02-19 10:28:42 +0200 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2017-02-19 10:51:01 +0200 |
commit | 451a3400b76511393c62a444f588a4ed15f4a549 (patch) | |
tree | e4f5873a863d1d3e55618eab48b83262f874719d /catalog-fe | |
parent | 5abfe4e1fb5fae4bbd5fbc340519f52075aff3ff (diff) |
Initial OpenECOMP SDC commit
Change-Id: I0924d5a6ae9cdc161ae17c68d3689a30d10f407b
Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'catalog-fe')
196 files changed, 9321 insertions, 0 deletions
diff --git a/catalog-fe/.gitignore b/catalog-fe/.gitignore new file mode 100644 index 0000000000..d21b91d9b5 --- /dev/null +++ b/catalog-fe/.gitignore @@ -0,0 +1,5 @@ +/target +/target +/target +/target +/build/ diff --git a/catalog-fe/pom.xml b/catalog-fe/pom.xml new file mode 100644 index 0000000000..cb41d46b6c --- /dev/null +++ b/catalog-fe/pom.xml @@ -0,0 +1,441 @@ +<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"> + + <modelVersion>4.0.0</modelVersion> + <artifactId>catalog-fe</artifactId> + <packaging>war</packaging> + + + + <parent> + <groupId>org.openecomp.sdc</groupId> + <artifactId>sdc-main</artifactId> + <version>1.0.0-SNAPSHOT</version> + </parent> + + + + <dependencies> + + <dependency> + <groupId>org.functionaljava</groupId> + <artifactId>functionaljava</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>security-utils</artifactId> + <version>${security-utils.version}</version> + <scope>compile</scope> </dependency> + + <dependency> + <groupId>org.openecomp.sdc</groupId> + <artifactId>common-app-api</artifactId> + <version>${common-app-api.version}</version> + </dependency> + + <!-- File changes listener --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-core</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.codehaus.groovy</groupId> + <artifactId>groovy-all</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.codehaus.janino</groupId> + <artifactId>janino</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-jci-core</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.glassfish.jersey.containers</groupId> + <artifactId>jersey-container-servlet</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.glassfish.jersey.media</groupId> + <artifactId>jersey-media-multipart</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.glassfish.jersey.media</groupId> + <artifactId>jersey-media-moxy</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>javax.mail</groupId> + <artifactId>javax.mail-api</artifactId> + <version>1.5.2</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.glassfish.jersey.media</groupId> + <artifactId>jersey-media-json-jackson</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-core</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-annotations</artifactId> + <scope>compile</scope> + </dependency> + + <!-- http client --> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpmime</artifactId> + <version>4.3.2</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <scope>compile</scope> + </dependency> + <!-- http client END --> + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <scope>provided</scope> + </dependency> + + <!-- JSON and YAML Parsing --> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-yaml</artifactId> + <scope>compile</scope> + </dependency> + + <!-- Jetty Proxy --> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-proxy</artifactId> + <version>${jetty.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlets</artifactId> + <version>${jetty.servlets.version}</version> + <scope>compile</scope> + </dependency> + + <!-- Proxy servlet --> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <scope>compile</scope> + </dependency> + + <!-- Aspects --> + <dependency> + <groupId>com.jcabi</groupId> + <artifactId>jcabi-aspects</artifactId> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.aspectj</groupId> + <artifactId>aspectjrt</artifactId> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <scope>compile</scope> + </dependency> + + <!-- Inserted for ECOMP Portal Integration --> + <dependency> + <groupId>org.openecomp.ecompsdkos</groupId> + <artifactId>ecompFW</artifactId> + <version>${ecomp.version}</version> + <scope>compile</scope> + <exclusions> + <exclusion> + <groupId>com.att.nsa</groupId> + <artifactId>cambriaClient</artifactId> + </exclusion> + <exclusion> + <artifactId>slf4j-log4j12</artifactId> + <groupId>org.slf4j</groupId> + </exclusion> + </exclusions> + </dependency> + + <!-- TEST --> + <dependency> + <groupId>org.glassfish.jersey.test-framework.providers</groupId> + <artifactId>jersey-test-framework-provider-bundle</artifactId> + <type>pom</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlet</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-webapp</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + + + + + <build> + + <finalName>${project.artifactId}-${project.version}</finalName> + + <plugins> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>2.6</version> + <configuration> + <archive> + <manifest> + <addDefaultImplementationEntries>true</addDefaultImplementationEntries> + </manifest> + </archive> + + <webResources> + <resource> + <directory>src/main/resources</directory> + </resource> + </webResources> + </configuration> + </plugin> + + + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-dependencies</id> + <phase>package</phase> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <includeScope>compile</includeScope> + </configuration> + </execution> + <execution> + <id>copy-installed</id> + <phase>install</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <artifactItems> + <artifactItem> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + <type>${project.packaging}</type> + </artifactItem> + </artifactItems> + <outputDirectory>${project.parent.basedir}/sdc-os-chef/sdc-frontend/</outputDirectory> + </configuration> + </execution> + + </executions> + </plugin> + + + + <plugin> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-maven-plugin</artifactId> + <version>9.0.6.v20130930</version> + <configuration> + <contextPath>/</contextPath> + <webApp> + <contextPath>/</contextPath> + <webInfIncludeJarPattern>.*/.*jersey-[^/]\.jar$</webInfIncludeJarPattern> + </webApp> + <war>${project.build.directory}/${project.build.finalName}.war</war> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.7</version> + </plugin> + + <plugin> + <groupId>com.jcabi</groupId> + <artifactId>jcabi-maven-plugin</artifactId> + <version>${jcabi.plugin.version}</version> + <executions> + <execution> + <goals> + <goal>ajc</goal> + </goals> + </execution> + </executions> + </plugin> + <!-- ============================================= --> + <!-- Create the TAR file --> + <!-- ============================================= --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.6</version> + <configuration> + <finalName>${project.artifactId}-${full.release.version}${build.type}</finalName> + <appendAssemblyId>false</appendAssemblyId> + <descriptor>${project.basedir}/tarball.xml</descriptor> + </configuration> + + <executions> + <execution> + <id>assembly-tar-file</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + + + <pluginManagement> + <plugins> + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + + <pluginExecution> + <pluginExecutionFilter> + <groupId>com.jcabi</groupId> + <artifactId>jcabi-maven-plugin</artifactId> + <versionRange>[0.0,)</versionRange> + <goals> + <goal>ajc</goal> + </goals> + </pluginExecutionFilter> + <action> + <execute /> + </action> + </pluginExecution> + + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + + <!-- jacbi (log injection) --> + + </plugins> + </pluginManagement> + + </build> + + + + + + +</project> diff --git a/catalog-fe/readMe.txt b/catalog-fe/readMe.txt new file mode 100644 index 0000000000..36bb65e213 --- /dev/null +++ b/catalog-fe/readMe.txt @@ -0,0 +1,14 @@ +Running Jetty + +1. in Arguments Tab add to VM Arguments: + +-Dconfig.home=C:\Git_work\D2-SDnC\catalog-fe\src\test\resources\config +-Dlog.home=C:\Git_work\D2-SDnC\catalog-fe\target\log\ +-Dlogback.configurationFile=C:\Git_work\D2-SDnC\catalog-fe\src\main\resources\config\logback.xml + +2. In Run Configuration make sure to run jetty version 8.x or newer + +3. in order to test try: +http://localhost:8080/sdc1/rest/configmgr/get +or +http://localhost:8080/sdc1/proxy
\ No newline at end of file diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java new file mode 100644 index 0000000000..e157efcda9 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java @@ -0,0 +1,15 @@ +package org.openecomp.sdc.fe; + +public class Constants { + + public static String HTTP_IV_USER = "HTTP_IV_USER"; + public static String USER_ID = "USER_ID"; + public static String HTTP_CSP_FIRSTNAME = "HTTP_CSP_FIRSTNAME"; + public static String HTTP_CSP_LASTNAME = "HTTP_CSP_LASTNAME"; + public static String HTTP_IV_REMOTE_ADDRESS = "HTTP_IV_REMOTE_ADDRESS"; + public static String HTTP_CSP_WSTYPE = "HTTP_CSP_WSTYPE"; + public static String HTTP_CSP_EMAIL = "HTTP_CSP_EMAIL"; + + public static final String WEBSEAL_USER_ID_HEADER = "csp-attuid"; + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java new file mode 100644 index 0000000000..93e17144c0 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/client/BackendClient.java @@ -0,0 +1,179 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.client; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.core.Response; + +import org.apache.http.HttpStatus; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.entity.InputStreamEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContextBuilder; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.api.ResponseInfo; +import org.openecomp.sdc.common.api.ResponseInfo.ResponseStatusEnum; +import org.openecomp.sdc.fe.impl.Audit; +import org.openecomp.sdc.fe.impl.HttpRequestInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BackendClient { + + private static Logger log = LoggerFactory.getLogger(BackendClient.class.getName()); + + private HostnameVerifier hostnameVerifier = null; + + private CloseableHttpClient backendHttpClient; + private String backendHost; + private String backendContext; + + public BackendClient(String protocol, String backendHost, String backendContext) { + + this.backendContext = backendContext; + hostnameVerifier = new HostnameVerifier() { + + public boolean verify(String hostname, SSLSession session) { + + return true; + } + }; + + if (protocol == null || protocol.isEmpty() || protocol.equals(Constants.HTTP)) { + backendHttpClient = HttpClients.createDefault(); + this.backendHost = Constants.HTTP + "://" + backendHost; + } else { + // NULL can be returned in case of error + backendHttpClient = getSslClient(); + this.backendHost = Constants.HTTPS + "://" + backendHost; + } + + } + + public HostnameVerifier getHostnameVerifier() { + return hostnameVerifier; + } + + private CloseableHttpClient getSslClient() { + + CloseableHttpClient httpClient = null; + try { + + // SSLContextBuilder is not thread safe + SSLContextBuilder builder = new SSLContextBuilder(); + builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); + SSLContext sslContext = builder.build(); + + httpClient = HttpClientBuilder.create().setSSLHostnameVerifier(hostnameVerifier).setSslcontext(sslContext) + .build(); + + } catch (Exception e) { + log.error("Failed to create https client", e); + return null; + } + + return httpClient; + + } + + public ResponseInfo forwardRequestToBackend(HttpRequestInfo requestInfo, List<String> requiredHeaders, + AsyncResponse asyncResponse) { + + ResponseInfo responseInfo = null; + log.debug("forwardRequestToBackend"); + if (backendHttpClient == null) { + responseInfo = new ResponseInfo(ResponseStatusEnum.INTERNAL_ERROR, "Failed to create https client"); + Audit.error(log, requestInfo, HttpStatus.SC_INTERNAL_SERVER_ERROR); + asyncResponse.resume( + Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).entity(responseInfo.toString()).build()); + return responseInfo; + } + + CloseableHttpResponse response = null; + int status = HttpStatus.SC_INTERNAL_SERVER_ERROR; + HttpPost httpPost = new HttpPost(backendHost + backendContext); + try { + + log.debug("Executing request {}", httpPost.getRequestLine()); + httpPost.setEntity(new InputStreamEntity(requestInfo.getRequestData())); + boolean allHeadersAreSet = copyHeadersToRequest(requiredHeaders, requestInfo, httpPost); + if (!allHeadersAreSet) { + responseInfo = new ResponseInfo(ResponseStatusEnum.MISSING_HEADERS, "Required headers are missing"); + asyncResponse + .resume(Response.status(HttpStatus.SC_BAD_REQUEST).entity(responseInfo.toString()).build()); + Audit.error(log, requestInfo, HttpStatus.SC_BAD_REQUEST); + } else { + response = backendHttpClient.execute(httpPost); + status = response.getStatusLine().getStatusCode(); + asyncResponse.resume(Response.status(status).entity(response.getEntity()).build()); + } + Audit.info(log, requestInfo, status); + + } catch (IOException e) { + log.error("connection with backend failed with exception", e); + responseInfo = new ResponseInfo(ResponseStatusEnum.INTERNAL_ERROR, e.getMessage()); + Audit.error(log, requestInfo, HttpStatus.SC_INTERNAL_SERVER_ERROR); + asyncResponse.resume( + Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).entity(responseInfo.toString()).build()); + } finally { + try { + if (response != null) { + response.close(); + } + backendHttpClient.close(); + } catch (IOException e) { + log.error("failed to close httpClient: " + e.getMessage()); + } + + } + + return responseInfo; + + } + + private boolean copyHeadersToRequest(List<String> requiredHeaders, HttpRequestInfo requestInfo, HttpPost httpPost) { + boolean allHeadersAreSet = false; + Map<String, String> originalHeaders = requestInfo.getHeaders(); + for (String headerName : requiredHeaders) { + String headerValue = originalHeaders.get(headerName); + if (headerValue != null) { + httpPost.setHeader(headerName, headerValue); + } else { + log.error("missing required header " + headerName); + return allHeadersAreSet; + } + } + allHeadersAreSet = true; + return allHeadersAreSet; + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/Audit.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/Audit.java new file mode 100644 index 0000000000..449d8a932d --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/Audit.java @@ -0,0 +1,73 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.impl; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.openecomp.sdc.common.api.Constants; +import org.slf4j.Logger; + +public class Audit { + + private Audit() { + } + + public static void error(Logger log, HttpRequestInfo requestInfo, int status) { + String errorMsg = "Internal Error"; + if (requestInfo != null && requestInfo.getHeaders() != null) { + Map<String, String> requestHeaders = requestInfo.getHeaders(); + errorMsg = String.format(Constants.ERROR_LOG_FORMAT, requestHeaders.get(Constants.USER_ID_HEADER), + requestHeaders.get(Constants.FIRST_NAME_HEADER) + " " + + requestHeaders.get(Constants.LAST_NAME_HEADER), + requestHeaders.get(Constants.ORIGIN_HEADER), requestHeaders.get(Constants.ACCESS_HEADER), + requestInfo.getRequestURL(), status); + } + log.error(errorMsg); + } + + public static void error(Logger log, HttpServletRequest request, int status) { + String errorMsg = "Internal Error"; + if (request != null) { + + errorMsg = String.format(Constants.ERROR_LOG_FORMAT, request.getHeader(Constants.USER_ID_HEADER), + request.getHeader(Constants.FIRST_NAME_HEADER) + " " + + request.getHeader(Constants.LAST_NAME_HEADER), + request.getHeader(Constants.ORIGIN_HEADER), request.getHeader(Constants.ACCESS_HEADER), + request.getRequestURL(), status); + } + log.error(errorMsg); + } + + public static void info(Logger log, HttpRequestInfo requestInfo, int status) { + String errorMsg = "Internal Error"; + if (requestInfo != null && requestInfo.getHeaders() != null) { + Map<String, String> requestHeaders = requestInfo.getHeaders(); + errorMsg = String.format(Constants.ERROR_LOG_FORMAT, requestHeaders.get(Constants.USER_ID_HEADER), + requestHeaders.get(Constants.FIRST_NAME_HEADER) + " " + + requestHeaders.get(Constants.LAST_NAME_HEADER), + requestHeaders.get(Constants.ORIGIN_HEADER), requestHeaders.get(Constants.ACCESS_HEADER), + requestInfo.getRequestURL(), status); + } + log.info(errorMsg); + } +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/CrudOperation.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/CrudOperation.java new file mode 100644 index 0000000000..27fc02c00a --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/CrudOperation.java @@ -0,0 +1,26 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.impl; + +public enum CrudOperation { + + CREATE, RETRIEVE, UPDATE, DELETE +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/HttpRequestInfo.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/HttpRequestInfo.java new file mode 100644 index 0000000000..6a2a41fe1d --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/HttpRequestInfo.java @@ -0,0 +1,77 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.impl; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +public class HttpRequestInfo { + + public HttpRequestInfo(HttpServletRequest request, Map<String, String> headersMap, String data) { + headers = headersMap; + requestURL = request.getRequestURI(); + requestData = new ByteArrayInputStream(data.getBytes()); + originServletContext = request.getContextPath(); + } + + private Map<String, String> headers; + private String requestURL; + private InputStream requestData; + private String originServletContext; + + public Map<String, String> getHeaders() { + return headers; + } + + public void setHeaders(Map<String, String> headers) { + this.headers = headers; + } + + public String getRequestURL() { + return requestURL; + } + + public void setRequestURL(String requestURL) { + this.requestURL = requestURL; + } + + public InputStream getRequestData() { + return requestData; + } + + public void setRequestData(InputStream requestData) { + this.requestData = requestData; + } + + public String getOriginServletContext() { + return originServletContext; + } + + public void setOriginServletContext(String originServletContext) { + this.originServletContext = originServletContext; + } +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/ImportMetadata.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/ImportMetadata.java new file mode 100644 index 0000000000..0d0aa7bd4c --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/ImportMetadata.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.impl; + +public class ImportMetadata { + + private String name; + private long size; + private String mime; + private String creator; + private String md5Checksum; + + public ImportMetadata(String name, long size, String mime, String creator, String md5Checksum) { + super(); + this.name = name; + this.size = size; + this.mime = mime; + this.creator = creator; + this.md5Checksum = md5Checksum; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getSize() { + return size; + } + + public void setSize(long size) { + this.size = size; + } + + public String getMime() { + return mime; + } + + public void setMime(String mime) { + this.mime = mime; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getMd5Checksum() { + return md5Checksum; + } + + public void setMd5Checksum(String md5Checksum) { + this.md5Checksum = md5Checksum; + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java new file mode 100644 index 0000000000..b132c46866 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java @@ -0,0 +1,85 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.listen; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.impl.ExternalConfiguration; +import org.openecomp.sdc.common.listener.AppContextListener; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.monitoring.FeMonitoringService; +import org.openecomp.sdc.fe.servlets.HealthCheckService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FEAppContextListener extends AppContextListener implements ServletContextListener { + + private static Logger log = LoggerFactory.getLogger(FEAppContextListener.class.getName()); + + public void contextInitialized(ServletContextEvent context) { + + super.contextInitialized(context); + + ConfigurationManager configurationManager = new ConfigurationManager( + ExternalConfiguration.getConfigurationSource()); + log.debug("loading configuration from configDir:{} appName:{}", ExternalConfiguration.getConfigDir(), + ExternalConfiguration.getAppName()); + context.getServletContext().setAttribute(Constants.CONFIGURATION_MANAGER_ATTR, configurationManager); + + // Health Check service + HealthCheckService hcs = new HealthCheckService(context.getServletContext()); + hcs.start(configurationManager.getConfiguration().getHealthCheckIntervalInSeconds(5)); + context.getServletContext().setAttribute(Constants.HEALTH_CHECK_SERVICE_ATTR, hcs); + + // Monitoring service + FeMonitoringService fms = new FeMonitoringService(context.getServletContext()); + fms.start(configurationManager.getConfiguration().getSystemMonitoring().getProbeIntervalInSeconds(15)); + + if (configurationManager.getConfiguration() == null) { + log.debug("ERROR: configuration was not properly loaded"); + return; + } + + ExecutorService executorPool = Executors + .newFixedThreadPool(configurationManager.getConfiguration().getThreadpoolSize()); + context.getServletContext().setAttribute(Constants.THREAD_EXECUTOR_ATTR, executorPool); + + log.debug("After executing {}", this.getClass()); + } + + public void contextDestroyed(ServletContextEvent context) { + + ExecutorService executorPool = (ExecutorService) context.getServletContext() + .getAttribute(Constants.THREAD_EXECUTOR_ATTR); + if (executorPool != null) { + executorPool.shutdown(); + } + + super.contextDestroyed(context); + + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/MyObjectMapperProvider.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/MyObjectMapperProvider.java new file mode 100644 index 0000000000..f891ba4e3f --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/MyObjectMapperProvider.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.listen; + +import javax.ws.rs.ext.ContextResolver; +import javax.ws.rs.ext.Provider; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +@Provider +public class MyObjectMapperProvider implements ContextResolver<ObjectMapper> { + final ObjectMapper defaultObjectMapper; + + public MyObjectMapperProvider() { + defaultObjectMapper = createDefaultMapper(); + } + + @Override + public ObjectMapper getContext(Class<?> type) { + return defaultObjectMapper; + } + + private static ObjectMapper createDefaultMapper() { + final ObjectMapper result = new ObjectMapper(); + result.configure(SerializationFeature.INDENT_OUTPUT, true); + + return result; + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigMgrServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigMgrServlet.java new file mode 100644 index 0000000000..7792225742 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigMgrServlet.java @@ -0,0 +1,88 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; + +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.rest.api.RestConfigurationInfo; +import org.openecomp.sdc.common.servlets.BasicServlet; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Root resource (exposed at "/" path) + */ +@Path("/configmgr") +public class ConfigMgrServlet extends BasicServlet { + + private static Logger log = LoggerFactory.getLogger(ConfigMgrServlet.class.getName()); + + @GET + @Path("/get") + @Produces(MediaType.APPLICATION_JSON) + public String getConfig(@Context final HttpServletRequest request, @QueryParam("type") String type) { + + String result = null; + + ServletContext context = request.getSession().getServletContext(); + + ConfigurationManager configurationManager = (ConfigurationManager) context + .getAttribute(Constants.CONFIGURATION_MANAGER_ATTR); + + if (type == null || type.equals("configuration")) { + + Configuration configuration = configurationManager.getConfiguration(); + if (configuration == null) { + log.warn("Configuration of type " + Configuration.class + " was not found"); + } else { + log.info("The value returned from getConfig is " + configuration); + + result = gson.toJson(configuration); + + } + } else if (type.equals("rest")) { + + RestConfigurationInfo configuration = configurationManager.getRestClientConfiguration(); + if (configuration == null) { + log.warn("Configuration of type " + RestConfigurationInfo.class + " was not found"); + } else { + log.info("The value returned from getConfig is " + configuration); + + result = gson.toJson(configuration); + + } + + } + return result; + + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java new file mode 100644 index 0000000000..92bb9e8743 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java @@ -0,0 +1,114 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import java.util.concurrent.TimeUnit; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.Suspended; +import javax.ws.rs.container.TimeoutHandler; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.openecomp.sdc.common.api.ConfigurationSource; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.servlets.BasicServlet; +import org.openecomp.sdc.fe.config.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Root resource (exposed at "/" path) + */ +@Path("/config") +public class ConfigServlet extends BasicServlet { + + private static Logger log = LoggerFactory.getLogger(ConfigServlet.class.getName()); + + @GET + @Path("/get") + @Produces(MediaType.APPLICATION_JSON) + public String getConfig(@Context final HttpServletRequest request) { + + String result = null; + + ServletContext context = request.getSession().getServletContext(); + + ConfigurationSource configurationSource = (ConfigurationSource) context + .getAttribute(Constants.CONFIGURATION_SOURCE_ATTR); + if (configurationSource != null) { + Configuration configuration = configurationSource.getAndWatchConfiguration(Configuration.class, null); + + if (configuration == null) { + log.warn("Configuration of type " + Configuration.class + " was not found"); + } + log.debug("{}", configuration); + if (log.isInfoEnabled()) { + log.info("Info level ENABLED..."); + } + log.info("The value returned from getConfig is " + configuration); + + result = gson.toJson(configuration); + + } else { + log.warn("Source Configuration object was not initialized in the context."); + } + + return result; + + } + + @GET + @Path("/asyncget") + public void asyncGet(@Suspended final AsyncResponse asyncResponse) { + + asyncResponse.setTimeoutHandler(new TimeoutHandler() { + + @Override + public void handleTimeout(AsyncResponse asyncResponse) { + asyncResponse.resume( + Response.status(Response.Status.SERVICE_UNAVAILABLE).entity("Operation time out.").build()); + } + }); + asyncResponse.setTimeout(3, TimeUnit.SECONDS); + + new Thread(new Runnable() { + @Override + public void run() { + String result = veryExpensiveOperation(); + asyncResponse.resume(result); + } + + private String veryExpensiveOperation() { + + return "veryExpensiveOperation SUCCESS"; + + } + }).start(); + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeHealthCheckServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeHealthCheckServlet.java new file mode 100644 index 0000000000..da5b321339 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeHealthCheckServlet.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; + +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.servlets.BasicServlet; + +import com.jcabi.aspects.Loggable; + +@Loggable(prepend = true, value = Loggable.TRACE, trim = false) +@Path("/healthCheck") +public class FeHealthCheckServlet extends BasicServlet { + + // private static Logger log = + // LoggerFactory.getLogger(FeHealthCheckServlet.class.getName()); + + @GET + public Response getFEandBeHealthCheck(@Context final HttpServletRequest request) { + ServletContext context = request.getSession().getServletContext(); + HealthCheckService hcs = ((HealthCheckService) context.getAttribute(Constants.HEALTH_CHECK_SERVICE_ATTR)); + return hcs.getFeHealth(); + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java new file mode 100644 index 0000000000..1cd28deb7a --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java @@ -0,0 +1,214 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import java.net.URI; +import java.util.concurrent.TimeUnit; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.eclipse.jetty.client.api.Response; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.config.EcompErrorName; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.config.FeEcompErrorManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; + +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; + +public class FeProxyServlet extends SSLProxyServlet { + private static final long serialVersionUID = 1L; + private static final String URL = "%s://%s:%s%s"; + private static Logger log = LoggerFactory.getLogger(FeProxyServlet.class.getName()); + private static Cache<String, MdcData> mdcDataCache = CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build(); + + @Override + public URI rewriteURI(HttpServletRequest request) { + try { + logFeRequest(request); + } catch (Exception e) { + FeEcompErrorManager.getInstance().processEcompError(EcompErrorName.FeHttpLoggingError, "FE Request"); + FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Request"); + log.error("Unexpected FE request logging error :", e); + } + String originalUrl = request.getRequestURL().toString(); + String redirectedUrl = getModifiedUrl(request); + + log.debug("FeProxyServlet Redirecting request from: {} , to: {}", originalUrl, redirectedUrl); + + return URI.create(redirectedUrl); + } + + @Override + protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { + try { + logFeResponse(request, proxyResponse); + } catch (Exception e) { + FeEcompErrorManager.getInstance().processEcompError(EcompErrorName.FeHttpLoggingError, "FE Response"); + FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); + log.error("Unexpected FE response logging error :", e); + } + super.onResponseSuccess(request, response, proxyResponse); + } + + private void logFeRequest(HttpServletRequest httpRequest) { + + MDC.clear(); + + Long transactionStartTime = System.currentTimeMillis(); + // UUID - In FE, we are supposed to get the below header from UI. + // We do not generate it if it's missing - BE does. + String uuid = httpRequest.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER); + String serviceInstanceID = httpRequest.getHeader(Constants.X_ECOMP_SERVICE_ID_HEADER); + + if (uuid != null && uuid.length() > 0) { + // User Id for logging + String userId = httpRequest.getHeader(Constants.USER_ID_HEADER); + + String remoteAddr = httpRequest.getRemoteAddr(); + String localAddr = httpRequest.getLocalAddr(); + + mdcDataCache.put(uuid, new MdcData(serviceInstanceID, userId, remoteAddr, localAddr, transactionStartTime)); + + updateMdc(uuid, serviceInstanceID, userId, remoteAddr, localAddr, null); + } + inHttpRequest(httpRequest); + } + + private void logFeResponse(HttpServletRequest request, Response proxyResponse) { + String uuid = request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER); + String transactionRoundTime = null; + + if (uuid != null) { + MdcData mdcData = mdcDataCache.getIfPresent(uuid); + if (mdcData != null) { + Long transactionStartTime = mdcData.getTransactionStartTime(); + if (transactionStartTime != null) {// should'n ever be null, but + // just to be defensive + transactionRoundTime = Long.toString(System.currentTimeMillis() - transactionStartTime); + } + updateMdc(uuid, mdcData.getServiceInstanceID(), mdcData.getUserId(), mdcData.getRemoteAddr(), mdcData.getLocalAddr(), transactionRoundTime); + } + } + outHttpResponse(proxyResponse); + + MDC.clear(); + } + + // Extracted for purpose of clear method name, for logback %M parameter + private void inHttpRequest(HttpServletRequest httpRequest) { + log.info("{} {} {}", httpRequest.getMethod(), httpRequest.getRequestURI(), httpRequest.getProtocol()); + } + + // Extracted for purpose of clear method name, for logback %M parameter + private void outHttpResponse(Response proxyResponse) { + log.info("SC=\"{}\"", proxyResponse.getStatus()); + } + + private void updateMdc(String uuid, String serviceInstanceID, String userId, String remoteAddr, String localAddr, String transactionStartTime) { + MDC.put("uuid", uuid); + MDC.put("serviceInstanceID", serviceInstanceID); + MDC.put("userId", userId); + MDC.put("remoteAddr", remoteAddr); + MDC.put("localAddr", localAddr); + MDC.put("timer", transactionStartTime); + } + + private class MdcData { + private String serviceInstanceID; + private String userId; + private String remoteAddr; + private String localAddr; + private Long transactionStartTime; + + public MdcData(String serviceInstanceID, String userId, String remoteAddr, String localAddr, Long transactionStartTime) { + super(); + this.serviceInstanceID = serviceInstanceID; + this.userId = userId; + this.remoteAddr = remoteAddr; + this.localAddr = localAddr; + this.transactionStartTime = transactionStartTime; + } + + public Long getTransactionStartTime() { + return transactionStartTime; + } + + public String getUserId() { + return userId; + } + + public String getRemoteAddr() { + return remoteAddr; + } + + public String getLocalAddr() { + return localAddr; + } + + public String getServiceInstanceID() { + return serviceInstanceID; + } + } + + public String getModifiedUrl(HttpServletRequest request) { + + Configuration config = getConfiguration(request); + if (config == null) { + log.error("failed to retrive configuration."); + } + String scheme = config.getBeProtocol(); + String uri = request.getRequestURI().toString(); + StringBuilder url = new StringBuilder(); + url.append(scheme).append("://").append(config.getBeHost()); + url.append(":"); + if (config.getBeProtocol().equals(BE_PROTOCOL.HTTP.getProtocolName())) { + url.append(config.getBeHttpPort()); + } else { + url.append(config.getBeSslPort()); + } + url.append(uri); + String queryString = request.getQueryString(); // d=789 + if (queryString != null) { + url.append("?").append(queryString); + } + + String redirectedUrl = url.toString(); + String onboardingForwardContext = config.getOnboardingForwardContext(); + if (onboardingForwardContext == null || onboardingForwardContext.isEmpty()) { + onboardingForwardContext = "/onboarding-api"; + } + redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/onboarding-api", onboardingForwardContext); + redirectedUrl = redirectedUrl.replace("/sdc1/feProxy", "/sdc2"); + return redirectedUrl; + + } + + private Configuration getConfiguration(HttpServletRequest request) { + Configuration config = ((ConfigurationManager) request.getSession().getServletContext().getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); + return config; + } +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java new file mode 100644 index 0000000000..338e8d4c01 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java @@ -0,0 +1,219 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; + +import javax.servlet.ServletContext; +import javax.ws.rs.core.Response; + +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.common.api.HealthCheckInfo; +import org.openecomp.sdc.common.api.HealthCheckInfo.HealthCheckComponent; +import org.openecomp.sdc.common.api.HealthCheckInfo.HealthCheckStatus; +import org.openecomp.sdc.common.api.HealthCheckWrapper; +import org.openecomp.sdc.common.config.EcompErrorName; +import org.openecomp.sdc.common.impl.ExternalConfiguration; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.config.FeEcompErrorManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; + +public class HealthCheckService { + + private class HealthStatus { + public String body; + public int statusCode; + + public HealthStatus(int code, String body) { + this.body = body; + this.statusCode = code; + } + } + + private static final String URL = "%s://%s:%s/sdc2/rest/healthCheck"; + private static Logger healthLogger = LoggerFactory.getLogger("asdc.fe.healthcheck"); + private static Logger log = LoggerFactory.getLogger(HealthCheckService.class.getName()); + + private HealthStatus lastHealthStatus = new HealthStatus(500, "{}"); + + private class HealthCheckScheduledTask implements Runnable { + @Override + public void run() { + healthLogger.trace("Executing FE Health Check Task - Start"); + HealthStatus currentHealth = checkHealth(); + int currentHealthStatus = currentHealth.statusCode; + healthLogger.trace("Executing FE Health Check Task - Status = {}", currentHealthStatus); + + // In case health status was changed, issue alarm/recovery + if (currentHealthStatus != lastHealthStatus.statusCode) { + log.trace("FE Health State Changed to {}. Issuing alarm / recovery alarm...", currentHealthStatus); + logFeAlarm(currentHealthStatus); + } + + // Anyway, update latest response + lastHealthStatus = currentHealth; + } + } + + /** + * This executor will execute the health check task. + */ + ScheduledExecutorService healthCheckExecutor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() { + @Override + public Thread newThread(Runnable r) { + return new Thread(r, "FE-Health-Check-Thread"); + } + }); + private ServletContext context; + + public HealthCheckService(ServletContext context) { + this.context = context; + } + + public void start(int interval) { + this.healthCheckExecutor.scheduleAtFixedRate(new HealthCheckScheduledTask(), 0, interval, TimeUnit.SECONDS); + } + + /** + * To be used by the HealthCheckServlet + * + * @return + */ + public Response getFeHealth() { + return this.buildResponse(lastHealthStatus.statusCode, lastHealthStatus.body); + } + + private HealthStatus checkHealth() { + CloseableHttpClient httpClient = null; + try { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + Configuration config = ((ConfigurationManager) context.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)) + .getConfiguration(); + String redirectedUrl = String.format(URL, config.getBeProtocol(), config.getBeHost(), + config.getBeHttpPort()); + httpClient = getHttpClient(config); + HttpGet httpGet = new HttpGet(redirectedUrl); + CloseableHttpResponse beResponse; + int beStatus; + String feAggHealthCheck; + try { + beResponse = httpClient.execute(httpGet); + beStatus = beResponse.getStatusLine().getStatusCode(); + String beJsonResponse = EntityUtils.toString(beResponse.getEntity()); + feAggHealthCheck = getFeHealthCheckInfos(gson, beJsonResponse); + } catch (Exception e) { + log.error("Health Check error when trying to connect to BE", e); + String beDowneResponse = gson.toJson(getBeDownCheckInfos()); + return new HealthStatus(500, beDowneResponse); + } + return new HealthStatus(beStatus, feAggHealthCheck); + } catch (Exception e) { + FeEcompErrorManager.getInstance().processEcompError(EcompErrorName.FeHealthCheckGeneralError, "Unexpected FE Health check error"); + FeEcompErrorManager.getInstance().logFeHealthCheckGeneralError("Unexpected FE Health check error"); + log.error("Unexpected FE health check error {}", e.getMessage()); + return new HealthStatus(500, e.getMessage()); + } finally { + if (httpClient != null) { + try { + httpClient.close(); + } catch (IOException e) { + } + } + } + } + + private Response buildResponse(int status, String jsonResponse) { + healthLogger.trace("FE and BE health check status: {}", jsonResponse); + return Response.status(status).entity(jsonResponse).build(); + } + + private void logFeAlarm(int lastFeStatus) { + + switch (lastFeStatus) { + case 200: + FeEcompErrorManager.getInstance().processEcompError(EcompErrorName.FeHealthCheckRecovery, + "FE Health Recovered"); + FeEcompErrorManager.getInstance().logFeHealthCheckRecovery("FE Health Recovered"); + break; + case 500: + FeEcompErrorManager.getInstance().processEcompError(EcompErrorName.FeHealthCheckConnectionError, + "Connection with ASDC-BE is probably down"); + FeEcompErrorManager.getInstance().logFeHealthCheckError("Connection with ASDC-BE is probably down"); + break; + default: + break; + } + + } + + private String getFeHealthCheckInfos(Gson gson, String responseString) { + Type wrapperType = new TypeToken<HealthCheckWrapper>() { + }.getType(); + HealthCheckWrapper healthCheckWrapper = gson.fromJson(responseString, wrapperType); + String appVersion = ExternalConfiguration.getAppVersion(); + String description = "OK"; + healthCheckWrapper.getComponentsInfo() + .add(new HealthCheckInfo(HealthCheckComponent.FE, HealthCheckStatus.UP, appVersion, description)); + return gson.toJson(healthCheckWrapper); + } + + private HealthCheckWrapper getBeDownCheckInfos() { + List<HealthCheckInfo> healthCheckInfos = new ArrayList<HealthCheckInfo>(); + healthCheckInfos.add(new HealthCheckInfo(HealthCheckComponent.FE, HealthCheckStatus.UP, + ExternalConfiguration.getAppVersion(), "OK")); + healthCheckInfos.add(new HealthCheckInfo(HealthCheckComponent.BE, HealthCheckStatus.DOWN, null, null)); + healthCheckInfos.add(new HealthCheckInfo(HealthCheckComponent.ES, HealthCheckStatus.UNKNOWN, null, null)); + healthCheckInfos.add(new HealthCheckInfo(HealthCheckComponent.TITAN, HealthCheckStatus.UNKNOWN, null, null)); + healthCheckInfos.add(new HealthCheckInfo(HealthCheckComponent.DE, HealthCheckStatus.UNKNOWN, null, null)); + HealthCheckWrapper hcWrapper = new HealthCheckWrapper(healthCheckInfos, "UNKNOWN", "UNKNOWN"); + return hcWrapper; + } + + private CloseableHttpClient getHttpClient(Configuration config) { + int timeout = 3000; + int socketTimeout = config.getHealthCheckSocketTimeoutInMs(5000); + RequestConfig.Builder requestBuilder = RequestConfig.custom(); + requestBuilder.setConnectTimeout(timeout).setConnectionRequestTimeout(timeout).setSocketTimeout(socketTimeout); + + HttpClientBuilder builder = HttpClientBuilder.create(); + builder.setDefaultRequestConfig(requestBuilder.build()); + return builder.build(); + } +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/KibanaServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/KibanaServlet.java new file mode 100644 index 0000000000..64784b3265 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/KibanaServlet.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import java.net.URI; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.api.Response; +import org.eclipse.jetty.proxy.ProxyServlet; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class KibanaServlet extends ProxyServlet { + private static final long serialVersionUID = 1L; + private static Logger log = LoggerFactory.getLogger(KibanaServlet.class.getName()); + + @Override + public URI rewriteURI(HttpServletRequest request) { + + String originalUrl = request.getRequestURI(); + + String redirectedUrl = getModifiedUrl(request); + + log.debug("KibanaServlet Redirecting request from: {} , to: {}", originalUrl, redirectedUrl); + + return URI.create(redirectedUrl); + } + + @Override + public void customizeProxyRequest(Request proxyRequest, HttpServletRequest request) { + super.customizeProxyRequest(proxyRequest, request); + + } + + @Override + protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { + + super.onResponseSuccess(request, response, proxyResponse); + } + + public String getModifiedUrl(HttpServletRequest request) { + Configuration config = getConfiguration(request); + if (config == null) { + log.error("failed to retrive configuration."); + } + // String scheme = request.getScheme(); + String contextPath = request.getContextPath(); // /mywebapp + String servletPath = request.getServletPath(); // /servlet/MyServlet + String pathInfo = request.getPathInfo(); // /a/b;c=123 + String queryString = request.getQueryString(); // d=789 + + StringBuilder url = new StringBuilder(); + url.append(config.getKibanaProtocol()).append("://").append(config.getKibanaHost()); + url.append(":").append(config.getKibanaPort()); + url.append(contextPath).append(servletPath); + + if (pathInfo != null) { + url.append(pathInfo); + } + if (queryString != null) { + url.append("?").append(queryString); + } + + String redirectedUrl = url.toString().replace("/sdc1/kibanaProxy/", "/"); + return redirectedUrl; + + } + + private Configuration getConfiguration(HttpServletRequest request) { + Configuration config = ((ConfigurationManager) request.getSession().getServletContext() + .getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); + return config; + } +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java new file mode 100644 index 0000000000..4eba2e5eb5 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java @@ -0,0 +1,279 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import java.io.IOException; +import java.util.Enumeration; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; + +import org.openecomp.portalsdk.core.onboarding.crossapi.ECOMPSSO; +import org.openecomp.sdc.common.config.EcompErrorName; +import org.openecomp.sdc.common.impl.MutableHttpServletRequest; +import org.openecomp.sdc.fe.Constants; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.config.FeEcompErrorManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Root resource (exposed at "/" path) + */ +@Path("/") +public class PortalServlet extends HttpServlet { + + private static Logger log = LoggerFactory.getLogger(PortalServlet.class.getName()); + private static final long serialVersionUID = 1L; + public static final String MISSING_HEADERS_MSG = "Missing Headers In Request"; + public static final String AUTHORIZATION_ERROR_MSG = "Autherization error"; + public static final String NEW_LINE = System.getProperty("line.separator"); + + /** + * Entry point from ECOMP portal + */ + @GET + @Path("/portal") + public void doGet(@Context final HttpServletRequest request, @Context final HttpServletResponse response) { + try { + addRequestHeadersUsingWebseal(request, response); + } catch (Exception e) { + FeEcompErrorManager.getInstance().processEcompError(EcompErrorName.FePortalServletError, "Portal Servlet"); + FeEcompErrorManager.getInstance().logFePortalServletError("Portal Servlet"); + log.error("Error during getting portal page", e); + } + } + + /** + * Building new HTTP request and setting headers for the request The request + * will dispatch to index.html + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + private void addRequestHeadersUsingWebseal(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { + + response.setContentType("text/html"); + + // Create new request object to dispatch + MutableHttpServletRequest mutableRequest = new MutableHttpServletRequest(request); + + // Get configuration object (reads data from configuration.yaml) + Configuration configuration = getConfiguration(request); + + // Check if we got header from webseal + String userId = request.getHeader(Constants.WEBSEAL_USER_ID_HEADER); + if (null == userId) { + // Authentication via ecomp portal + try { + String valdiateECOMPSSO = ECOMPSSO.valdiateECOMPSSO(request); + String userIdFromCookie = ECOMPSSO.getUserIdFromCookie(request); + if (valdiateECOMPSSO == null || ("").equals(userIdFromCookie)) { + // This is probably a webseal request, so missing header in request should be printed. + response.sendError(HttpServletResponse.SC_USE_PROXY, MISSING_HEADERS_MSG); + } + userId = userIdFromCookie; + } catch (Exception e) { + response.sendError(HttpServletResponse.SC_USE_PROXY, AUTHORIZATION_ERROR_MSG); + } + } + + // Replace webseal header with open source header + mutableRequest.putHeader(Constants.USER_ID, userId); + + // Getting identification headers from configuration.yaml + // (identificationHeaderFields) and setting them to new request + // mutableRequest + List<List<String>> identificationHeaderFields = configuration.getIdentificationHeaderFields(); + for (List<String> possibleHeadersToRecieve : identificationHeaderFields) { + String allowedHeaderToPass = possibleHeadersToRecieve.get(0); + setNewHeader(possibleHeadersToRecieve, allowedHeaderToPass, request, mutableRequest); + } + + // Getting optional headers from configuration.yaml + // (optionalHeaderFields) and setting them to new request mutableRequest + List<List<String>> optionalHeaderFields = configuration.getOptionalHeaderFields(); + for (List<String> possibleHeadersToRecieve : optionalHeaderFields) { + String allowedHeaderToPass = possibleHeadersToRecieve.get(0); + setNewHeader(possibleHeadersToRecieve, allowedHeaderToPass, request, mutableRequest); + } + + // Print headers from original request for debug purposes + printHeaders(request); + + // In case using webseal, validate all mandatory headers (identificationHeaderFields) are included in the new request (mutableRequest). + // Via ecomp portal do not need to check the headers. + boolean allHeadersExist = true; + if (null != request.getHeader(Constants.WEBSEAL_USER_ID_HEADER)) { + allHeadersExist = checkHeaders(mutableRequest); + } + + if (allHeadersExist) { + addCookies(response, mutableRequest, getMandatoryHeaders(request)); + addCookies(response, mutableRequest, getOptionalHeaders(request)); + RequestDispatcher rd = request.getRequestDispatcher("index.html"); + rd.forward(mutableRequest, response); + } else { + response.sendError(HttpServletResponse.SC_USE_PROXY, MISSING_HEADERS_MSG); + } + } + + /** + * Print all request headers to the log + * + * @param request + */ + private void printHeaders(HttpServletRequest request) { + + if (log.isDebugEnabled()) { + StringBuilder builder = new StringBuilder(); + String sessionId = ""; + if (request.getSession() != null) { + String id = request.getSession().getId(); + if (id != null) { + sessionId = id; + } + } + + builder.append("Receiving request with headers:" + NEW_LINE); + log.debug("{}", request.getHeaderNames()); + @SuppressWarnings("unchecked") + Enumeration<String> headerNames = request.getHeaderNames(); + if (headerNames != null) { + while (headerNames.hasMoreElements()) { + String headerName = headerNames.nextElement(); + String headerValue = request.getHeader(headerName); + builder.append("session " + sessionId + " header: name = " + headerName + ", value = " + headerValue + NEW_LINE); + } + } + + log.debug(builder.toString()); + } + + } + + /** + * Add cookies (that where set in the new request headers) in the response + * + * @param response + * @param request + * @param headers + */ + private void addCookies(HttpServletResponse response, HttpServletRequest request, String[] headers) { + for (int i = 0; i < headers.length; i++) { + String currHeader = headers[i]; + String headerValue = request.getHeader(currHeader); + if (headerValue != null) { + response.addCookie(new Cookie(currHeader, headerValue)); + } + } + } + + /** + * Get mandatory headers (identificationHeaderFields) String array, and + * checks that each header exists in the new request + * + * @param request + * @return boolean + */ + private boolean checkHeaders(HttpServletRequest request) { + String[] mandatoryHeaders = getMandatoryHeaders(request); + + boolean allHeadersExist = true; + for (int i = 0; i < mandatoryHeaders.length; i++) { + String headerValue = request.getHeader(mandatoryHeaders[i]); + if (headerValue == null) { + allHeadersExist = false; + break; + } + } + return allHeadersExist; + } + + /** + * Get mandatory headers (identificationHeaderFields) from + * configuration.yaml file and return String[] + * + * @param request + * @return String[] + */ + private String[] getMandatoryHeaders(HttpServletRequest request) { + Configuration configuration = getConfiguration(request); + List<List<String>> identificationHeaderFields = configuration.getIdentificationHeaderFields(); + String[] mandatoryHeaders = new String[identificationHeaderFields.size()]; + for (int i = 0; i < identificationHeaderFields.size(); i++) { + mandatoryHeaders[i] = identificationHeaderFields.get(i).get(0); + } + return mandatoryHeaders; + } + + /** + * Get optional headers (optionalHeaderFields) from configuration.yaml file + * and return String[] + * + * @param request + * @return String[] + */ + private String[] getOptionalHeaders(HttpServletRequest request) { + Configuration configuration = getConfiguration(request); + List<List<String>> optionalHeaderFields = configuration.getOptionalHeaderFields(); + String[] optionalHeaders = new String[optionalHeaderFields.size()]; + for (int i = 0; i < optionalHeaderFields.size(); i++) { + optionalHeaders[i] = optionalHeaderFields.get(i).get(0); + } + return optionalHeaders; + } + + /** + * Return Configuration object to read from configuration.yaml + * + * @param request + * @return Configuration + */ + private Configuration getConfiguration(HttpServletRequest request) { + ConfigurationManager configManager = (ConfigurationManager) request.getSession().getServletContext().getAttribute(org.openecomp.sdc.common.api.Constants.CONFIGURATION_MANAGER_ATTR); + return configManager.getConfiguration(); + } + + private boolean setNewHeader(List<String> possibleOldHeaders, String newHeaderToSet, HttpServletRequest oldRequest, MutableHttpServletRequest newRequest) { + boolean newHeaderIsSet = false; + for (int i = 0; i < possibleOldHeaders.size() && !newHeaderIsSet; i++) { + String headerValue = oldRequest.getHeader(possibleOldHeaders.get(i)); + if (headerValue != null) { + newRequest.putHeader(newHeaderToSet, headerValue); + newHeaderIsSet = true; + } + } + return newHeaderIsSet; + } + +} diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java new file mode 100644 index 0000000000..c3ba279c8c --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java @@ -0,0 +1,108 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.fe.servlets; + +import java.util.Enumeration; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; + +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.proxy.ProxyServlet; +import org.eclipse.jetty.util.ssl.SslContextFactory; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public abstract class SSLProxyServlet extends ProxyServlet { + + private static final long serialVersionUID = 1L; + private static Logger log = LoggerFactory.getLogger(SSLProxyServlet.class.getName()); + + public enum BE_PROTOCOL { + HTTP("http"), SSL("ssl"); + private String protocolName; + + public String getProtocolName() { + return protocolName; + } + + BE_PROTOCOL(String protocolName) { + this.protocolName = protocolName; + } + }; + + @Override + public void customizeProxyRequest(Request proxyRequest, HttpServletRequest request) { + super.customizeProxyRequest(proxyRequest, request); + // Add Missing Headers to proxy request + @SuppressWarnings("unchecked") + Enumeration<String> headerNames = request.getHeaderNames(); + while (headerNames.hasMoreElements()) { + String headerName = headerNames.nextElement(); + if (!proxyRequest.getHeaders().containsKey(headerName)) { + String headerVal = request.getHeader(headerName); + log.debug("Adding missing header to request, header name: {} , header value: {}", headerName, + headerVal); + proxyRequest.header(headerName, headerVal); + } + } + proxyRequest.getHeaders().remove(HttpHeader.HOST); + + } + + @Override + protected HttpClient createHttpClient() throws ServletException { + Configuration config = ((ConfigurationManager) getServletConfig().getServletContext() + .getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); + boolean isSecureClient = !config.getBeProtocol().equals(BE_PROTOCOL.HTTP.getProtocolName()); + HttpClient client = (isSecureClient) ? getSecureHttpClient() : super.createHttpClient(); + setTimeout(600000); + client.setIdleTimeout(600000); + client.setStopTimeout(600000); + + return client; + } + + private HttpClient getSecureHttpClient() throws ServletException { + // Instantiate and configure the SslContextFactory + SslContextFactory sslContextFactory = new SslContextFactory(true); + + // Instantiate HttpClient with the SslContextFactory + HttpClient httpClient = new HttpClient(sslContextFactory); + + // Configure HttpClient, for example: + httpClient.setFollowRedirects(false); + + // Start HttpClient + try { + httpClient.start(); + + return httpClient; + } catch (Exception x) { + throw new ServletException(x); + } + } +} diff --git a/catalog-fe/src/main/resources/application-context.xml b/catalog-fe/src/main/resources/application-context.xml new file mode 100644 index 0000000000..a5ec92697a --- /dev/null +++ b/catalog-fe/src/main/resources/application-context.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" + xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd + http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> + + <context:annotation-config /> + <aop:aspectj-autoproxy proxy-target-class="true" /> + + <context:component-scan + base-package="org.openecomp.sdnc.catalog.backend.dao, + org.elasticsearch.mapping, + org.openecomp.sdnc.catalog.backend.artifacts"> + + </context:component-scan> + + + + <!-- <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> --> +</beans> diff --git a/catalog-fe/src/main/resources/config/configuration.yaml b/catalog-fe/src/main/resources/config/configuration.yaml new file mode 100644 index 0000000000..6be93b330d --- /dev/null +++ b/catalog-fe/src/main/resources/config/configuration.yaml @@ -0,0 +1,78 @@ +# Needed for logging purposes. To be populated by DevOps - currently dummy +feFqdn: asdcFe.att.com + +# catalog backend hostname +beHost: localhost + +# catalog backend http port +beHttpPort: 8080 + +# catalog backend http context +beContext: /sdc2/rest/v1/catalog/upload/resources + +# catalog backend protocol +beProtocol: http + +# catalog backend ssl port +beSslPort: 8443 + +# threadpool size for handling requests +threadpoolSize: 50 + +# request processing timeout (seconds) +requestTimeout: 10 + +healthCheckSocketTimeoutInMs: 5000 + +healthCheckIntervalInSeconds: 5 + +identificationHeaderFields: + - + - &HTTP_IV_USER HTTP_IV_USER + - &iv-user iv-user + - + - &USER_ID USER_ID + - &user-id user-id + - + - &HTTP_CSP_ATTUID HTTP_CSP_ATTUID + - &csp-attuid csp-attuid + - + - &HTTP_CSP_WSTYPE HTTP_CSP_WSTYPE + - &csp-wstype csp-wstype + +optionalHeaderFields: + - + - &HTTP_CSP_FIRSTNAME HTTP_CSP_FIRSTNAME + - &csp-firstname csp-firstname + - + - &HTTP_CSP_LASTNAME HTTP_CSP_LASTNAME + - &csp-lastname csp-lastname + - + - &HTTP_IV_REMOTE_ADDRESS HTTP_IV_REMOTE_ADDRESS + - &iv-remote-address iv-remote-address + - + - &HTTP_CSP_EMAIL HTTP_CSP_EMAIL + - &csp-email csp-email + +version: 1.0 +released: 2012-11-30 + +# Connection parameters +connection: + url: jdbc:mysql://localhost:3306/db + poolSize: 17 + +# Protocols +protocols: + - http + - https + + +systemMonitoring: + enabled: false + isProxy: true + probeIntervalInSeconds: 15 + +kibanaHost: localhost +kibanaPort: 5601 +kibanaProtocol: http diff --git a/catalog-fe/src/main/resources/config/ecomp-error-configuration.yaml b/catalog-fe/src/main/resources/config/ecomp-error-configuration.yaml new file mode 100644 index 0000000000..8982b2424f --- /dev/null +++ b/catalog-fe/src/main/resources/config/ecomp-error-configuration.yaml @@ -0,0 +1,48 @@ +########################################### +# Note the conventions of the field values: +# type can be one of: CONFIG_ERROR, SYSTEM_ERROR, DATA_ERROR, CONNECTION_PROBLEM +# severity can be one of: WARN, ERROR, FATAL +# alarmSeverity can be one of: CRITICAL,MAJOR,MINOR,INFORMATIONAL,NONE +# code is a unique integer in range of 3003-9999 (3000-3002 are occupied for internal usage) +# The above enumeration values are out-of-the-box and can be changed in code. +# In case of config and code mismatch, the appropriate error will be printed to log +# +# Range of FE codes - 8000-9999 + + +errors: + FeHealthCheckConnectionError: { + type: CONNECTION_PROBLEM, + code: ASDC_8000, + severity: ERROR, + description: "Connection error during FE Health Check", + alarmSeverity: CRITICAL + } + FeHttpLoggingError: { + type: SYSTEM_ERROR, + code: ASDC_8001, + severity: ERROR, + description: "Error when logging FE HTTP request/response", + alarmSeverity: MINOR + } + FePortalServletError: { + type: SYSTEM_ERROR, + code: ASDC_8002, + severity: ERROR, + description: "Error when trying to access FE Portal page", + alarmSeverity: MAJOR + } + FeHealthCheckGeneralError: { + type: SYSTEM_ERROR, + code: ASDC_8004, + severity: ERROR, + description: "General error during FE Health Check", + alarmSeverity: CRITICAL + } + FeHealthCheckRecovery: { + type: RECOVERY, + code: ASDC_8005, + severity: INFO, + description: "BE Health Check Recovery", + alarmSeverity: INFORMATIONAL + }
\ No newline at end of file diff --git a/catalog-fe/src/main/resources/config/logback.xml b/catalog-fe/src/main/resources/config/logback.xml new file mode 100644 index 0000000000..fd2e13ca43 --- /dev/null +++ b/catalog-fe/src/main/resources/config/logback.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration scan="true" scanPeriod="5 seconds"> + + <property scope="system" name="ECOMP-component-name" value="ASDC" /> + <property scope="system" name="ECOMP-subcomponent-name" value="ASDC-FE" /> + <property scope="context" name="enable-all-log" value="false" /> + <property file="${config.home}/catalog-fe/configuration.yaml" /> + <!-- value used by pattern field list (| - is inter-field separator, || - unavailable or not applicable field value) (m - mandatory, o- optional)--> + <!--timestamp(m)| requestID(m)| serviceInstanceID(o)| threadID(m)| physicalServerName(o)| serviceName(m)| userID(m)| logLevel(m)| severity(o)| serverIpAddress(m)| serverName(m)| clientIpAddress(o)| className(m)| timer(o)| detailedMessage(o)--> + <property name="default-log-pattern" + value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{uuid}|%X{serviceInstanceID}|%thread||${ECOMP-subcomponent-name}|%X{userId}|%level|%X{alarmSeverity}|%X{localAddr}|${feFqdn}|%X{remoteAddr}|%logger{35}|%X{timer}|ActivityType=<%M>, Desc=<%msg>%n" /> + + <!-- All log --> + <if condition='property("enable-all-log").equalsIgnoreCase("true")'> + <then> + <appender name="ALL_ROLLING" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.home}/${ECOMP-component-name}/${ECOMP-subcomponent-name}/all.log + </file> + + <rollingPolicy + class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${log.home}/${ECOMP-component-name}/${ECOMP-subcomponent-name}/all.log.%i + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>10</maxIndex> + </rollingPolicy> + + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>20MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>${default-log-pattern}</pattern> + </encoder> + </appender> + + <appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="ALL_ROLLING" /> + </appender> + + </then> + </if> + + <!-- Error log --> + <appender name="ERROR_ROLLING" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.home}/${ECOMP-component-name}/${ECOMP-subcomponent-name}/error.log + </file> + + <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>INFO</level> + </filter> + + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${log.home}/${ECOMP-component-name}/${ECOMP-subcomponent-name}/error.log.%i + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>10</maxIndex> + </rollingPolicy> + + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>20MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>${default-log-pattern}</pattern> + </encoder> + </appender> + + <!-- Debug log --> + <appender name="DEBUG_ROLLING" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.home}/${ECOMP-component-name}/${ECOMP-subcomponent-name}/debug.log + </file> + + <!-- accept DEBUG and TRACE level --> + <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> + <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator"> + <expression> + e.level.toInt() <= DEBUG.toInt() + </expression> + </evaluator> + <OnMismatch>DENY</OnMismatch> + <OnMatch>NEUTRAL</OnMatch> + </filter> + + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${log.home}/${ECOMP-component-name}/${ECOMP-subcomponent-name}/debug.log.%i + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>10</maxIndex> + </rollingPolicy> + + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>20MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>${default-log-pattern}</pattern> + </encoder> + </appender> + + <!-- Asynchronicity Configurations --> + <appender name="ASYNC_DEBUG" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="DEBUG_ROLLING" /> + </appender> + + <appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="ERROR_ROLLING" /> + </appender> + + <root level="INFO"> + <appender-ref ref="ASYNC_ERROR" /> + <appender-ref ref="ASYNC_DEBUG" /> + <if condition='property("enable-all-log").equalsIgnoreCase("true")'> + <then> + <appender-ref ref="ALL_ROLLING" /> + </then> + </if> + </root> + + <logger name="org.openecomp.sdc" level="INFO" /> +</configuration>
\ No newline at end of file diff --git a/catalog-fe/src/main/resources/config/rest-configuration-info.yaml b/catalog-fe/src/main/resources/config/rest-configuration-info.yaml new file mode 100644 index 0000000000..083adcf7c7 --- /dev/null +++ b/catalog-fe/src/main/resources/config/rest-configuration-info.yaml @@ -0,0 +1,12 @@ +# rest read timeout - means no timeout +readTimeoutInSec: 0 + +# whether to ignore certificate +ignoreCertificate: false + +# the connection pool size +connectionPoolSize: 10 + +# create connection timeout +connectTimeoutInSec: 10 + diff --git a/catalog-fe/src/main/resources/jetty-ipaccess.xml b/catalog-fe/src/main/resources/jetty-ipaccess.xml new file mode 100644 index 0000000000..97db551f02 --- /dev/null +++ b/catalog-fe/src/main/resources/jetty-ipaccess.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"> + +<!-- =============================================================== --> +<!-- Mixin the Statistics Handler --> +<!-- =============================================================== --> + + +<Configure id="Server" class="org.eclipse.jetty.server.Server"> + + <Get id="oldhandler" name="handler"/> + + <Set name="handler"> + <New id="IPAccessHandler" class="org.eclipse.jetty.server.handler.IPAccessHandler"> + <Set name="handler"><Ref refid="oldhandler"/></Set> + <Set name="white"> + <Array type="String"> + <Item>0-255.0-255.0-255.0-255</Item> + </Array> + </Set> + <Set name="black"> + <Array type="String"> + <Item>127.0.0.1/blacklisted</Item> + <Item>127.0.0.2/black.html</Item> + </Array> + </Set> + <Set name="whiteListByPath">false</Set> + </New> + </Set> +</Configure> diff --git a/catalog-fe/src/main/resources/portal.properties b/catalog-fe/src/main/resources/portal.properties new file mode 100644 index 0000000000..880c4fe9e9 --- /dev/null +++ b/catalog-fe/src/main/resources/portal.properties @@ -0,0 +1,28 @@ +# Portal REST URL, ends "/auxapi" +ecomp_rest_url = https://portal.api.simpledemo.openecomp.org/ecompportal/auxapi + +# Java implementation of interface +portal.api.impl.class = org.openecomp.sdc.be.ecomp.EcompIntImpl + +# CSP-SSO URL +ecomp_redirect_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm + +# Cookie set by CSP-SSO +csp_cookie_name = attESSec +# CSP setting, most use PROD; DEV also recognized +csp_gate_keeper_prod_key = PROD + +# Comma-separated list of UEB server names +ueb_url_list = +# UEB topic where Portal listens +ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX-TEST +# UEB key generated while on-boarding +ueb_app_key = app_key_here +# UEB secret generated while on-boarding +ueb_app_secret = app_secret_here +# UEB topic where App listens +ueb_app_mailbox_name = app_topic_name_here +# Consumer group name; most Apps should use {UUID} +ueb_app_consumer_group_name = {UUID} + +decryption_key = AGLDdG4D04BKm2IxIWEr8o==
\ No newline at end of file diff --git a/catalog-fe/src/main/resources/scripts/install.sh b/catalog-fe/src/main/resources/scripts/install.sh new file mode 100644 index 0000000000..bed9411795 --- /dev/null +++ b/catalog-fe/src/main/resources/scripts/install.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +export JETTY_BASE=/home/jetty/base + +COMP=$1 + +function usage() { + echo "$0 <fe | be>" +} + +function exitOnError() { + if [ $1 -ne 0 ] + then + echo "Failed running task $2" + exit 2 + fi +} + +if [ $# -ne 1 ] +then + usage + exit 1 + +fi + +/opt/app/sdc/catalog-${COMP}/scripts/installJettyBase.sh +exitOnError $? "installJettyBase" + +cd ${JETTY_BASE} +exitOnError $? "move_to_base_dir" + +mkdir -p scripts + +cp /opt/app/sdc/catalog-${COMP}/scripts/* scripts +exitOnError $? "copy_scripts_from_rpm" + +cp /opt/app/sdc/catalog-${COMP}/ext/jetty-ipaccess.xml etc +exitOnError $? "override_jetty-ipaccess_module." + +cp /opt/app/sdc/catalog-${COMP}/catalog-${COMP}-*.war webapps +exitOnError $? "copy_war" + +cp /opt/app/sdc/catalog-${COMP}/scripts/startJetty.sh . +exitOnError $? "copy_startJetty" + +cp /opt/app/sdc/catalog-${COMP}/scripts/jvm.properties . +exitOnError $? "copy_jvm_properties" + +./scripts/updateSslParams.sh ${JETTY_BASE} +exitOnError $? "updateSslParams_script" + +#ONLY FOR BE +#cp /opt/app/sdc/config/catalog-${COMP}/elasticsearch.yml config +#exitOnError $? "copy_elasticsearch_yaml_to_config" + +mkdir -p ${JETTY_BASE}/config/catalog-${COMP} +cp -r /opt/app/sdc/config/catalog-${COMP}/*.xml ${JETTY_BASE}/config/catalog-${COMP} +exitOnError $? "copy_xml_files_to_config" + +cp -r /opt/app/sdc/config/catalog-${COMP}/*.yaml ${JETTY_BASE}/config/catalog-${COMP} +exitOnError $? "copy_yaml_files_to_config" diff --git a/catalog-fe/src/main/resources/scripts/installJettyBase.sh b/catalog-fe/src/main/resources/scripts/installJettyBase.sh new file mode 100644 index 0000000000..0f8ac7e109 --- /dev/null +++ b/catalog-fe/src/main/resources/scripts/installJettyBase.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +export JETTY_HOME=/home/jetty/jetty-distribution-9.2.7.v20150116 +export JETTY_BASE=/home/jetty/base + +mkdir -p ${JETTY_BASE} +mkdir -p ${JETTY_BASE}/config + +cd ${JETTY_BASE} + +java -jar $JETTY_HOME/start.jar --add-to-start=deploy +java -jar $JETTY_HOME/start.jar --add-to-startd=http,https,logging,ipaccess + +cd - diff --git a/catalog-fe/src/main/resources/scripts/jvm.properties b/catalog-fe/src/main/resources/scripts/jvm.properties new file mode 100644 index 0000000000..52b5134f34 --- /dev/null +++ b/catalog-fe/src/main/resources/scripts/jvm.properties @@ -0,0 +1,5 @@ +-XX:MaxPermSize=256m +-Xmx1500m +-Dconfig.home=${JETTY_BASE}/config +-Dlog.home=${JETTY_BASE}/logs +-Dlogback.configurationFile=${JETTY_BASE}/config/catalog-fe/logback.xml
\ No newline at end of file diff --git a/catalog-fe/src/main/resources/scripts/startJetty.sh b/catalog-fe/src/main/resources/scripts/startJetty.sh new file mode 100644 index 0000000000..074d91d6f7 --- /dev/null +++ b/catalog-fe/src/main/resources/scripts/startJetty.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +export JETTY_HOME=/home/jetty/jetty-distribution-9.2.7.v20150116 +export JETTY_BASE=/home/jetty/base + +eval "jvmargs=`sed '/^#/d' jvm.properties | paste -s -d"#"`" +jvmargs=`echo $jvmargs | sed 's/#/ /g'` +echo $jvmargs + +java -jar $JETTY_HOME/start.jar $jvmargs $@
\ No newline at end of file diff --git a/catalog-fe/src/main/resources/scripts/updateSslParams.sh b/catalog-fe/src/main/resources/scripts/updateSslParams.sh new file mode 100644 index 0000000000..d9e955e0f5 --- /dev/null +++ b/catalog-fe/src/main/resources/scripts/updateSslParams.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +function usage() { + echo "$0 <working dir>" +} + +function exitOnError() { + if [ $1 -ne 0 ] + then + echo "Failed running task $2" + exit 2 + fi +} + +if [ $# -ne 1 ] +then + usage + if [ ${#OLDPWD} -ne 0 ] + then + cd - + fi + exit 1 + +fi + +WORK_DIR=$1 + +cd $WORK_DIR + +sed -i 's/\(^https.port=\)\(.*\)/\1443/g' start.d/https.ini +exitOnError $? "update_port_in_https_ini" + +cd - diff --git a/catalog-fe/src/main/webapp/META-INF/MANIFEST.MF b/catalog-fe/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..c47899c09d --- /dev/null +++ b/catalog-fe/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,9 @@ +Manifest-Version: 1.0 +Implementation-Title: catalog-fe +Implementation-Version: APPLICATION_VERSION +Implementation-Vendor-Id: org.openecomp.sdc +Built-By: esofer +Build-Jdk: 1.7.0_45 +Created-By: Apache Maven 3.2.1 +Archiver-Version: Plexus Archiver + diff --git a/catalog-fe/src/main/webapp/WEB-INF/jetty-web.xml b/catalog-fe/src/main/webapp/WEB-INF/jetty-web.xml new file mode 100644 index 0000000000..adb07b0ec8 --- /dev/null +++ b/catalog-fe/src/main/webapp/WEB-INF/jetty-web.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE Configure PUBLIC + "-//Mort Bay Consulting//DTD Configure//EN" + "http://www.eclipse.org/jetty/configure_9_0.dtd"> + +<Configure class="org.eclipse.jetty.webapp.WebAppContext"> + <Set name="contextPath">/sdc1</Set> +</Configure> diff --git a/catalog-fe/src/main/webapp/WEB-INF/web.xml b/catalog-fe/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..f6d709ef58 --- /dev/null +++ b/catalog-fe/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,280 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" + version="3.0"> + + <servlet> + <servlet-name>jersey</servlet-name> + <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> + <init-param> + <param-name>jersey.config.server.provider.packages</param-name> + <param-value>org.openecomp.sdc.fe.servlets</param-value> + </init-param> + + <init-param> + <param-name>jersey.config.server.provider.classnames</param-name> + <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> + </init-param> + <init-param> + <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> + <param-value>true</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>jersey</servlet-name> + <url-pattern>/rest/*</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ViewStatusMessages</servlet-name> + <servlet-class>ch.qos.logback.classic.ViewStatusMessagesServlet</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ViewStatusMessages</servlet-name> + <url-pattern>/lbClassicStatus</url-pattern> + </servlet-mapping> + + <!-- Proxy Server Only used for tests to simulate webSeal ## Start ## --> +<!-- <servlet> + <servlet-name>ProxyAdmin1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletAdmin1</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyAdmin1</servlet-name> + <url-pattern>/proxy-admin1</url-pattern> + </servlet-mapping> + <servlet> + <servlet-name>ProxyAdmin2</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletAdmin2</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyAdmin2</servlet-name> + <url-pattern>/proxy-admin2</url-pattern> + </servlet-mapping> + <servlet> + <servlet-name>ProxyAdmin3</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletAdmin3</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyAdmin3</servlet-name> + <url-pattern>/proxy-admin3</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyDesigner1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletDesigner1</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyDesigner1</servlet-name> + <url-pattern>/proxy-designer1</url-pattern> + </servlet-mapping> + <servlet> + <servlet-name>ProxyDesigner2</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletDesigner2</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyDesigner2</servlet-name> + <url-pattern>/proxy-designer2</url-pattern> + </servlet-mapping> + <servlet> + <servlet-name>ProxyDesigner3</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletDesigner3</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyDesigner3</servlet-name> + <url-pattern>/proxy-designer3</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyTester1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletTester1</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyTester1</servlet-name> + <url-pattern>/proxy-tester1</url-pattern> + </servlet-mapping> + <servlet> + <servlet-name>ProxyTester2</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletTester2</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyTester2</servlet-name> + <url-pattern>/proxy-tester2</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyTester3</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletTester3</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyTester3</servlet-name> + <url-pattern>/proxy-tester3</url-pattern> + </servlet-mapping> + + <servlet-mapping> + <servlet-name>ProxyGovernor1</servlet-name> + <url-pattern>/proxy-governor1</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyGovernor1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletGovernor1</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyOps1</servlet-name> + <url-pattern>/proxy-ops1</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyOps1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletOps1</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>ProxyPs1</servlet-name> + <url-pattern>/proxy-ps1</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyPs1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletProductStrategist1</servlet-class> + <async-supported>true</async-supported> + </servlet> + <servlet-mapping> + <servlet-name>ProxyPm1</servlet-name> + <url-pattern>/proxy-pm1</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>ProxyPm1</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.websealmock.WebSealSimulatorServletProductManger1</servlet-class> + <async-supported>true</async-supported> + </servlet> --> + + <!-- Proxy Server Only used for tests to simulate webSeal ## End ## --> + + <!-- Fe Proxy Servlet --> + <servlet> + <servlet-name>FeProxy</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.FeProxyServlet</servlet-class> + + <load-on-startup>1</load-on-startup> + <async-supported>true</async-supported> + + + </servlet> + + <servlet-mapping> + <servlet-name>FeProxy</servlet-name> + <url-pattern>/feProxy/*</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>Portal</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.PortalServlet</servlet-class> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>Portal</servlet-name> + <url-pattern>/portal</url-pattern> + </servlet-mapping> + + <!-- Kibana proxy --> + <servlet> + <servlet-name>KibanaProxy</servlet-name> + <servlet-class>org.openecomp.sdc.fe.servlets.KibanaServlet</servlet-class> + <load-on-startup>1</load-on-startup> + <async-supported>true</async-supported> + </servlet> + + <servlet-mapping> + <servlet-name>KibanaProxy</servlet-name> + <url-pattern>/kibanaProxy/*</url-pattern> + </servlet-mapping> + + + + <filter> + <filter-name>cross-origin-att</filter-name> + <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> + <async-supported>true</async-supported> + <init-param> + <param-name>allowedOrigins</param-name> + <param-value>*</param-value> + </init-param> + <init-param> + <param-name>allowedMethods</param-name> + <param-value>GET,POST,OPTIONS,DELETE,PUT,HEAD</param-value> + </init-param> + <init-param> + <param-name>allowedHeaders</param-name> + <param-value>HTTP_CSP_FIRSTNAME, HTTP_CSP_LASTNAME, USER_ID, + HTTP_CSP_EMAIL, X-ECOMP-RequestID, origin, content-type, accept, authorization, Content-MD5,X-ECOMP-ServiceID</param-value> + </init-param> + <init-param> + <param-name>allowCredential</param-name> + <param-value>true</param-value> + </init-param> + </filter> + <filter-mapping> + <filter-name>cross-origin-att</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + +<!-- + <filter> + <filter-name>GzipFilter</filter-name> + <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class> + <async-supported>true</async-supported> + <init-param> + <param-name></param-name> + <param-value>text/html,text/plain,text/css,application/javascript,application/json</param-value> + </init-param> + <init-param> + <param-name>methods</param-name> + <param-value>get,post</param-value> + </init-param> + </filter> + + + <filter-mapping> + <filter-name>GzipFilter</filter-name> + <url-pattern>/sdc2/*</url-pattern> + </filter-mapping> +--> + + <listener> + <listener-class>org.openecomp.sdc.fe.listen.FEAppContextListener</listener-class> + </listener> + + <welcome-file-list> + <welcome-file>index.html</welcome-file> + </welcome-file-list> +</web-app> diff --git a/catalog-fe/src/test/SpecRunner.html b/catalog-fe/src/test/SpecRunner.html new file mode 100644 index 0000000000..d2617c5b5c --- /dev/null +++ b/catalog-fe/src/test/SpecRunner.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <title>Jasmine Spec Runner v2.0.0</title> + + <link rel="shortcut icon" type="image/png" href="jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine_favicon.png"> + <link rel="stylesheet" type="text/css" href="jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.css"> + + <script type="text/javascript" src="jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js"></script> + <script type="text/javascript" src="jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine-html.js"></script> + <script type="text/javascript" src="jasmine-standalone-2.0.0/lib/jasmine-2.0.0/boot.js"></script> + <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> + <!--script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script--> + <script type="text/javascript" src="testScripts/jasmine-fixture.js"></script> + + <link href="../main/webapp/scripts/style.css" rel="stylesheet" /> + <!-- include source files here... --> + + <!-- JSZIP --> + <script type="text/javascript" src="../main/webapp/scripts/jszip.min.js"></script> + <!-- MD5 --> + <script type="text/javascript" src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script> + + <script type="text/javascript" src="../main/webapp/scripts/domHandler.js"></script> + <script type="text/javascript" src="../main/webapp/scripts/fileHandler.js"></script> + <script type="text/javascript" src="../main/webapp/scripts/jsHandler.js"></script> + <script type="text/javascript" src="testScripts/filesContents.js"></script> + <!-- include spec files here... --> + <script type="text/javascript" src="spec/codeSpec.js"></script> + + </head> + + <body> + </body> +</html> diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/MIT.LICENSE b/catalog-fe/src/test/jasmine-standalone-2.0.0/MIT.LICENSE new file mode 100644 index 0000000000..7c435baaec --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/MIT.LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2008-2011 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/SpecRunner.html b/catalog-fe/src/test/jasmine-standalone-2.0.0/SpecRunner.html new file mode 100644 index 0000000000..a0e39f4b0c --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/SpecRunner.html @@ -0,0 +1,26 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <title>Jasmine Spec Runner v2.0.0</title> + + <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.0.0/jasmine_favicon.png"> + <link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.0/jasmine.css"> + + <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script> + <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script> + <script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script> + + <!-- include source files here... --> + <script type="text/javascript" src="src/Player.js"></script> + <script type="text/javascript" src="src/Song.js"></script> + + <!-- include spec files here... --> + <script type="text/javascript" src="spec/SpecHelper.js"></script> + <script type="text/javascript" src="spec/PlayerSpec.js"></script> + +</head> + +<body> +</body> +</html> diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/boot.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/boot.js new file mode 100644 index 0000000000..b1686af19b --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/boot.js @@ -0,0 +1,201 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +/** + Starting with version 2.0, this file "boots" Jasmine, performing all of the necessary initialization before executing the loaded environment and all of a project's specs. This file should be loaded after `jasmine.js`, but before any project source files or spec files are loaded. Thus this file can also be used to customize Jasmine for a project. + + If a project is using Jasmine via the standalone distribution, this file can be customized directly. If a project is using Jasmine via the [Ruby gem][jasmine-gem], this file can be copied into the support directory via `jasmine copy_boot_js`. Other environments (e.g., Python) will have different mechanisms. + + The location of `boot.js` can be specified and/or overridden in `jasmine.yml`. + + [jasmine-gem]: http://github.com/pivotal/jasmine-gem + */ + +(function() { + + /** + * ## Require & Instantiate + * + * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. + */ + window.jasmine = jasmineRequire.core(jasmineRequire); + + /** + * Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference. + */ + jasmineRequire.html(jasmine); + + /** + * Create the Jasmine environment. This is used to run all specs in a project. + */ + var env = jasmine.getEnv(); + + /** + * ## The Global Interface + * + * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. + */ + var jasmineInterface = { + describe: function(description, specDefinitions) { + return env.describe(description, specDefinitions); + }, + + xdescribe: function(description, specDefinitions) { + return env.xdescribe(description, specDefinitions); + }, + + it: function(desc, func) { + return env.it(desc, func); + }, + + xit: function(desc, func) { + return env.xit(desc, func); + }, + + beforeEach: function(beforeEachFunction) { + return env.beforeEach(beforeEachFunction); + }, + + afterEach: function(afterEachFunction) { + return env.afterEach(afterEachFunction); + }, + + expect: function(actual) { + return env.expect(actual); + }, + + pending: function() { + return env.pending(); + }, + + spyOn: function(obj, methodName) { + return env.spyOn(obj, methodName); + }, + + jsApiReporter: new jasmine.JsApiReporter({ + timer: new jasmine.Timer() + }) + }; + + /** + * Add all of the Jasmine global/public interface to the proper global, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. + */ + if (typeof window == "undefined" && typeof exports == "object") { + extend(exports, jasmineInterface); + } else { + extend(window, jasmineInterface); + } + + /** + * Expose the interface for adding custom equality testers. + */ + jasmine.addCustomEqualityTester = function(tester) { + env.addCustomEqualityTester(tester); + }; + + /** + * Expose the interface for adding custom expectation matchers + */ + jasmine.addMatchers = function(matchers) { + return env.addMatchers(matchers); + }; + + /** + * Expose the mock interface for the JavaScript timeout functions + */ + jasmine.clock = function() { + return env.clock; + }; + + /** + * ## Runner Parameters + * + * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. + */ + + var queryString = new jasmine.QueryString({ + getWindowLocation: function() { return window.location; } + }); + + var catchingExceptions = queryString.getParam("catch"); + env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions); + + /** + * ## Reporters + * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). + */ + var htmlReporter = new jasmine.HtmlReporter({ + env: env, + onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); }, + getContainer: function() { return document.body; }, + createElement: function() { return document.createElement.apply(document, arguments); }, + createTextNode: function() { return document.createTextNode.apply(document, arguments); }, + timer: new jasmine.Timer() + }); + + /** + * The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript. + */ + env.addReporter(jasmineInterface.jsApiReporter); + env.addReporter(htmlReporter); + + /** + * Filter which specs will be run by matching the start of the full name against the `spec` query param. + */ + var specFilter = new jasmine.HtmlSpecFilter({ + filterString: function() { return queryString.getParam("spec"); } + }); + + env.specFilter = function(spec) { + return specFilter.matches(spec.getFullName()); + }; + + /** + * Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack. + */ + window.setTimeout = window.setTimeout; + window.setInterval = window.setInterval; + window.clearTimeout = window.clearTimeout; + window.clearInterval = window.clearInterval; + + /** + * ## Execution + * + * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. + */ + var currentWindowOnload = window.onload; + + window.onload = function() { + if (currentWindowOnload) { + currentWindowOnload(); + } + htmlReporter.initialize(); + env.execute(); + }; + + /** + * Helper function for readability above. + */ + function extend(destination, source) { + for (var property in source) destination[property] = source[property]; + return destination; + } + +}()); diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/console.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/console.js new file mode 100644 index 0000000000..4e31320575 --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/console.js @@ -0,0 +1,180 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +/* +Copyright (c) 2008-2013 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +function getJasmineRequireObj() { + if (typeof module !== "undefined" && module.exports) { + return exports; + } else { + window.jasmineRequire = window.jasmineRequire || {}; + return window.jasmineRequire; + } +} + +getJasmineRequireObj().console = function(jRequire, j$) { + j$.ConsoleReporter = jRequire.ConsoleReporter(); +}; + +getJasmineRequireObj().ConsoleReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function ConsoleReporter(options) { + var print = options.print, + showColors = options.showColors || false, + onComplete = options.onComplete || function() {}, + timer = options.timer || noopTimer, + specCount, + failureCount, + failedSpecs = [], + pendingCount, + ansi = { + green: '\x1B[32m', + red: '\x1B[31m', + yellow: '\x1B[33m', + none: '\x1B[0m' + }; + + this.jasmineStarted = function() { + specCount = 0; + failureCount = 0; + pendingCount = 0; + print("Started"); + printNewline(); + timer.start(); + }; + + this.jasmineDone = function() { + printNewline(); + for (var i = 0; i < failedSpecs.length; i++) { + specFailureDetails(failedSpecs[i]); + } + + printNewline(); + var specCounts = specCount + " " + plural("spec", specCount) + ", " + + failureCount + " " + plural("failure", failureCount); + + if (pendingCount) { + specCounts += ", " + pendingCount + " pending " + plural("spec", pendingCount); + } + + print(specCounts); + + printNewline(); + var seconds = timer.elapsed() / 1000; + print("Finished in " + seconds + " " + plural("second", seconds)); + + printNewline(); + + onComplete(failureCount === 0); + }; + + this.specDone = function(result) { + specCount++; + + if (result.status == "pending") { + pendingCount++; + print(colored("yellow", "*")); + return; + } + + if (result.status == "passed") { + print(colored("green", '.')); + return; + } + + if (result.status == "failed") { + failureCount++; + failedSpecs.push(result); + print(colored("red", 'F')); + } + }; + + return this; + + function printNewline() { + print("\n"); + } + + function colored(color, str) { + return showColors ? (ansi[color] + str + ansi.none) : str; + } + + function plural(str, count) { + return count == 1 ? str : str + "s"; + } + + function repeat(thing, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(thing); + } + return arr; + } + + function indent(str, spaces) { + var lines = (str || '').split("\n"); + var newArr = []; + for (var i = 0; i < lines.length; i++) { + newArr.push(repeat(" ", spaces).join("") + lines[i]); + } + return newArr.join("\n"); + } + + function specFailureDetails(result) { + printNewline(); + print(result.fullName); + + for (var i = 0; i < result.failedExpectations.length; i++) { + var failedExpectation = result.failedExpectations[i]; + printNewline(); + print(indent(failedExpectation.stack, 2)); + } + + printNewline(); + } + } + + return ConsoleReporter; +}; diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine-html.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine-html.js new file mode 100644 index 0000000000..f7469e97b7 --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine-html.js @@ -0,0 +1,379 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +/* +Copyright (c) 2008-2013 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +jasmineRequire.html = function(j$) { + j$.ResultsNode = jasmineRequire.ResultsNode(); + j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); + j$.QueryString = jasmineRequire.QueryString(); + j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); +}; + +jasmineRequire.HtmlReporter = function(j$) { + + var noopTimer = { + start: function() {}, + elapsed: function() { return 0; } + }; + + function HtmlReporter(options) { + var env = options.env || {}, + getContainer = options.getContainer, + createElement = options.createElement, + createTextNode = options.createTextNode, + onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {}, + timer = options.timer || noopTimer, + results = [], + specsExecuted = 0, + failureCount = 0, + pendingSpecCount = 0, + htmlReporterMain, + symbols; + + this.initialize = function() { + htmlReporterMain = createDom("div", {className: "html-reporter"}, + createDom("div", {className: "banner"}, + createDom("span", {className: "title"}, "Jasmine"), + createDom("span", {className: "version"}, j$.version) + ), + createDom("ul", {className: "symbol-summary"}), + createDom("div", {className: "alert"}), + createDom("div", {className: "results"}, + createDom("div", {className: "failures"}) + ) + ); + getContainer().appendChild(htmlReporterMain); + + symbols = find(".symbol-summary"); + }; + + var totalSpecsDefined; + this.jasmineStarted = function(options) { + totalSpecsDefined = options.totalSpecsDefined || 0; + timer.start(); + }; + + var summary = createDom("div", {className: "summary"}); + + var topResults = new j$.ResultsNode({}, "", null), + currentParent = topResults; + + this.suiteStarted = function(result) { + currentParent.addChild(result, "suite"); + currentParent = currentParent.last(); + }; + + this.suiteDone = function(result) { + if (currentParent == topResults) { + return; + } + + currentParent = currentParent.parent; + }; + + this.specStarted = function(result) { + currentParent.addChild(result, "spec"); + }; + + var failures = []; + this.specDone = function(result) { + if (result.status != "disabled") { + specsExecuted++; + } + + symbols.appendChild(createDom("li", { + className: result.status, + id: "spec_" + result.id, + title: result.fullName + } + )); + + if (result.status == "failed") { + failureCount++; + + var failure = + createDom("div", {className: "spec-detail failed"}, + createDom("div", {className: "description"}, + createDom("a", {title: result.fullName, href: specHref(result)}, result.fullName) + ), + createDom("div", {className: "messages"}) + ); + var messages = failure.childNodes[1]; + + for (var i = 0; i < result.failedExpectations.length; i++) { + var expectation = result.failedExpectations[i]; + messages.appendChild(createDom("div", {className: "result-message"}, expectation.message)); + messages.appendChild(createDom("div", {className: "stack-trace"}, expectation.stack)); + } + + failures.push(failure); + } + + if (result.status == "pending") { + pendingSpecCount++; + } + }; + + this.jasmineDone = function() { + var banner = find(".banner"); + banner.appendChild(createDom("span", {className: "duration"}, "finished in " + timer.elapsed() / 1000 + "s")); + + var alert = find(".alert"); + + alert.appendChild(createDom("span", { className: "exceptions" }, + createDom("label", { className: "label", 'for': "raise-exceptions" }, "raise exceptions"), + createDom("input", { + className: "raise", + id: "raise-exceptions", + type: "checkbox" + }) + )); + var checkbox = find("input"); + + checkbox.checked = !env.catchingExceptions(); + checkbox.onclick = onRaiseExceptionsClick; + + if (specsExecuted < totalSpecsDefined) { + var skippedMessage = "Ran " + specsExecuted + " of " + totalSpecsDefined + " specs - run all"; + alert.appendChild( + createDom("span", {className: "bar skipped"}, + createDom("a", {href: "?", title: "Run all specs"}, skippedMessage) + ) + ); + } + var statusBarMessage = "" + pluralize("spec", specsExecuted) + ", " + pluralize("failure", failureCount); + if (pendingSpecCount) { statusBarMessage += ", " + pluralize("pending spec", pendingSpecCount); } + + var statusBarClassName = "bar " + ((failureCount > 0) ? "failed" : "passed"); + alert.appendChild(createDom("span", {className: statusBarClassName}, statusBarMessage)); + + var results = find(".results"); + results.appendChild(summary); + + summaryList(topResults, summary); + + function summaryList(resultsTree, domParent) { + var specListNode; + for (var i = 0; i < resultsTree.children.length; i++) { + var resultNode = resultsTree.children[i]; + if (resultNode.type == "suite") { + var suiteListNode = createDom("ul", {className: "suite", id: "suite-" + resultNode.result.id}, + createDom("li", {className: "suite-detail"}, + createDom("a", {href: specHref(resultNode.result)}, resultNode.result.description) + ) + ); + + summaryList(resultNode, suiteListNode); + domParent.appendChild(suiteListNode); + } + if (resultNode.type == "spec") { + if (domParent.getAttribute("class") != "specs") { + specListNode = createDom("ul", {className: "specs"}); + domParent.appendChild(specListNode); + } + specListNode.appendChild( + createDom("li", { + className: resultNode.result.status, + id: "spec-" + resultNode.result.id + }, + createDom("a", {href: specHref(resultNode.result)}, resultNode.result.description) + ) + ); + } + } + } + + if (failures.length) { + alert.appendChild( + createDom('span', {className: "menu bar spec-list"}, + createDom("span", {}, "Spec List | "), + createDom('a', {className: "failures-menu", href: "#"}, "Failures"))); + alert.appendChild( + createDom('span', {className: "menu bar failure-list"}, + createDom('a', {className: "spec-list-menu", href: "#"}, "Spec List"), + createDom("span", {}, " | Failures "))); + + find(".failures-menu").onclick = function() { + setMenuModeTo('failure-list'); + }; + find(".spec-list-menu").onclick = function() { + setMenuModeTo('spec-list'); + }; + + setMenuModeTo('failure-list'); + + var failureNode = find(".failures"); + for (var i = 0; i < failures.length; i++) { + failureNode.appendChild(failures[i]); + } + } + }; + + return this; + + function find(selector) { + return getContainer().querySelector(selector); + } + + function createDom(type, attrs, childrenVarArgs) { + var el = createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(createTextNode(child)); + } else { + if (child) { + el.appendChild(child); + } + } + } + + for (var attr in attrs) { + if (attr == "className") { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; + } + + function pluralize(singular, count) { + var word = (count == 1 ? singular : singular + "s"); + + return "" + count + " " + word; + } + + function specHref(result) { + return "?spec=" + encodeURIComponent(result.fullName); + } + + function setMenuModeTo(mode) { + htmlReporterMain.setAttribute("class", "html-reporter " + mode); + } + } + + return HtmlReporter; +}; + +jasmineRequire.HtmlSpecFilter = function() { + function HtmlSpecFilter(options) { + var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + var filterPattern = new RegExp(filterString); + + this.matches = function(specName) { + return filterPattern.test(specName); + }; + } + + return HtmlSpecFilter; +}; + +jasmineRequire.ResultsNode = function() { + function ResultsNode(result, type, parent) { + this.result = result; + this.type = type; + this.parent = parent; + + this.children = []; + + this.addChild = function(result, type) { + this.children.push(new ResultsNode(result, type, this)); + }; + + this.last = function() { + return this.children[this.children.length - 1]; + }; + } + + return ResultsNode; +}; + +jasmineRequire.QueryString = function() { + function QueryString(options) { + + this.setParam = function(key, value) { + var paramMap = queryStringToParamMap(); + paramMap[key] = value; + options.getWindowLocation().search = toQueryString(paramMap); + }; + + this.getParam = function(key) { + return queryStringToParamMap()[key]; + }; + + return this; + + function toQueryString(paramMap) { + var qStrPairs = []; + for (var prop in paramMap) { + qStrPairs.push(encodeURIComponent(prop) + "=" + encodeURIComponent(paramMap[prop])); + } + return "?" + qStrPairs.join('&'); + } + + function queryStringToParamMap() { + var paramStr = options.getWindowLocation().search.substring(1), + params = [], + paramMap = {}; + + if (paramStr.length > 0) { + params = paramStr.split('&'); + for (var i = 0; i < params.length; i++) { + var p = params[i].split('='); + var value = decodeURIComponent(p[1]); + if (value === "true" || value === "false") { + value = JSON.parse(value); + } + paramMap[decodeURIComponent(p[0])] = value; + } + } + + return paramMap; + } + + } + + return QueryString; +}; diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.css b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.css new file mode 100644 index 0000000000..f4d35b6e78 --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.css @@ -0,0 +1,55 @@ +body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; } + +.html-reporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; } +.html-reporter a { text-decoration: none; } +.html-reporter a:hover { text-decoration: underline; } +.html-reporter p, .html-reporter h1, .html-reporter h2, .html-reporter h3, .html-reporter h4, .html-reporter h5, .html-reporter h6 { margin: 0; line-height: 14px; } +.html-reporter .banner, .html-reporter .symbol-summary, .html-reporter .summary, .html-reporter .result-message, .html-reporter .spec .description, .html-reporter .spec-detail .description, .html-reporter .alert .bar, .html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; } +.html-reporter .banner .version { margin-left: 14px; } +.html-reporter #jasmine_content { position: fixed; right: 100%; } +.html-reporter .version { color: #aaaaaa; } +.html-reporter .banner { margin-top: 14px; } +.html-reporter .duration { color: #aaaaaa; float: right; } +.html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; } +.html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; } +.html-reporter .symbol-summary li.passed { font-size: 14px; } +.html-reporter .symbol-summary li.passed:before { color: #5e7d00; content: "\02022"; } +.html-reporter .symbol-summary li.failed { line-height: 9px; } +.html-reporter .symbol-summary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; } +.html-reporter .symbol-summary li.disabled { font-size: 14px; } +.html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; } +.html-reporter .symbol-summary li.pending { line-height: 17px; } +.html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; } +.html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; } +.html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } +.html-reporter .bar.failed { background-color: #b03911; } +.html-reporter .bar.passed { background-color: #a6b779; } +.html-reporter .bar.skipped { background-color: #bababa; } +.html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; } +.html-reporter .bar.menu a { color: #333333; } +.html-reporter .bar a { color: white; } +.html-reporter.spec-list .bar.menu.failure-list, .html-reporter.spec-list .results .failures { display: none; } +.html-reporter.failure-list .bar.menu.spec-list, .html-reporter.failure-list .summary { display: none; } +.html-reporter .running-alert { background-color: #666666; } +.html-reporter .results { margin-top: 14px; } +.html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } +.html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; } +.html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } +.html-reporter.showDetails .summary { display: none; } +.html-reporter.showDetails #details { display: block; } +.html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; } +.html-reporter .summary { margin-top: 14px; } +.html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; } +.html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; } +.html-reporter .summary li.passed a { color: #5e7d00; } +.html-reporter .summary li.failed a { color: #b03911; } +.html-reporter .summary li.pending a { color: #ba9d37; } +.html-reporter .description + .suite { margin-top: 0; } +.html-reporter .suite { margin-top: 14px; } +.html-reporter .suite a { color: #333333; } +.html-reporter .failures .spec-detail { margin-bottom: 28px; } +.html-reporter .failures .spec-detail .description { background-color: #b03911; } +.html-reporter .failures .spec-detail .description a { color: white; } +.html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; } +.html-reporter .result-message span.result { display: block; } +.html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js new file mode 100644 index 0000000000..a1390a20c5 --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js @@ -0,0 +1,2422 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +/* +Copyright (c) 2008-2013 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +function getJasmineRequireObj() { + if (typeof module !== "undefined" && module.exports) { + return exports; + } else { + window.jasmineRequire = window.jasmineRequire || {}; + return window.jasmineRequire; + } +} + +getJasmineRequireObj().core = function(jRequire) { + var j$ = {}; + + jRequire.base(j$); + j$.util = jRequire.util(); + j$.Any = jRequire.Any(); + j$.CallTracker = jRequire.CallTracker(); + j$.Clock = jRequire.Clock(); + j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler(); + j$.Env = jRequire.Env(j$); + j$.ExceptionFormatter = jRequire.ExceptionFormatter(); + j$.Expectation = jRequire.Expectation(); + j$.buildExpectationResult = jRequire.buildExpectationResult(); + j$.JsApiReporter = jRequire.JsApiReporter(); + j$.matchersUtil = jRequire.matchersUtil(j$); + j$.ObjectContaining = jRequire.ObjectContaining(j$); + j$.pp = jRequire.pp(j$); + j$.QueueRunner = jRequire.QueueRunner(); + j$.ReportDispatcher = jRequire.ReportDispatcher(); + j$.Spec = jRequire.Spec(j$); + j$.SpyStrategy = jRequire.SpyStrategy(); + j$.Suite = jRequire.Suite(); + j$.Timer = jRequire.Timer(); + j$.version = jRequire.version(); + + j$.matchers = jRequire.requireMatchers(jRequire, j$); + + return j$; +}; + +getJasmineRequireObj().requireMatchers = function(jRequire, j$) { + var availableMatchers = [ + "toBe", + "toBeCloseTo", + "toBeDefined", + "toBeFalsy", + "toBeGreaterThan", + "toBeLessThan", + "toBeNaN", + "toBeNull", + "toBeTruthy", + "toBeUndefined", + "toContain", + "toEqual", + "toHaveBeenCalled", + "toHaveBeenCalledWith", + "toMatch", + "toThrow", + "toThrowError" + ], + matchers = {}; + + for (var i = 0; i < availableMatchers.length; i++) { + var name = availableMatchers[i]; + matchers[name] = jRequire[name](j$); + } + + return matchers; +}; + +getJasmineRequireObj().base = function(j$) { + j$.unimplementedMethod_ = function() { + throw new Error("unimplemented method"); + }; + + j$.MAX_PRETTY_PRINT_DEPTH = 40; + j$.DEFAULT_TIMEOUT_INTERVAL = 5000; + + j$.getGlobal = (function() { + var jasmineGlobal = eval.call(null, "this"); + return function() { + return jasmineGlobal; + }; + })(); + + j$.getEnv = function(options) { + var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options); + //jasmine. singletons in here (setTimeout blah blah). + return env; + }; + + j$.isArray_ = function(value) { + return j$.isA_("Array", value); + }; + + j$.isString_ = function(value) { + return j$.isA_("String", value); + }; + + j$.isNumber_ = function(value) { + return j$.isA_("Number", value); + }; + + j$.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; + }; + + j$.isDomNode = function(obj) { + return obj.nodeType > 0; + }; + + j$.any = function(clazz) { + return new j$.Any(clazz); + }; + + j$.objectContaining = function(sample) { + return new j$.ObjectContaining(sample); + }; + + j$.createSpy = function(name, originalFn) { + + var spyStrategy = new j$.SpyStrategy({ + name: name, + fn: originalFn, + getSpy: function() { return spy; } + }), + callTracker = new j$.CallTracker(), + spy = function() { + callTracker.track({ + object: this, + args: Array.prototype.slice.apply(arguments) + }); + return spyStrategy.exec.apply(this, arguments); + }; + + for (var prop in originalFn) { + if (prop === 'and' || prop === 'calls') { + throw new Error("Jasmine spies would overwrite the 'and' and 'calls' properties on the object being spied upon"); + } + + spy[prop] = originalFn[prop]; + } + + spy.and = spyStrategy; + spy.calls = callTracker; + + return spy; + }; + + j$.isSpy = function(putativeSpy) { + if (!putativeSpy) { + return false; + } + return putativeSpy.and instanceof j$.SpyStrategy && + putativeSpy.calls instanceof j$.CallTracker; + }; + + j$.createSpyObj = function(baseName, methodNames) { + if (!j$.isArray_(methodNames) || methodNames.length === 0) { + throw "createSpyObj requires a non-empty array of method names to create spies for"; + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]); + } + return obj; + }; +}; + +getJasmineRequireObj().util = function() { + + var util = {}; + + util.inherit = function(childClass, parentClass) { + var Subclass = function() { + }; + Subclass.prototype = parentClass.prototype; + childClass.prototype = new Subclass(); + }; + + util.htmlEscape = function(str) { + if (!str) { + return str; + } + return str.replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>'); + }; + + util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) { + arrayOfArgs.push(args[i]); + } + return arrayOfArgs; + }; + + util.isUndefined = function(obj) { + return obj === void 0; + }; + + return util; +}; + +getJasmineRequireObj().Spec = function(j$) { + function Spec(attrs) { + this.expectationFactory = attrs.expectationFactory; + this.resultCallback = attrs.resultCallback || function() {}; + this.id = attrs.id; + this.description = attrs.description || ''; + this.fn = attrs.fn; + this.beforeFns = attrs.beforeFns || function() { return []; }; + this.afterFns = attrs.afterFns || function() { return []; }; + this.onStart = attrs.onStart || function() {}; + this.exceptionFormatter = attrs.exceptionFormatter || function() {}; + this.getSpecName = attrs.getSpecName || function() { return ''; }; + this.expectationResultFactory = attrs.expectationResultFactory || function() { }; + this.queueRunnerFactory = attrs.queueRunnerFactory || function() {}; + this.catchingExceptions = attrs.catchingExceptions || function() { return true; }; + + this.timer = attrs.timer || {setTimeout: setTimeout, clearTimeout: clearTimeout}; + + if (!this.fn) { + this.pend(); + } + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [] + }; + } + + Spec.prototype.addExpectationResult = function(passed, data) { + if (passed) { + return; + } + this.result.failedExpectations.push(this.expectationResultFactory(data)); + }; + + Spec.prototype.expect = function(actual) { + return this.expectationFactory(actual, this); + }; + + Spec.prototype.execute = function(onComplete) { + var self = this, + timeout; + + this.onStart(this); + + if (this.markedPending || this.disabled) { + complete(); + return; + } + + function timeoutable(fn) { + return function(done) { + timeout = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() { + onException(new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.')); + done(); + }, j$.DEFAULT_TIMEOUT_INTERVAL]]); + + var callDone = function() { + clearTimeoutable(); + done(); + }; + + fn.call(this, callDone); //TODO: do we care about more than 1 arg? + }; + } + + function clearTimeoutable() { + Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeout]]); + timeout = void 0; + } + + var allFns = this.beforeFns().concat(this.fn).concat(this.afterFns()), + allTimeoutableFns = []; + for (var i = 0; i < allFns.length; i++) { + var fn = allFns[i]; + allTimeoutableFns.push(fn.length > 0 ? timeoutable(fn) : fn); + } + + this.queueRunnerFactory({ + fns: allTimeoutableFns, + onException: onException, + onComplete: complete + }); + + function onException(e) { + clearTimeoutable(); + if (Spec.isPendingSpecException(e)) { + self.pend(); + return; + } + + self.addExpectationResult(false, { + matcherName: "", + passed: false, + expected: "", + actual: "", + error: e + }); + } + + function complete() { + self.result.status = self.status(); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + }; + + Spec.prototype.disable = function() { + this.disabled = true; + }; + + Spec.prototype.pend = function() { + this.markedPending = true; + }; + + Spec.prototype.status = function() { + if (this.disabled) { + return 'disabled'; + } + + if (this.markedPending) { + return 'pending'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'passed'; + } + }; + + Spec.prototype.getFullName = function() { + return this.getSpecName(this); + }; + + Spec.pendingSpecExceptionMessage = "=> marked Pending"; + + Spec.isPendingSpecException = function(e) { + return e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1; + }; + + return Spec; +}; + +if (typeof window == void 0 && typeof exports == "object") { + exports.Spec = jasmineRequire.Spec; +} + +getJasmineRequireObj().Env = function(j$) { + function Env(options) { + options = options || {}; + + var self = this; + var global = options.global || j$.getGlobal(); + + var totalSpecsDefined = 0; + + var catchExceptions = true; + + var realSetTimeout = j$.getGlobal().setTimeout; + var realClearTimeout = j$.getGlobal().clearTimeout; + this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler()); + + var runnableLookupTable = {}; + + var spies = []; + + var currentSpec = null; + var currentSuite = null; + + var reporter = new j$.ReportDispatcher([ + "jasmineStarted", + "jasmineDone", + "suiteStarted", + "suiteDone", + "specStarted", + "specDone" + ]); + + this.specFilter = function() { + return true; + }; + + var equalityTesters = []; + + var customEqualityTesters = []; + this.addCustomEqualityTester = function(tester) { + customEqualityTesters.push(tester); + }; + + j$.Expectation.addCoreMatchers(j$.matchers); + + var nextSpecId = 0; + var getNextSpecId = function() { + return 'spec' + nextSpecId++; + }; + + var nextSuiteId = 0; + var getNextSuiteId = function() { + return 'suite' + nextSuiteId++; + }; + + var expectationFactory = function(actual, spec) { + return j$.Expectation.Factory({ + util: j$.matchersUtil, + customEqualityTesters: customEqualityTesters, + actual: actual, + addExpectationResult: addExpectationResult + }); + + function addExpectationResult(passed, result) { + return spec.addExpectationResult(passed, result); + } + }; + + var specStarted = function(spec) { + currentSpec = spec; + reporter.specStarted(spec.result); + }; + + var beforeFns = function(suite) { + return function() { + var befores = []; + while(suite) { + befores = befores.concat(suite.beforeFns); + suite = suite.parentSuite; + } + return befores.reverse(); + }; + }; + + var afterFns = function(suite) { + return function() { + var afters = []; + while(suite) { + afters = afters.concat(suite.afterFns); + suite = suite.parentSuite; + } + return afters; + }; + }; + + var getSpecName = function(spec, suite) { + return suite.getFullName() + ' ' + spec.description; + }; + + // TODO: we may just be able to pass in the fn instead of wrapping here + var buildExpectationResult = j$.buildExpectationResult, + exceptionFormatter = new j$.ExceptionFormatter(), + expectationResultFactory = function(attrs) { + attrs.messageFormatter = exceptionFormatter.message; + attrs.stackFormatter = exceptionFormatter.stack; + + return buildExpectationResult(attrs); + }; + + // TODO: fix this naming, and here's where the value comes in + this.catchExceptions = function(value) { + catchExceptions = !!value; + return catchExceptions; + }; + + this.catchingExceptions = function() { + return catchExceptions; + }; + + var maximumSpecCallbackDepth = 20; + var currentSpecCallbackDepth = 0; + + function clearStack(fn) { + currentSpecCallbackDepth++; + if (currentSpecCallbackDepth >= maximumSpecCallbackDepth) { + currentSpecCallbackDepth = 0; + realSetTimeout(fn, 0); + } else { + fn(); + } + } + + var catchException = function(e) { + return j$.Spec.isPendingSpecException(e) || catchExceptions; + }; + + var queueRunnerFactory = function(options) { + options.catchException = catchException; + options.clearStack = options.clearStack || clearStack; + + new j$.QueueRunner(options).execute(); + }; + + var topSuite = new j$.Suite({ + env: this, + id: getNextSuiteId(), + description: 'Jasmine__TopLevel__Suite', + queueRunner: queueRunnerFactory, + resultCallback: function() {} // TODO - hook this up + }); + runnableLookupTable[topSuite.id] = topSuite; + currentSuite = topSuite; + + this.topSuite = function() { + return topSuite; + }; + + this.execute = function(runnablesToRun) { + runnablesToRun = runnablesToRun || [topSuite.id]; + + var allFns = []; + for(var i = 0; i < runnablesToRun.length; i++) { + var runnable = runnableLookupTable[runnablesToRun[i]]; + allFns.push((function(runnable) { return function(done) { runnable.execute(done); }; })(runnable)); + } + + reporter.jasmineStarted({ + totalSpecsDefined: totalSpecsDefined + }); + + queueRunnerFactory({fns: allFns, onComplete: reporter.jasmineDone}); + }; + + this.addReporter = function(reporterToAdd) { + reporter.addReporter(reporterToAdd); + }; + + this.addMatchers = function(matchersToAdd) { + j$.Expectation.addMatchers(matchersToAdd); + }; + + this.spyOn = function(obj, methodName) { + if (j$.util.isUndefined(obj)) { + throw new Error("spyOn could not find an object to spy upon for " + methodName + "()"); + } + + if (j$.util.isUndefined(obj[methodName])) { + throw new Error(methodName + '() method does not exist'); + } + + if (obj[methodName] && j$.isSpy(obj[methodName])) { + //TODO?: should this return the current spy? Downside: may cause user confusion about spy state + throw new Error(methodName + ' has already been spied upon'); + } + + var spy = j$.createSpy(methodName, obj[methodName]); + + spies.push({ + spy: spy, + baseObj: obj, + methodName: methodName, + originalValue: obj[methodName] + }); + + obj[methodName] = spy; + + return spy; + }; + + var suiteFactory = function(description) { + var suite = new j$.Suite({ + env: self, + id: getNextSuiteId(), + description: description, + parentSuite: currentSuite, + queueRunner: queueRunnerFactory, + onStart: suiteStarted, + resultCallback: function(attrs) { + reporter.suiteDone(attrs); + } + }); + + runnableLookupTable[suite.id] = suite; + return suite; + }; + + this.describe = function(description, specDefinitions) { + var suite = suiteFactory(description); + + var parentSuite = currentSuite; + parentSuite.addChild(suite); + currentSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch (e) { + declarationError = e; + } + + if (declarationError) { + this.it("encountered a declaration exception", function() { + throw declarationError; + }); + } + + currentSuite = parentSuite; + + return suite; + }; + + this.xdescribe = function(description, specDefinitions) { + var suite = this.describe(description, specDefinitions); + suite.disable(); + return suite; + }; + + var specFactory = function(description, fn, suite) { + totalSpecsDefined++; + + var spec = new j$.Spec({ + id: getNextSpecId(), + beforeFns: beforeFns(suite), + afterFns: afterFns(suite), + expectationFactory: expectationFactory, + exceptionFormatter: exceptionFormatter, + resultCallback: specResultCallback, + getSpecName: function(spec) { + return getSpecName(spec, suite); + }, + onStart: specStarted, + description: description, + expectationResultFactory: expectationResultFactory, + queueRunnerFactory: queueRunnerFactory, + fn: fn, + timer: {setTimeout: realSetTimeout, clearTimeout: realClearTimeout} + }); + + runnableLookupTable[spec.id] = spec; + + if (!self.specFilter(spec)) { + spec.disable(); + } + + return spec; + + function removeAllSpies() { + for (var i = 0; i < spies.length; i++) { + var spyEntry = spies[i]; + spyEntry.baseObj[spyEntry.methodName] = spyEntry.originalValue; + } + spies = []; + } + + function specResultCallback(result) { + removeAllSpies(); + j$.Expectation.resetMatchers(); + customEqualityTesters = []; + currentSpec = null; + reporter.specDone(result); + } + }; + + var suiteStarted = function(suite) { + reporter.suiteStarted(suite.result); + }; + + this.it = function(description, fn) { + var spec = specFactory(description, fn, currentSuite); + currentSuite.addChild(spec); + return spec; + }; + + this.xit = function(description, fn) { + var spec = this.it(description, fn); + spec.pend(); + return spec; + }; + + this.expect = function(actual) { + return currentSpec.expect(actual); + }; + + this.beforeEach = function(beforeEachFunction) { + currentSuite.beforeEach(beforeEachFunction); + }; + + this.afterEach = function(afterEachFunction) { + currentSuite.afterEach(afterEachFunction); + }; + + this.pending = function() { + throw j$.Spec.pendingSpecExceptionMessage; + }; + } + + return Env; +}; + +getJasmineRequireObj().JsApiReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function JsApiReporter(options) { + var timer = options.timer || noopTimer, + status = "loaded"; + + this.started = false; + this.finished = false; + + this.jasmineStarted = function() { + this.started = true; + status = 'started'; + timer.start(); + }; + + var executionTime; + + this.jasmineDone = function() { + this.finished = true; + executionTime = timer.elapsed(); + status = 'done'; + }; + + this.status = function() { + return status; + }; + + var suites = {}; + + this.suiteStarted = function(result) { + storeSuite(result); + }; + + this.suiteDone = function(result) { + storeSuite(result); + }; + + function storeSuite(result) { + suites[result.id] = result; + } + + this.suites = function() { + return suites; + }; + + var specs = []; + this.specStarted = function(result) { }; + + this.specDone = function(result) { + specs.push(result); + }; + + this.specResults = function(index, length) { + return specs.slice(index, index + length); + }; + + this.specs = function() { + return specs; + }; + + this.executionTime = function() { + return executionTime; + }; + + } + + return JsApiReporter; +}; + +getJasmineRequireObj().Any = function() { + + function Any(expectedObject) { + this.expectedObject = expectedObject; + } + + Any.prototype.jasmineMatches = function(other) { + if (this.expectedObject == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedObject == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedObject == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedObject == Object) { + return typeof other == 'object'; + } + + if (this.expectedObject == Boolean) { + return typeof other == 'boolean'; + } + + return other instanceof this.expectedObject; + }; + + Any.prototype.jasmineToString = function() { + return '<jasmine.any(' + this.expectedClass + ')>'; + }; + + return Any; +}; + +getJasmineRequireObj().CallTracker = function() { + + function CallTracker() { + var calls = []; + + this.track = function(context) { + calls.push(context); + }; + + this.any = function() { + return !!calls.length; + }; + + this.count = function() { + return calls.length; + }; + + this.argsFor = function(index) { + var call = calls[index]; + return call ? call.args : []; + }; + + this.all = function() { + return calls; + }; + + this.allArgs = function() { + var callArgs = []; + for(var i = 0; i < calls.length; i++){ + callArgs.push(calls[i].args); + } + + return callArgs; + }; + + this.first = function() { + return calls[0]; + }; + + this.mostRecent = function() { + return calls[calls.length - 1]; + }; + + this.reset = function() { + calls = []; + }; + } + + return CallTracker; +}; + +getJasmineRequireObj().Clock = function() { + function Clock(global, delayedFunctionScheduler) { + var self = this, + realTimingFunctions = { + setTimeout: global.setTimeout, + clearTimeout: global.clearTimeout, + setInterval: global.setInterval, + clearInterval: global.clearInterval + }, + fakeTimingFunctions = { + setTimeout: setTimeout, + clearTimeout: clearTimeout, + setInterval: setInterval, + clearInterval: clearInterval + }, + installed = false, + timer; + + self.install = function() { + replace(global, fakeTimingFunctions); + timer = fakeTimingFunctions; + installed = true; + }; + + self.uninstall = function() { + delayedFunctionScheduler.reset(); + replace(global, realTimingFunctions); + timer = realTimingFunctions; + installed = false; + }; + + self.setTimeout = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error("IE < 9 cannot support extra params to setTimeout without a polyfill"); + } + return timer.setTimeout(fn, delay); + } + return Function.prototype.apply.apply(timer.setTimeout, [global, arguments]); + }; + + self.setInterval = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error("IE < 9 cannot support extra params to setInterval without a polyfill"); + } + return timer.setInterval(fn, delay); + } + return Function.prototype.apply.apply(timer.setInterval, [global, arguments]); + }; + + self.clearTimeout = function(id) { + return Function.prototype.call.apply(timer.clearTimeout, [global, id]); + }; + + self.clearInterval = function(id) { + return Function.prototype.call.apply(timer.clearInterval, [global, id]); + }; + + self.tick = function(millis) { + if (installed) { + delayedFunctionScheduler.tick(millis); + } else { + throw new Error("Mock clock is not installed, use jasmine.clock().install()"); + } + }; + + return self; + + function legacyIE() { + //if these methods are polyfilled, apply will be present + return !(realTimingFunctions.setTimeout || realTimingFunctions.setInterval).apply; + } + + function replace(dest, source) { + for (var prop in source) { + dest[prop] = source[prop]; + } + } + + function setTimeout(fn, delay) { + return delayedFunctionScheduler.scheduleFunction(fn, delay, argSlice(arguments, 2)); + } + + function clearTimeout(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function setInterval(fn, interval) { + return delayedFunctionScheduler.scheduleFunction(fn, interval, argSlice(arguments, 2), true); + } + + function clearInterval(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function argSlice(argsObj, n) { + return Array.prototype.slice.call(argsObj, 2); + } + } + + return Clock; +}; + +getJasmineRequireObj().DelayedFunctionScheduler = function() { + function DelayedFunctionScheduler() { + var self = this; + var scheduledLookup = []; + var scheduledFunctions = {}; + var currentTime = 0; + var delayedFnCount = 0; + + self.tick = function(millis) { + millis = millis || 0; + var endTime = currentTime + millis; + + runScheduledFunctions(endTime); + currentTime = endTime; + }; + + self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { + var f; + if (typeof(funcToCall) === 'string') { + /* jshint evil: true */ + f = function() { return eval(funcToCall); }; + /* jshint evil: false */ + } else { + f = funcToCall; + } + + millis = millis || 0; + timeoutKey = timeoutKey || ++delayedFnCount; + runAtMillis = runAtMillis || (currentTime + millis); + + var funcToSchedule = { + runAtMillis: runAtMillis, + funcToCall: f, + recurring: recurring, + params: params, + timeoutKey: timeoutKey, + millis: millis + }; + + if (runAtMillis in scheduledFunctions) { + scheduledFunctions[runAtMillis].push(funcToSchedule); + } else { + scheduledFunctions[runAtMillis] = [funcToSchedule]; + scheduledLookup.push(runAtMillis); + scheduledLookup.sort(function (a, b) { + return a - b; + }); + } + + return timeoutKey; + }; + + self.removeFunctionWithId = function(timeoutKey) { + for (var runAtMillis in scheduledFunctions) { + var funcs = scheduledFunctions[runAtMillis]; + var i = indexOfFirstToPass(funcs, function (func) { + return func.timeoutKey === timeoutKey; + }); + + if (i > -1) { + if (funcs.length === 1) { + delete scheduledFunctions[runAtMillis]; + deleteFromLookup(runAtMillis); + } else { + funcs.splice(i, 1); + } + + // intervals get rescheduled when executed, so there's never more + // than a single scheduled function with a given timeoutKey + break; + } + } + }; + + self.reset = function() { + currentTime = 0; + scheduledLookup = []; + scheduledFunctions = {}; + delayedFnCount = 0; + }; + + return self; + + function indexOfFirstToPass(array, testFn) { + var index = -1; + + for (var i = 0; i < array.length; ++i) { + if (testFn(array[i])) { + index = i; + break; + } + } + + return index; + } + + function deleteFromLookup(key) { + var value = Number(key); + var i = indexOfFirstToPass(scheduledLookup, function (millis) { + return millis === value; + }); + + if (i > -1) { + scheduledLookup.splice(i, 1); + } + } + + function reschedule(scheduledFn) { + self.scheduleFunction(scheduledFn.funcToCall, + scheduledFn.millis, + scheduledFn.params, + true, + scheduledFn.timeoutKey, + scheduledFn.runAtMillis + scheduledFn.millis); + } + + function runScheduledFunctions(endTime) { + if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) { + return; + } + + do { + currentTime = scheduledLookup.shift(); + + var funcsToRun = scheduledFunctions[currentTime]; + delete scheduledFunctions[currentTime]; + + for (var i = 0; i < funcsToRun.length; ++i) { + var funcToRun = funcsToRun[i]; + funcToRun.funcToCall.apply(null, funcToRun.params || []); + + if (funcToRun.recurring) { + reschedule(funcToRun); + } + } + } while (scheduledLookup.length > 0 && + // checking first if we're out of time prevents setTimeout(0) + // scheduled in a funcToRun from forcing an extra iteration + currentTime !== endTime && + scheduledLookup[0] <= endTime); + } + } + + return DelayedFunctionScheduler; +}; + +getJasmineRequireObj().ExceptionFormatter = function() { + function ExceptionFormatter() { + this.message = function(error) { + var message = error.name + + ': ' + + error.message; + + if (error.fileName || error.sourceURL) { + message += " in " + (error.fileName || error.sourceURL); + } + + if (error.line || error.lineNumber) { + message += " (line " + (error.line || error.lineNumber) + ")"; + } + + return message; + }; + + this.stack = function(error) { + return error ? error.stack : null; + }; + } + + return ExceptionFormatter; +}; + +getJasmineRequireObj().Expectation = function() { + + var matchers = {}; + + function Expectation(options) { + this.util = options.util || { buildFailureMessage: function() {} }; + this.customEqualityTesters = options.customEqualityTesters || []; + this.actual = options.actual; + this.addExpectationResult = options.addExpectationResult || function(){}; + this.isNot = options.isNot; + + for (var matcherName in matchers) { + this[matcherName] = matchers[matcherName]; + } + } + + Expectation.prototype.wrapCompare = function(name, matcherFactory) { + return function() { + var args = Array.prototype.slice.call(arguments, 0), + expected = args.slice(0), + message = ""; + + args.unshift(this.actual); + + var matcher = matcherFactory(this.util, this.customEqualityTesters), + matcherCompare = matcher.compare; + + function defaultNegativeCompare() { + var result = matcher.compare.apply(null, args); + result.pass = !result.pass; + return result; + } + + if (this.isNot) { + matcherCompare = matcher.negativeCompare || defaultNegativeCompare; + } + + var result = matcherCompare.apply(null, args); + + if (!result.pass) { + if (!result.message) { + args.unshift(this.isNot); + args.unshift(name); + message = this.util.buildFailureMessage.apply(null, args); + } else { + message = result.message; + } + } + + if (expected.length == 1) { + expected = expected[0]; + } + + // TODO: how many of these params are needed? + this.addExpectationResult( + result.pass, + { + matcherName: name, + passed: result.pass, + message: message, + actual: this.actual, + expected: expected // TODO: this may need to be arrayified/sliced + } + ); + }; + }; + + Expectation.addCoreMatchers = function(matchers) { + var prototype = Expectation.prototype; + for (var matcherName in matchers) { + var matcher = matchers[matcherName]; + prototype[matcherName] = prototype.wrapCompare(matcherName, matcher); + } + }; + + Expectation.addMatchers = function(matchersToAdd) { + for (var name in matchersToAdd) { + var matcher = matchersToAdd[name]; + matchers[name] = Expectation.prototype.wrapCompare(name, matcher); + } + }; + + Expectation.resetMatchers = function() { + for (var name in matchers) { + delete matchers[name]; + } + }; + + Expectation.Factory = function(options) { + options = options || {}; + + var expect = new Expectation(options); + + // TODO: this would be nice as its own Object - NegativeExpectation + // TODO: copy instead of mutate options + options.isNot = true; + expect.not = new Expectation(options); + + return expect; + }; + + return Expectation; +}; + +//TODO: expectation result may make more sense as a presentation of an expectation. +getJasmineRequireObj().buildExpectationResult = function() { + function buildExpectationResult(options) { + var messageFormatter = options.messageFormatter || function() {}, + stackFormatter = options.stackFormatter || function() {}; + + return { + matcherName: options.matcherName, + expected: options.expected, + actual: options.actual, + message: message(), + stack: stack(), + passed: options.passed + }; + + function message() { + if (options.passed) { + return "Passed."; + } else if (options.message) { + return options.message; + } else if (options.error) { + return messageFormatter(options.error); + } + return ""; + } + + function stack() { + if (options.passed) { + return ""; + } + + var error = options.error; + if (!error) { + try { + throw new Error(message()); + } catch (e) { + error = e; + } + } + return stackFormatter(error); + } + } + + return buildExpectationResult; +}; + +getJasmineRequireObj().ObjectContaining = function(j$) { + + function ObjectContaining(sample) { + this.sample = sample; + } + + ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { + if (typeof(this.sample) !== "object") { throw new Error("You must provide an object to objectContaining, not '"+this.sample+"'."); } + + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + var hasKey = function(obj, keyName) { + return obj !== null && !j$.util.isUndefined(obj[keyName]); + }; + + for (var property in this.sample) { + if (!hasKey(other, property) && hasKey(this.sample, property)) { + mismatchKeys.push("expected has key '" + property + "', but missing from actual."); + } + else if (!j$.matchersUtil.equals(this.sample[property], other[property])) { + mismatchValues.push("'" + property + "' was '" + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + "' in actual, but was '" + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + "' in expected."); + } + } + + return (mismatchKeys.length === 0 && mismatchValues.length === 0); + }; + + ObjectContaining.prototype.jasmineToString = function() { + return "<jasmine.objectContaining(" + j$.pp(this.sample) + ")>"; + }; + + return ObjectContaining; +}; + +getJasmineRequireObj().pp = function(j$) { + + function PrettyPrinter() { + this.ppNestLevel_ = 0; + } + + PrettyPrinter.prototype.format = function(value) { + this.ppNestLevel_++; + try { + if (j$.util.isUndefined(value)) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === j$.getGlobal()) { + this.emitScalar('<global>'); + } else if (value.jasmineToString) { + this.emitScalar(value.jasmineToString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (j$.isSpy(value)) { + this.emitScalar("spy on " + value.and.identity()); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (value.__Jasmine_been_here_before__) { + this.emitScalar('<circular reference: ' + (j$.isArray_(value) ? 'Array' : 'Object') + '>'); + } else if (j$.isArray_(value) || j$.isA_('Object', value)) { + value.__Jasmine_been_here_before__ = true; + if (j$.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + delete value.__Jasmine_been_here_before__; + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } + }; + + PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (!obj.hasOwnProperty(property)) { continue; } + if (property == '__Jasmine_been_here_before__') { continue; } + fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) && + obj.__lookupGetter__(property) !== null) : false); + } + }; + + PrettyPrinter.prototype.emitArray = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitObject = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitScalar = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitString = j$.unimplementedMethod_; + + function StringPrettyPrinter() { + PrettyPrinter.call(this); + + this.string = ''; + } + + j$.util.inherit(StringPrettyPrinter, PrettyPrinter); + + StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); + }; + + StringPrettyPrinter.prototype.emitString = function(value) { + this.append("'" + value + "'"); + }; + + StringPrettyPrinter.prototype.emitArray = function(array) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append("Array"); + return; + } + + this.append('[ '); + for (var i = 0; i < array.length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + this.append(' ]'); + }; + + StringPrettyPrinter.prototype.emitObject = function(obj) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append("Object"); + return; + } + + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(' : '); + if (isGetter) { + self.append('<getter>'); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); + }; + + StringPrettyPrinter.prototype.append = function(value) { + this.string += value; + }; + + return function(value) { + var stringPrettyPrinter = new StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; + }; +}; + +getJasmineRequireObj().QueueRunner = function() { + + function QueueRunner(attrs) { + this.fns = attrs.fns || []; + this.onComplete = attrs.onComplete || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + this.onException = attrs.onException || function() {}; + this.catchException = attrs.catchException || function() { return true; }; + this.userContext = {}; + } + + QueueRunner.prototype.execute = function() { + this.run(this.fns, 0); + }; + + QueueRunner.prototype.run = function(fns, recursiveIndex) { + var length = fns.length, + self = this, + iterativeIndex; + + for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) { + var fn = fns[iterativeIndex]; + if (fn.length > 0) { + return attemptAsync(fn); + } else { + attemptSync(fn); + } + } + + var runnerDone = iterativeIndex >= length; + + if (runnerDone) { + this.clearStack(this.onComplete); + } + + function attemptSync(fn) { + try { + fn.call(self.userContext); + } catch (e) { + handleException(e); + } + } + + function attemptAsync(fn) { + var next = function () { self.run(fns, iterativeIndex + 1); }; + + try { + fn.call(self.userContext, next); + } catch (e) { + handleException(e); + next(); + } + } + + function handleException(e) { + self.onException(e); + if (!self.catchException(e)) { + //TODO: set a var when we catch an exception and + //use a finally block to close the loop in a nice way.. + throw e; + } + } + }; + + return QueueRunner; +}; + +getJasmineRequireObj().ReportDispatcher = function() { + function ReportDispatcher(methods) { + + var dispatchedMethods = methods || []; + + for (var i = 0; i < dispatchedMethods.length; i++) { + var method = dispatchedMethods[i]; + this[method] = (function(m) { + return function() { + dispatch(m, arguments); + }; + }(method)); + } + + var reporters = []; + + this.addReporter = function(reporter) { + reporters.push(reporter); + }; + + return this; + + function dispatch(method, args) { + for (var i = 0; i < reporters.length; i++) { + var reporter = reporters[i]; + if (reporter[method]) { + reporter[method].apply(reporter, args); + } + } + } + } + + return ReportDispatcher; +}; + + +getJasmineRequireObj().SpyStrategy = function() { + + function SpyStrategy(options) { + options = options || {}; + + var identity = options.name || "unknown", + originalFn = options.fn || function() {}, + getSpy = options.getSpy || function() {}, + plan = function() {}; + + this.identity = function() { + return identity; + }; + + this.exec = function() { + return plan.apply(this, arguments); + }; + + this.callThrough = function() { + plan = originalFn; + return getSpy(); + }; + + this.returnValue = function(value) { + plan = function() { + return value; + }; + return getSpy(); + }; + + this.throwError = function(something) { + var error = (something instanceof Error) ? something : new Error(something); + plan = function() { + throw error; + }; + return getSpy(); + }; + + this.callFake = function(fn) { + plan = fn; + return getSpy(); + }; + + this.stub = function(fn) { + plan = function() {}; + return getSpy(); + }; + } + + return SpyStrategy; +}; + +getJasmineRequireObj().Suite = function() { + function Suite(attrs) { + this.env = attrs.env; + this.id = attrs.id; + this.parentSuite = attrs.parentSuite; + this.description = attrs.description; + this.onStart = attrs.onStart || function() {}; + this.resultCallback = attrs.resultCallback || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + + this.beforeFns = []; + this.afterFns = []; + this.queueRunner = attrs.queueRunner || function() {}; + this.disabled = false; + + this.children = []; + + this.result = { + id: this.id, + status: this.disabled ? 'disabled' : '', + description: this.description, + fullName: this.getFullName() + }; + } + + Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + if (parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + } + return fullName; + }; + + Suite.prototype.disable = function() { + this.disabled = true; + }; + + Suite.prototype.beforeEach = function(fn) { + this.beforeFns.unshift(fn); + }; + + Suite.prototype.afterEach = function(fn) { + this.afterFns.unshift(fn); + }; + + Suite.prototype.addChild = function(child) { + this.children.push(child); + }; + + Suite.prototype.execute = function(onComplete) { + var self = this; + if (this.disabled) { + complete(); + return; + } + + var allFns = []; + + for (var i = 0; i < this.children.length; i++) { + allFns.push(wrapChildAsAsync(this.children[i])); + } + + this.onStart(this); + + this.queueRunner({ + fns: allFns, + onComplete: complete + }); + + function complete() { + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + + function wrapChildAsAsync(child) { + return function(done) { child.execute(done); }; + } + }; + + return Suite; +}; + +if (typeof window == void 0 && typeof exports == "object") { + exports.Suite = jasmineRequire.Suite; +} + +getJasmineRequireObj().Timer = function() { + function Timer(options) { + options = options || {}; + + var now = options.now || function() { return new Date().getTime(); }, + startTime; + + this.start = function() { + startTime = now(); + }; + + this.elapsed = function() { + return now() - startTime; + }; + } + + return Timer; +}; + +getJasmineRequireObj().matchersUtil = function(j$) { + // TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter? + + return { + equals: function(a, b, customTesters) { + customTesters = customTesters || []; + + return eq(a, b, [], [], customTesters); + }, + + contains: function(haystack, needle, customTesters) { + customTesters = customTesters || []; + + if (Object.prototype.toString.apply(haystack) === "[object Array]") { + for (var i = 0; i < haystack.length; i++) { + if (eq(haystack[i], needle, [], [], customTesters)) { + return true; + } + } + return false; + } + return haystack.indexOf(needle) >= 0; + }, + + buildFailureMessage: function() { + var args = Array.prototype.slice.call(arguments, 0), + matcherName = args[0], + isNot = args[1], + actual = args[2], + expected = args.slice(3), + englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + + var message = "Expected " + + j$.pp(actual) + + (isNot ? " not " : " ") + + englishyPredicate; + + if (expected.length > 0) { + for (var i = 0; i < expected.length; i++) { + if (i > 0) { + message += ","; + } + message += " " + j$.pp(expected[i]); + } + } + + return message + "."; + } + }; + + // Equality function lovingly adapted from isEqual in + // [Underscore](http://underscorejs.org) + function eq(a, b, aStack, bStack, customTesters) { + var result = true; + + for (var i = 0; i < customTesters.length; i++) { + var customTesterResult = customTesters[i](a, b); + if (!j$.util.isUndefined(customTesterResult)) { + return customTesterResult; + } + } + + if (a instanceof j$.Any) { + result = a.jasmineMatches(b); + if (result) { + return true; + } + } + + if (b instanceof j$.Any) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (b instanceof j$.ObjectContaining) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (a instanceof Error && b instanceof Error) { + return a.message == b.message; + } + + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) { return a !== 0 || 1 / a == 1 / b; } + // A strict comparison is necessary because `null == undefined`. + if (a === null || b === null) { return a === b; } + var className = Object.prototype.toString.call(a); + if (className != Object.prototype.toString.call(b)) { return false; } + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') { return false; } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) { return bStack[length] == b; } + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; } + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction(aCtor) && (aCtor instanceof aCtor) && + isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = has(b, key) && eq(a[key], b[key], aStack, bStack, customTesters))) { break; } + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (has(b, key) && !(size--)) { break; } + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + + return result; + + function has(obj, key) { + return obj.hasOwnProperty(key); + } + + function isFunction(obj) { + return typeof obj === 'function'; + } + } +}; + +getJasmineRequireObj().toBe = function() { + function toBe() { + return { + compare: function(actual, expected) { + return { + pass: actual === expected + }; + } + }; + } + + return toBe; +}; + +getJasmineRequireObj().toBeCloseTo = function() { + + function toBeCloseTo() { + return { + compare: function(actual, expected, precision) { + if (precision !== 0) { + precision = precision || 2; + } + + return { + pass: Math.abs(expected - actual) < (Math.pow(10, -precision) / 2) + }; + } + }; + } + + return toBeCloseTo; +}; + +getJasmineRequireObj().toBeDefined = function() { + function toBeDefined() { + return { + compare: function(actual) { + return { + pass: (void 0 !== actual) + }; + } + }; + } + + return toBeDefined; +}; + +getJasmineRequireObj().toBeFalsy = function() { + function toBeFalsy() { + return { + compare: function(actual) { + return { + pass: !!!actual + }; + } + }; + } + + return toBeFalsy; +}; + +getJasmineRequireObj().toBeGreaterThan = function() { + + function toBeGreaterThan() { + return { + compare: function(actual, expected) { + return { + pass: actual > expected + }; + } + }; + } + + return toBeGreaterThan; +}; + + +getJasmineRequireObj().toBeLessThan = function() { + function toBeLessThan() { + return { + + compare: function(actual, expected) { + return { + pass: actual < expected + }; + } + }; + } + + return toBeLessThan; +}; +getJasmineRequireObj().toBeNaN = function(j$) { + + function toBeNaN() { + return { + compare: function(actual) { + var result = { + pass: (actual !== actual) + }; + + if (result.pass) { + result.message = "Expected actual not to be NaN."; + } else { + result.message = "Expected " + j$.pp(actual) + " to be NaN."; + } + + return result; + } + }; + } + + return toBeNaN; +}; + +getJasmineRequireObj().toBeNull = function() { + + function toBeNull() { + return { + compare: function(actual) { + return { + pass: actual === null + }; + } + }; + } + + return toBeNull; +}; + +getJasmineRequireObj().toBeTruthy = function() { + + function toBeTruthy() { + return { + compare: function(actual) { + return { + pass: !!actual + }; + } + }; + } + + return toBeTruthy; +}; + +getJasmineRequireObj().toBeUndefined = function() { + + function toBeUndefined() { + return { + compare: function(actual) { + return { + pass: void 0 === actual + }; + } + }; + } + + return toBeUndefined; +}; + +getJasmineRequireObj().toContain = function() { + function toContain(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + + return { + pass: util.contains(actual, expected, customEqualityTesters) + }; + } + }; + } + + return toContain; +}; + +getJasmineRequireObj().toEqual = function() { + + function toEqual(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + var result = { + pass: false + }; + + result.pass = util.equals(actual, expected, customEqualityTesters); + + return result; + } + }; + } + + return toEqual; +}; + +getJasmineRequireObj().toHaveBeenCalled = function(j$) { + + function toHaveBeenCalled() { + return { + compare: function(actual) { + var result = {}; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (arguments.length > 1) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + result.pass = actual.calls.any(); + + result.message = result.pass ? + "Expected spy " + actual.and.identity() + " not to have been called." : + "Expected spy " + actual.and.identity() + " to have been called."; + + return result; + } + }; + } + + return toHaveBeenCalled; +}; + +getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { + + function toHaveBeenCalledWith(util) { + return { + compare: function() { + var args = Array.prototype.slice.call(arguments, 0), + actual = args[0], + expectedArgs = args.slice(1), + result = { pass: false }; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (!actual.calls.any()) { + result.message = "Expected spy " + actual.and.identity() + " to have been called with " + j$.pp(expectedArgs) + " but it was never called."; + return result; + } + + if (util.contains(actual.calls.allArgs(), expectedArgs)) { + result.pass = true; + result.message = "Expected spy " + actual.and.identity() + " not to have been called with " + j$.pp(expectedArgs) + " but it was."; + } else { + result.message = "Expected spy " + actual.and.identity() + " to have been called with " + j$.pp(expectedArgs) + " but actual calls were " + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + "."; + } + + return result; + } + }; + } + + return toHaveBeenCalledWith; +}; + +getJasmineRequireObj().toMatch = function() { + + function toMatch() { + return { + compare: function(actual, expected) { + var regexp = new RegExp(expected); + + return { + pass: regexp.test(actual) + }; + } + }; + } + + return toMatch; +}; + +getJasmineRequireObj().toThrow = function(j$) { + + function toThrow(util) { + return { + compare: function(actual, expected) { + var result = { pass: false }, + threw = false, + thrown; + + if (typeof actual != "function") { + throw new Error("Actual is not a Function"); + } + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + result.message = "Expected function to throw an exception."; + return result; + } + + if (arguments.length == 1) { + result.pass = true; + result.message = "Expected function not to throw, but it threw " + j$.pp(thrown) + "."; + + return result; + } + + if (util.equals(thrown, expected)) { + result.pass = true; + result.message = "Expected function not to throw " + j$.pp(expected) + "."; + } else { + result.message = "Expected function to throw " + j$.pp(expected) + ", but it threw " + j$.pp(thrown) + "."; + } + + return result; + } + }; + } + + return toThrow; +}; + +getJasmineRequireObj().toThrowError = function(j$) { + function toThrowError (util) { + return { + compare: function(actual) { + var threw = false, + thrown, + errorType, + message, + regexp, + name, + constructorName; + + if (typeof actual != "function") { + throw new Error("Actual is not a Function"); + } + + extractExpectedParams.apply(null, arguments); + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + return fail("Expected function to throw an Error."); + } + + if (!(thrown instanceof Error)) { + return fail("Expected function to throw an Error, but it threw " + thrown + "."); + } + + if (arguments.length == 1) { + return pass("Expected function not to throw an Error, but it threw " + fnNameFor(thrown) + "."); + } + + if (errorType) { + name = fnNameFor(errorType); + constructorName = fnNameFor(thrown.constructor); + } + + if (errorType && message) { + if (thrown.constructor == errorType && util.equals(thrown.message, message)) { + return pass("Expected function not to throw " + name + " with message \"" + message + "\"."); + } else { + return fail("Expected function to throw " + name + " with message \"" + message + + "\", but it threw " + constructorName + " with message \"" + thrown.message + "\"."); + } + } + + if (errorType && regexp) { + if (thrown.constructor == errorType && regexp.test(thrown.message)) { + return pass("Expected function not to throw " + name + " with message matching " + regexp + "."); + } else { + return fail("Expected function to throw " + name + " with message matching " + regexp + + ", but it threw " + constructorName + " with message \"" + thrown.message + "\"."); + } + } + + if (errorType) { + if (thrown.constructor == errorType) { + return pass("Expected function not to throw " + name + "."); + } else { + return fail("Expected function to throw " + name + ", but it threw " + constructorName + "."); + } + } + + if (message) { + if (thrown.message == message) { + return pass("Expected function not to throw an exception with message " + j$.pp(message) + "."); + } else { + return fail("Expected function to throw an exception with message " + j$.pp(message) + + ", but it threw an exception with message " + j$.pp(thrown.message) + "."); + } + } + + if (regexp) { + if (regexp.test(thrown.message)) { + return pass("Expected function not to throw an exception with a message matching " + j$.pp(regexp) + "."); + } else { + return fail("Expected function to throw an exception with a message matching " + j$.pp(regexp) + + ", but it threw an exception with message " + j$.pp(thrown.message) + "."); + } + } + + function fnNameFor(func) { + return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]; + } + + function pass(notMessage) { + return { + pass: true, + message: notMessage + }; + } + + function fail(message) { + return { + pass: false, + message: message + }; + } + + function extractExpectedParams() { + if (arguments.length == 1) { + return; + } + + if (arguments.length == 2) { + var expected = arguments[1]; + + if (expected instanceof RegExp) { + regexp = expected; + } else if (typeof expected == "string") { + message = expected; + } else if (checkForAnErrorType(expected)) { + errorType = expected; + } + + if (!(errorType || message || regexp)) { + throw new Error("Expected is not an Error, string, or RegExp."); + } + } else { + if (checkForAnErrorType(arguments[1])) { + errorType = arguments[1]; + } else { + throw new Error("Expected error type is not an Error."); + } + + if (arguments[2] instanceof RegExp) { + regexp = arguments[2]; + } else if (typeof arguments[2] == "string") { + message = arguments[2]; + } else { + throw new Error("Expected error message is not a string or RegExp."); + } + } + } + + function checkForAnErrorType(type) { + if (typeof type !== "function") { + return false; + } + + var Surrogate = function() {}; + Surrogate.prototype = type.prototype; + return (new Surrogate()) instanceof Error; + } + } + }; + } + + return toThrowError; +}; + +getJasmineRequireObj().version = function() { + return "2.0.0"; +}; diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine_favicon.png b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine_favicon.png Binary files differnew file mode 100644 index 0000000000..3562e278f1 --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine_favicon.png diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/spec/PlayerSpec.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/spec/PlayerSpec.js new file mode 100644 index 0000000000..976c0de51a --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/spec/PlayerSpec.js @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +describe("Player", function() { + var player; + var song; + + beforeEach(function() { + player = new Player(); + song = new Song(); + }); + + it("should be able to play a Song", function() { + player.play(song); + expect(player.currentlyPlayingSong).toEqual(song); + + //demonstrates use of custom matcher + expect(player).toBePlaying(song); + }); + + describe("when song has been paused", function() { + beforeEach(function() { + player.play(song); + player.pause(); + }); + + it("should indicate that the song is currently paused", function() { + expect(player.isPlaying).toBeFalsy(); + + // demonstrates use of 'not' with a custom matcher + expect(player).not.toBePlaying(song); + }); + + it("should be possible to resume", function() { + player.resume(); + expect(player.isPlaying).toBeTruthy(); + expect(player.currentlyPlayingSong).toEqual(song); + }); + }); + + // demonstrates use of spies to intercept and test method calls + it("tells the current song if the user has made it a favorite", function() { + spyOn(song, 'persistFavoriteStatus'); + + player.play(song); + player.makeFavorite(); + + expect(song.persistFavoriteStatus).toHaveBeenCalledWith(true); + }); + + //demonstrates use of expected exceptions + describe("#resume", function() { + it("should throw an exception if song is already playing", function() { + player.play(song); + + expect(function() { + player.resume(); + }).toThrowError("song is already playing"); + }); + }); +}); diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/spec/SpecHelper.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/spec/SpecHelper.js new file mode 100644 index 0000000000..b6b66da78a --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/spec/SpecHelper.js @@ -0,0 +1,35 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +beforeEach(function () { + jasmine.addMatchers({ + toBePlaying: function () { + return { + compare: function (actual, expected) { + var player = actual; + + return { + pass: player.currentlyPlayingSong === expected && player.isPlaying + } + } + }; + } + }); +}); diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/src/Player.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/src/Player.js new file mode 100644 index 0000000000..20be99a3ba --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/src/Player.js @@ -0,0 +1,42 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +function Player() { +} +Player.prototype.play = function(song) { + this.currentlyPlayingSong = song; + this.isPlaying = true; +}; + +Player.prototype.pause = function() { + this.isPlaying = false; +}; + +Player.prototype.resume = function() { + if (this.isPlaying) { + throw new Error("song is already playing"); + } + + this.isPlaying = true; +}; + +Player.prototype.makeFavorite = function() { + this.currentlyPlayingSong.persistFavoriteStatus(true); +}; diff --git a/catalog-fe/src/test/jasmine-standalone-2.0.0/src/Song.js b/catalog-fe/src/test/jasmine-standalone-2.0.0/src/Song.js new file mode 100644 index 0000000000..c16d77e378 --- /dev/null +++ b/catalog-fe/src/test/jasmine-standalone-2.0.0/src/Song.js @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +function Song() { +} + +Song.prototype.persistFavoriteStatus = function(value) { + // something complicated + throw new Error("not yet implemented"); +}; diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/ApplicationConfig.java b/catalog-fe/src/test/java/org/openecomp/sdc/ApplicationConfig.java new file mode 100644 index 0000000000..6297156eb6 --- /dev/null +++ b/catalog-fe/src/test/java/org/openecomp/sdc/ApplicationConfig.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc; + +import java.util.HashSet; +import java.util.Set; + +import javax.ws.rs.core.Application; + +import org.glassfish.jersey.media.multipart.MultiPartFeature; + +public class ApplicationConfig extends Application { + + public Set<Class<?>> getClasses() { + final Set<Class<?>> resources = new HashSet<Class<?>>(); + + // Add additional features such as support for Multipart. + resources.add(MultiPartFeature.class); + + return resources; + } + +} diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/ContentDisposiotionDelegator.java b/catalog-fe/src/test/java/org/openecomp/sdc/ContentDisposiotionDelegator.java new file mode 100644 index 0000000000..9b873879e5 --- /dev/null +++ b/catalog-fe/src/test/java/org/openecomp/sdc/ContentDisposiotionDelegator.java @@ -0,0 +1,35 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc; + +import java.util.Date; + +import org.glassfish.jersey.media.multipart.FormDataContentDisposition; + +public class ContentDisposiotionDelegator extends FormDataContentDisposition { + + public ContentDisposiotionDelegator(String type, String name, String fileName, Date creationDate, + Date modificationDate, Date readDate, long size) { + super(type, name, fileName, creationDate, modificationDate, readDate, size); + // TODO Auto-generated constructor stub + } + +} diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/Main.java b/catalog-fe/src/test/java/org/openecomp/sdc/Main.java new file mode 100644 index 0000000000..0737b414fd --- /dev/null +++ b/catalog-fe/src/test/java/org/openecomp/sdc/Main.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc; + +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.util.component.Container.Listener; +import org.eclipse.jetty.webapp.WebAppContext; +import org.openecomp.sdc.fe.listen.FEAppContextListener; + +public class Main { + public static void main(String[] args) throws Exception { + // The port that we should run on can be set into an environment + // variable + // Look for that variable and default to 8080 if it isn't there. + String webPort = System.getenv("PORT"); + if (webPort == null || webPort.isEmpty()) { + webPort = "8080"; + } + // String webPort = "9998"; + + final Server server = new Server(Integer.valueOf(webPort)); + server.addEventListener((Listener) new FEAppContextListener()); + final WebAppContext root = new WebAppContext(); + + root.setContextPath("/sdc1"); + // Parent loader priority is a class loader setting that Jetty accepts. + // By default Jetty will behave like most web containers in that it will + // allow your application to replace non-server libraries that are part + // of the + // container. Setting parent loader priority to true changes this + // behavior. + // Read more here: + // http://wiki.eclipse.org/Jetty/Reference/Jetty_Classloading + root.setParentLoaderPriority(true); + + final String webappDirLocation = "src/main/webapp/"; + root.setDescriptor(webappDirLocation + "/WEB-INF/web.xml"); + root.setResourceBase(webappDirLocation); + + server.setHandler(root); + + server.start(); + server.join(); + } +} diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/TestExternalConfiguration.java b/catalog-fe/src/test/java/org/openecomp/sdc/TestExternalConfiguration.java new file mode 100644 index 0000000000..ecbc055a81 --- /dev/null +++ b/catalog-fe/src/test/java/org/openecomp/sdc/TestExternalConfiguration.java @@ -0,0 +1,66 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc; + +import java.io.IOException; + +import org.openecomp.sdc.common.api.BasicConfiguration; +import org.openecomp.sdc.common.api.ConfigurationListener; +import org.openecomp.sdc.common.api.ConfigurationSource; +import org.openecomp.sdc.common.api.FileChangeCallback; +import org.openecomp.sdc.common.impl.ConfigFileChangeListener; +import org.openecomp.sdc.common.impl.ExternalConfiguration; +import org.openecomp.sdc.common.impl.FSConfigurationSource; +import org.openecomp.sdc.fe.config.Configuration; + +public class TestExternalConfiguration<T extends Object> { + + public static void main(String[] args) throws IOException { + + ExternalConfiguration.setAppName("catalog-server"); + ExternalConfiguration + .setConfigDir("C:\\Users\\esofer\\workspaceLuna\\catalog-server\\src\\test\\resources\\config"); + ExternalConfiguration.listenForChanges(); + + ConfigurationListener configurationListener = new ConfigurationListener(Configuration.class, + new FileChangeCallback() { + + @Override + public void reconfigure(BasicConfiguration obj) { + // TODO Auto-generated method stub + + } + }); + + ConfigurationSource configurationSource1 = new FSConfigurationSource(new ConfigFileChangeListener(), + ExternalConfiguration.getConfigDir()); + configurationSource1.getAndWatchConfiguration(Configuration.class, configurationListener); + + try { + Thread.currentThread().sleep(100 * 1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java new file mode 100644 index 0000000000..4c4eb1ca2a --- /dev/null +++ b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java @@ -0,0 +1,140 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.servlets; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.http.HttpFields; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockito.Mockito; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.servlets.FeProxyServlet; + +public class FeProxyServletTest { + /* + * Example Url Mappings: + * http://localhost:8080/sdc1/feProxy/rest/services/MichaelTest2/0.0.1/csar + * --> http://localhost:8090/sdc2/rest/services/MichaelTest2/0.0.1/csar + * http://localhost:8080/sdc1/feProxy/dummy/not/working --> + * http://localhost:8090/sdc2/dummy/not/working + */ + FeProxyServlet feProxy = new FeProxyServlet(); + final static HttpServletRequest servletRequest = Mockito.mock(HttpServletRequest.class); + final static HttpSession httpSession = Mockito.mock(HttpSession.class); + final static ServletContext servletContext = Mockito.mock(ServletContext.class); + final static ConfigurationManager configurationManager = Mockito.mock(ConfigurationManager.class); + final static Configuration configuration = Mockito.mock(Configuration.class); + final static Request proxyRequest = Mockito.spy(Request.class); + final static HttpFields httpFields = Mockito.mock(HttpFields.class); + + final static String BE_PROTOCOL = "http"; + final static String BE_HOST = "172.20.43.124"; + final static int BE_PORT = 8090; + final static String HEADER_1 = "Header1"; + final static String HEADER_2 = "Header2"; + final static String HEADER_3 = "Header3"; + final static String HEADER_1_VAL = "Header1_Val"; + final static String HEADER_2_VAL = "Header2_Val"; + final static String HEADER_3_VAL = "Header3_Val"; + final static String REQUEST_ID_VAL = "4867495a-5ed7-49e4-8be2-cc8d66fdd52b"; + + @BeforeClass + public static void beforeClass() { + when(servletRequest.getSession()).thenReturn(httpSession); + when(httpSession.getServletContext()).thenReturn(servletContext); + when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager); + when(configurationManager.getConfiguration()).thenReturn(configuration); + when(configuration.getBeProtocol()).thenReturn(BE_PROTOCOL); + when(configuration.getBeHost()).thenReturn(BE_HOST); + when(configuration.getBeHttpPort()).thenReturn(BE_PORT); + + List<String> strList = new ArrayList<String>(); + strList.add(HEADER_1); + strList.add(HEADER_2); + strList.add(HEADER_3); + + when(servletRequest.getHeaderNames()).thenReturn(Collections.enumeration(strList)); + when(servletRequest.getHeader(HEADER_1)).thenReturn(HEADER_1_VAL); + when(servletRequest.getHeader(HEADER_2)).thenReturn(HEADER_2_VAL); + when(servletRequest.getHeader(HEADER_3)).thenReturn(HEADER_3_VAL); + when(servletRequest.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID_VAL); + + when(proxyRequest.getHeaders()).thenReturn(httpFields); + when(httpFields.containsKey(HEADER_1)).thenReturn(true); + when(httpFields.containsKey(HEADER_2)).thenReturn(true); + when(httpFields.containsKey(HEADER_3)).thenReturn(false); + + } + + @Test + public void testRewriteURI_APIRequest() { + when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/rest/dummyBeAPI"); + String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/rest/dummyBeAPI"; + String expectedChangedUrl = BE_PROTOCOL + "://" + BE_HOST + ":" + BE_PORT + "/sdc2/rest/dummyBeAPI"; + when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl)); + + when(servletRequest.getContextPath()).thenReturn("/sdc1"); + when(servletRequest.getServletPath()).thenReturn("/feProxy/rest/dummyBeAPI"); + + URI rewriteURI = feProxy.rewriteURI(servletRequest); + + assertTrue(rewriteURI.toString().equals(expectedChangedUrl)); + } + + @Test + public void testRewriteURIWithQureyParam_APIRequest() { + when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/rest/gg%20g?subtype=VF"); + String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/rest/gg%20g?subtype=VF"; + String expectedChangedUrl = BE_PROTOCOL + "://" + BE_HOST + ":" + BE_PORT + "/sdc2/rest/gg%20g?subtype=VF"; + when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl)); + + when(servletRequest.getContextPath()).thenReturn("/sdc1"); + when(servletRequest.getServletPath()).thenReturn("/feProxy/rest/gg%20g?subtype=VF"); + + URI rewriteURI = feProxy.rewriteURI(servletRequest); + + assertTrue(rewriteURI.toString().equals(expectedChangedUrl)); + } + + @Test + public void testCustomizeProxyRequest() { + feProxy.customizeProxyRequest(proxyRequest, servletRequest); + verify(proxyRequest).header(HEADER_3, HEADER_3_VAL); + verify(proxyRequest, times(1)).header(Mockito.anyString(), Mockito.anyString()); + + } +} diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/servlets/PortalServletTest.java b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/PortalServletTest.java new file mode 100644 index 0000000000..f2ff870a91 --- /dev/null +++ b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/PortalServletTest.java @@ -0,0 +1,159 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.servlets; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.ws.rs.core.Application; + +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.server.ResourceConfig; +import org.glassfish.jersey.test.JerseyTest; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockito.Mockito; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.openecomp.sdc.common.api.Constants; +import org.openecomp.sdc.fe.config.Configuration; +import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.servlets.PortalServlet; + +public class PortalServletTest extends JerseyTest { + + final static HttpServletRequest request = Mockito.mock(HttpServletRequest.class); + final static HttpSession httpSession = Mockito.mock(HttpSession.class); + final static ServletContext servletContext = Mockito.mock(ServletContext.class); + final static ConfigurationManager configurationManager = Mockito.mock(ConfigurationManager.class); + final static Configuration configuration = Mockito.mock(Configuration.class); + final static HttpServletResponse response = Mockito.spy(HttpServletResponse.class); + final static RequestDispatcher rd = Mockito.spy(RequestDispatcher.class); + + @SuppressWarnings("serial") + @BeforeClass + public static void setUpTests() { + when(request.getRequestDispatcher(Mockito.anyString())).thenReturn(rd); + when(request.getSession()).thenReturn(httpSession); + when(httpSession.getServletContext()).thenReturn(servletContext); + when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager); + when(configurationManager.getConfiguration()).thenReturn(configuration); + List<List<String>> mandatoryHeaders = new ArrayList<List<String>>(); + mandatoryHeaders.add(new ArrayList<String>() { + { + add("HTTP_IV_USER"); + add("iv-user"); + } + }); + mandatoryHeaders.add(new ArrayList<String>() { + { + add("HTTP_CSP_ATTUID"); + add("csp-attuid"); + } + }); + mandatoryHeaders.add(new ArrayList<String>() { + { + add("USER_ID"); + add("csp-userId"); + } + }); + mandatoryHeaders.add(new ArrayList<String>() { + { + add("HTTP_CSP_WSTYPE"); + add("csp-wstype csp-wstype"); + } + }); + + List<List<String>> optionalHeaders = new ArrayList<List<String>>(); + optionalHeaders.add(new ArrayList<String>() { + { + add("HTTP_CSP_FIRSTNAME"); + add("csp-firstname"); + } + }); + optionalHeaders.add(new ArrayList<String>() { + { + add("HTTP_CSP_LASTNAME"); + add("csp-lastname"); + } + }); + optionalHeaders.add(new ArrayList<String>() { + { + add("HTTP_IV_REMOTE_ADDRESS"); + add("iv-remote-address"); + } + }); + + when(configuration.getIdentificationHeaderFields()).thenReturn(mandatoryHeaders); + when(configuration.getOptionalHeaderFields()).thenReturn(optionalHeaders); + + } + + @Test + public void testMissingHeadersRequest() throws IOException { + when(request.getHeader(Mockito.anyString())).thenReturn(null); + target().path("/portal").request().get(); + Mockito.verify(response, times(1)).sendError(HttpServletResponse.SC_USE_PROXY, PortalServlet.MISSING_HEADERS_MSG); + Mockito.reset(response, rd); + } + + @Test + public void testSuccesfulRequest() throws IOException, ServletException { + Mockito.doAnswer(new Answer<Object>() { + public Object answer(InvocationOnMock invocation) { + Object[] args = invocation.getArguments(); + String headerName = (String) args[0]; + return headerName; + } + }).when(request).getHeader(Mockito.anyString()); + target().path("/portal").request().get(); + verify(rd).forward(Mockito.any(ServletRequest.class), Mockito.any(ServletResponse.class)); + Mockito.reset(response, rd); + } + + @Override + protected Application configure() { + ResourceConfig resourceConfig = new ResourceConfig(PortalServlet.class); + + resourceConfig.register(new AbstractBinder() { + @Override + protected void configure() { + bind(request).to(HttpServletRequest.class); + bind(response).to(HttpServletResponse.class); + } + }); + + return resourceConfig; + } +} diff --git a/catalog-fe/src/test/resources/CI/ReadMe.txt b/catalog-fe/src/test/resources/CI/ReadMe.txt new file mode 100644 index 0000000000..c12020240d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/ReadMe.txt @@ -0,0 +1,5 @@ +In Order to Run the CI: + +1. Configure ip and port for catalog-fe in env.sh file located in CI\tests\env +2. run script runTests.sh with the env file as parameter: ./runTests.sh env/env.sh +
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/originalResources/apache-type.yml b/catalog-fe/src/test/resources/CI/originalResources/apache-type.yml new file mode 100644 index 0000000000..360b1a2d60 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/apache-type.yml @@ -0,0 +1,50 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 +description: TOSCA simple profile with Apache. +template_name: apache-type +template_version: 2.0.0-SNAPSHOT +template_author: FastConnect + +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + - "tosca-normative-types-webServer:1.0.0.wd03-SNAPSHOT" + +node_types: + alien.nodes.Apache: + derived_from: tosca.nodes.WebServer + description: > + The TOSCA Apache Node Type represents an apache component + that can be managed and run by a TOSCA Compute Node Type. + capabilities: + host: + type: alien.capabilities.ApacheContainer + properties: + valid_node_types: [ tosca.nodes.WebApplication ] + tags: + icon: /images/apache.png + properties: + version: + type: version + default: 2.4 + constraints: + - equal: 2.4 + port: + type: integer + description: Port for the Apache server + default: 80 + constraints: + - greater_or_equal: 1 + document_root: + type: string + default: "/var/www" + interfaces: + Standard: + create: + inputs: + PORT: { get_property: [SELF, port] } + DOC_ROOT: { get_property: [SELF, document_root] } + implementation: scripts/install_apache.sh + start: scripts/start_apache.sh + +capability_types: + alien.capabilities.ApacheContainer: + derived_from: tosca.capabilities.Container diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/apache.png b/catalog-fe/src/test/resources/CI/originalResources/images/apache.png Binary files differnew file mode 100644 index 0000000000..8e9f402d90 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/apache.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/compute.png b/catalog-fe/src/test/resources/CI/originalResources/images/compute.png Binary files differnew file mode 100644 index 0000000000..7d5297eed3 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/compute.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/loadbalancer.png b/catalog-fe/src/test/resources/CI/originalResources/images/loadbalancer.png Binary files differnew file mode 100644 index 0000000000..62f0fa8aae --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/loadbalancer.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/network.png b/catalog-fe/src/test/resources/CI/originalResources/images/network.png Binary files differnew file mode 100644 index 0000000000..c8bf18f31a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/network.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/objectstore.png b/catalog-fe/src/test/resources/CI/originalResources/images/objectstore.png Binary files differnew file mode 100644 index 0000000000..2b2063c4f7 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/objectstore.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/relational_db.png b/catalog-fe/src/test/resources/CI/originalResources/images/relational_db.png Binary files differnew file mode 100644 index 0000000000..a7a632effd --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/relational_db.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/root.png b/catalog-fe/src/test/resources/CI/originalResources/images/root.png Binary files differnew file mode 100644 index 0000000000..170f1c3c27 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/root.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/router.png b/catalog-fe/src/test/resources/CI/originalResources/images/router.png Binary files differnew file mode 100644 index 0000000000..379cdceec0 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/router.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/software.png b/catalog-fe/src/test/resources/CI/originalResources/images/software.png Binary files differnew file mode 100644 index 0000000000..dc9c53245d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/software.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/images/volume.png b/catalog-fe/src/test/resources/CI/originalResources/images/volume.png Binary files differnew file mode 100644 index 0000000000..16fa17bd70 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/images/volume.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-DBMS.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-DBMS.yml new file mode 100644 index 0000000000..4a924672fc --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-DBMS.yml @@ -0,0 +1,36 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-DBMS +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + - "tosca-normative-types-softwareComponent:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.DBMS: + abstract: true + derived_from: tosca.nodes.SoftwareComponent + description: > + The TOSCA DBMS node represents a typical relational, SQL Database Management System software component or service. + tags: + icon: /images/relational_db.png + properties: + dbms_root_password: + type: string + required: false + description: the root password for the DBMS service. + dbms_port: + type: integer + required: false + description: the port the DBMS service will listen to for data and requests + capabilities: + host: + type: tosca.capabilities.Container + properties: + valid_node_types: [tosca.nodes.Database] + endpoint: + type: tosca.capabilities.DatabaseEndpoint + diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-blockStorage.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-blockStorage.yml new file mode 100644 index 0000000000..df942b9f4f --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-blockStorage.yml @@ -0,0 +1,40 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-blockStorage +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.BlockStorage: + derived_from: tosca.nodes.Root + description: > + The TOSCA BlockStorage node currently represents a server-local block storage device (i.e., not shared) + offering evenly sized blocks of data from which raw storage volumes can be created. + tags: + icon: /images/volume.png + properties: + size: + type: integer + required: false + constraints: + - greater_than: 0 + description: The requested storage size in MegaBytes (MB). + volume_id: + type: string + required: false + description: ID of an existing volume (that is in the accessible scope of the requesting application). + snapshot_id: + type: string + required: false + description: Some identifier that represents an existing snapshot that should be used when creating the block storage (volume). + attributes: + volume_id: + type: string + description: ID provided by the orchestrator for newly created volumes. + requirements: + attachment: + type: tosca.capabilities.Attachment diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-compute.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-compute.yml new file mode 100644 index 0000000000..3a972a81e0 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-compute.yml @@ -0,0 +1,77 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-compute +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + +node_types: + # Infrastructure components + tosca.nodes.Compute: + derived_from: tosca.nodes.Root + description: > + Represents a real or virtual machine or ‘server’. Informations specified on the Compute + node will be used to find the machine that fits the given requirements in the cloud + available machines. If no sizing informations are specified the cloud’s provider default + machine will be used. It is strongly recommended to specify the required cpus and memory + at least. + tags: + icon: /images/compute.png + properties: + num_cpus: + type: integer + required: false + constraints: + - greater_than: 0 + description: Number of (actual or virtual) CPUs associated with the Compute node. + mem_size: + type: integer + required: false + constraints: + - greater_than: 0 + description: Size of memory, in Megabytes (MB), available to applications running on the Compute node. + disk_size: + type: integer + required: false + constraints: + - greater_than: 0 + description: Size of the local disk, in Gigabytes (GB), available to applications running on the Compute node. + os_arch: + type: string + constraints: + - valid_values: ["x86_32", "x86_64"] + description: The host Operating System (OS) architecture. + os_type: + type: string + constraints: + - valid_values: ["linux", "aix", "mac os", "windows"] + description: The host Operating System (OS) type. + os_distribution: + type: string + required: false + description: The host Operating System (OS) distribution. + os_version: + type: string + required: false + description: The host Operating System version. + attributes: + ip_address: + type: string + description: > + The primary IP address assigned by the cloud provider that applications may use to access the Compute node. + Note: This is used by the platform provider to convey the primary address used to access the compute node. Future working drafts will address implementations that support floating or multiple IP addresses. + requirements: + network: + type: tosca.capabilities.Connectivity + lower_bound: 0 + upper_bound: unbounded + capabilities: + host: + type: tosca.capabilities.Container + properties: + valid_node_types: [tosca.nodes.SoftwareComponent] + attach: tosca.capabilities.Attachment + scalable: tosca.capabilities.Scalable diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-database.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-database.yml new file mode 100644 index 0000000000..38bf5d11db --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-database.yml @@ -0,0 +1,41 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-database +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + - "tosca-normative-types-DBMS:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.Database: + derived_from: tosca.nodes.Root + description: > + Base type for the schema and content associated with a DBMS. + The TOSCA Database node represents a logical database that can be managed and hosted by a TOSCA DBMS node. + tags: + icon: /images/relational_db.png + properties: + db_user: + type: string + required: false + description: The special user account used for database administration. + db_password: + type: string + required: false + description: The password associated with the user account provided in the ‘db_user’ property. + db_port: + type: integer + required: false + description: The port on which the underlying database service will listen to data. + db_name: + type: string + required: false + description: The logical name of the database. + requirements: + - host: tosca.nodes.DBMS + relationship_type: tosca.relationships.HostedOn + capabilities: + database_endpoint: tosca.capabilities.DatabaseEndpoint diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-network.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-network.yml new file mode 100644 index 0000000000..bb860f82be --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-network.yml @@ -0,0 +1,39 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-network +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.Network: + derived_from: tosca.nodes.Root + description: > + The TOSCA Network node represents a simple, logical network service. + properties: + ip_version: + type: integer + required: false + default: 4 + constraints: + - valid_values: [ 4, 6 ] + cidr: + type: string + required: false + gateway_ip: + type: string + required: false + network_name: + type: string + required: false + network_id: + type: string + required: false + capabilities: + connection: + type: tosca.capabilities.Connectivity + tags: + icon: /images/network.png diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-objectStorage.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-objectStorage.yml new file mode 100644 index 0000000000..a56fad5363 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-objectStorage.yml @@ -0,0 +1,35 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-objectStorage +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.ObjectStorage: + abstract: true + derived_from: tosca.nodes.Root + description: > + The TOSCA ObjectStorage node represents storage that provides the ability to store data as objects (or BLOBs of data) + without consideration for the underlying filesystem or devices. + tags: + icon: /images/objectstore.png + properties: + store_name: + type: string + description: The logical name of the object store (or container). + store_size: + type: integer + required: false + constraints: + - greater_or_equal: 0 + description: The requested initial storage size in Gigabytes. + store_maxsize: + type: integer + required: false + constraints: + - greater_than: 0 + description: The requested maximum storage size in Gigabytes. diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-root.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-root.yml new file mode 100644 index 0000000000..7f4c16c260 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-root.yml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-root +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. + +node_types: + tosca.nodes.Root: + abstract: true + description: > + This is the default (root) TOSCA Node Type that all other TOSCA nodes should extends. + This allows all TOSCA nodes to have a consistent set of features for modeling and management + (e.g, consistent definitions for requirements, capabilities, and lifecycle interfaces). + tags: + icon: /images/root.png + attributes: + tosca_id: + type: string + tosca_name: + type: string + requirements: + dependency: + type: tosca.capabilities.Root + lower_bound: 0 + upper_bound: unbounded + capabilities: + root: + type: tosca.capabilities.Root + interfaces: + tosca.interfaces.node.lifecycle.Standard: + description: > + This lifecycle interface defines the essential, normative operations that TOSCA nodes may support. + create: + description: Standard lifecycle create operation. + configure: + description: Standard lifecycle configure operation (pre-start). + start: + description: Standard lifecycle start operation. + post_start: + description: Standard lifecycle post-configure operation (post-start) + stop: + description: Standard lifecycle stop operation. + delete: + description: Standard lifecycle delete operation. + + +capability_types: + tosca.capabilities.Root: + description: This is the default (root) TOSCA Capability Type definition that all other TOSCA Capability Types derive from. + tosca.capabilities.Container: + derived_from: tosca.capabilities.Root + properties: + valid_node_types: + type: string + required: true + description: > + A list of one or more names of Node Types that are supported as containees that declare the Container type as a Capability. + tosca.capabilities.Endpoint: + derived_from: tosca.capabilities.Root + properties: + protocol: + type: string + default: tcp + port: + type: integer + required: false + constraints: + - greater_or_equal: 1 + - less_or_equal: 65535 + secure: + type: boolean + default: false + url_path: + type: string + required: false + tosca.capabilities.DatabaseEndpoint: + derived_from: tosca.capabilities.Endpoint + description: This is the default TOSCA type that should be used or extended to define a specialized database endpoint capability. + tosca.capabilities.Attachment: + derived_from: tosca.capabilities.Root + description: This is the default TOSCA type that should be used or extended to define a network endpoint capability. + tosca.capabilities.Scalable: + derived_from: tosca.capabilities.Root + properties: + min_intances: + type: integer + default: 1 + max_intances: + type: integer + default: 1 + default_instances: + type: integer + default: 1 + tosca.capabilities.Connectivity: + derived_from: tosca.capabilities.Root + +relationship_types: + tosca.relationships.Root: + abstract: true + description: This is the default (root) TOSCA Relationship Type definition that all other TOSCA Relationship Types derive from. + valid_targets: [ tosca.capabilities.Root ] + attributes: + tosca_id: + type: string + tosca_name: + type: string + interfaces: + tosca.interfaces.relationship.Configure: + description: > + The lifecycle interfaces define the essential, normative operations that each TOSCA Relationship Types may support. + pre_configure_source: + description: Operation to pre-configure the source endpoint. + pre_configure_target: + description: Operation to pre-configure the target endpoint. + post_configure_source: + description: Operation to post-configure the source endpoint. + post_configure_target: + description: Operation to post-configure the target endpoint. + add_target: + description: Operation to notify the source node of a target node being added via a relationship. + add_source: + description: Operation to notify the target node of a source node which is now available via a relationship. + remove_target: + description: Operation to notify the source node of a target node being removed from a relationship. + remove_source: + description: Operation to notify the target node of a source node being removed from a relationship. + target_changed: + description: Operation to notify source some property or attribute of the target. + source_changed: + description: Operation to notify target some property or attribute of the source. + tosca.relationships.DependsOn: + derived_from: tosca.relationships.Root + description: > + A generic depends on relationship. + tosca.relationships.HostedOn: + derived_from: tosca.relationships.DependsOn + description: Relationship to use to describe that the source is hosted (installed/ deployed) on the target node. + valid_targets: [ tosca.capabilities.Container ] + tosca.relationships.ConnectsTo: + derived_from: tosca.relationships.DependsOn + valid_targets: [ tosca.capabilities.Endpoint ] + tosca.relationships.AttachTo: + derived_from: tosca.relationships.Root + valid_targets: [ tosca.capabilities.Attachment ] + properties: + location: + type: string + constraints: + - min_length: 1 + device: + type: string + required: false + tosca.relationships.Network: + derived_from: tosca.relationships.Root + valid_sources: [ tosca.capabilities.Connectivity ] + valid_targets: [ tosca.capabilities.Connectivity ] + +artifact_types: + tosca.artifacts.Root: + description: The TOSCA Artifact Type all other TOSCA Artifact Types derive from. + tosca.artifacts.File: + derived_from: tosca.artifacts.Root + description: This artifact type is used when an artifact definition needs to have its associated file simply treated as a file and no special handling/handlers are invoked. + tosca.artifacts.ShellScript: + description: A shell script (.sh file) + file_ext: [ sh ] diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-softwareComponent.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-softwareComponent.yml new file mode 100644 index 0000000000..04e04af640 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-softwareComponent.yml @@ -0,0 +1,25 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-softwareComponent +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + - "tosca-normative-types-compute:1.0.0.wd03-SNAPSHOT" + +node_types: + + tosca.nodes.SoftwareComponent: + abstract: true + derived_from: tosca.nodes.Root + description: > + The TOSCA SoftwareComponent Node Type represents a generic software component + that can be managed and run by a TOSCA Compute Node Type. + requirements: + - host: tosca.nodes.Compute + type: tosca.relationships.HostedOn + tags: + icon: /images/software.png + diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-webApplication.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-webApplication.yml new file mode 100644 index 0000000000..ded008ebdf --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-webApplication.yml @@ -0,0 +1,21 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-webApplication +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + - "tosca-normative-types-webServer:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.WebApplication: + derived_from: tosca.nodes.Root + description: > + The TOSCA WebApplication node represents a software application that can be managed and run by a TOSCA WebServer node. Specific types of web applications such as Java, etc. could be derived from this type. + tags: + icon: /images/network.png + requirements: + - host: tosca.nodes.WebServer + type: tosca.relationships.HostedOn diff --git a/catalog-fe/src/test/resources/CI/originalResources/normative-types-webServer.yml b/catalog-fe/src/test/resources/CI/originalResources/normative-types-webServer.yml new file mode 100644 index 0000000000..1c2e4b2ea5 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/normative-types-webServer.yml @@ -0,0 +1,24 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03 + +template_name: tosca-normative-types-webServer +template_author: TOSCA TC +template_version: 1.0.0.wd03-SNAPSHOT + +description: Contains the normative types definition. +imports: + - "tosca-normative-types-root:1.0.0.wd03-SNAPSHOT" + - "tosca-normative-types-softwareComponent:1.0.0.wd03-SNAPSHOT" + +node_types: + tosca.nodes.WebServer: + abstract: true + derived_from: tosca.nodes.SoftwareComponent + description: > + The TOSCA WebServer Node Type represents an abstract software component or service that is capable of hosting and providing management operations for one or more WebApplication nodes + capabilities: + app_endpoint: tosca.capabilities.Endpoint + secure_endpoint: tosca.capabilities.Endpoint + host: + type: tosca.capabilities.Container + properties: + valid_node_types: [ tosca.nodes.WebApplication ] diff --git a/catalog-fe/src/test/resources/CI/originalResources/scripts/apache_start_detection.groovy b/catalog-fe/src/test/resources/CI/originalResources/scripts/apache_start_detection.groovy new file mode 100644 index 0000000000..93d732e0cd --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/scripts/apache_start_detection.groovy @@ -0,0 +1,6 @@ +import org.cloudifysource.dsl.utils.ServiceUtils + +println "apache_start_detection.groovy: port http=${PORT} ..." +def isPortOccupied = ServiceUtils.isPortOccupied(Integer.parseInt(PORT)) +println "apache_start_detection.groovy: isPortOccupied http=${PORT} ... ${isPortOccupied}" +return isPortOccupied diff --git a/catalog-fe/src/test/resources/CI/originalResources/scripts/install_apache.sh b/catalog-fe/src/test/resources/CI/originalResources/scripts/install_apache.sh new file mode 100644 index 0000000000..a77f9a13f8 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/scripts/install_apache.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +echo "Using apt-get. Installing apache2 on one of the following : Debian, Ubuntu, Mint" +LOCK="/tmp/lockaptget" +DEFAULT_PORT=80 + +while true; do + if mkdir "${LOCK}" &>/dev/null; then + echo "Apache take the lock" + break; + fi + echo "Waiting the end of one of our recipes..." + sleep 0.5 +done + +while sudo fuser /var/lib/dpkg/lock >/dev/null 2>&1 ; do + echo "Waiting for other software managers to finish..." + sleep 0.5 +done + +sudo rm -f /var/lib/dpkg/lock +sudo apt-get update || (sleep 15; sudo apt-get update || exit ${1}) +sudo apt-get install -y -q apache2 || exit ${1} +rm -rf "${LOCK}" + +sudo /etc/init.d/apache2 stop +if [ ! -d $DOC_ROOT ]; then + eval "sudo mkdir -p $DOC_ROOT" +fi +eval "sudo chown -R www-data:www-data $DOC_ROOT" + +if [[ ("$PORT" == "$DEFAULT_PORT") ]]; then + echo "Use default port for Apache : $DEFAULT_PORT" +else + echo "Replacing port $DEFAULT_PORT with $PORT..." + sudo sed -i -e "s/$DEFAULT_PORT/$PORT/g" /etc/apache2/ports.conf || exit ${1} +fi + +echo "Change config of apache2" +if sudo test -f "/etc/apache2/sites-available/default"; then + echo "Change the DocumentRoot of apache2 on Ubuntu < 14.04" + sudo sed -i -e "s#DocumentRoot /var/www#DocumentRoot $DOC_ROOT#g" /etc/apache2/sites-available/default +fi +if sudo test -f "/etc/apache2/sites-available/000-default.conf"; then + echo "Change the DocumentRoot of Apache2 on Ubuntu >= 14.04" + sudo sed -i -e "s#DocumentRoot /var/www/html#DocumentRoot $DOC_ROOT#g" /etc/apache2/sites-available/000-default.conf +fi + +sudo bash -c "echo ServerName localhost >> /etc/apache2/apache2.conf" + +echo "Start apache2 whith new conf" +sudo /etc/init.d/apache2 start +echo "End of $0" diff --git a/catalog-fe/src/test/resources/CI/originalResources/scripts/start_apache.sh b/catalog-fe/src/test/resources/CI/originalResources/scripts/start_apache.sh new file mode 100644 index 0000000000..478c56edf5 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/originalResources/scripts/start_apache.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +service="apache2" + +if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 )) +then + sudo /etc/init.d/$service restart +else + sudo /etc/init.d/$service start +fi diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/body.txt b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/body.txt new file mode 100644 index 0000000000..681335d644 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-root.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"root.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/root.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/command b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/commandTrial b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/contentMD5.txt new file mode 100644 index 0000000000..83e75b2b56 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/contentMD5.txt @@ -0,0 +1 @@ +YmEzYWEwZWNjYjk3N2EyZDBhYTc5M2M0NjkyM2Y5OTE=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/headers b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/results b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/toExec b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/01_NormativeTypeCI-root/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/body.txt b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/body.txt new file mode 100644 index 0000000000..d197f9e4ec --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-compute.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"compute.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/compute.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/command b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/commandTrial b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/contentMD5.txt new file mode 100644 index 0000000000..c1d5e6e533 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/contentMD5.txt @@ -0,0 +1 @@ +ZjcyYzUxNzM5YzJlNzk0YTlmNzM5Zjc5ODE2NDQwMWI=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/headers b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/results b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/toExec b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/02_NormativeTypeCI-compute/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/body.txt b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/body.txt new file mode 100644 index 0000000000..55b79ccd58 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-blockStorage.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"volume.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/volume.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/command b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/commandTrial b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/contentMD5.txt new file mode 100644 index 0000000000..697f377b62 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/contentMD5.txt @@ -0,0 +1 @@ +NzM2NDVmNDI4ODM3MWYxNWRmNDcwNGJhZmE0NjdiMmQ=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/headers b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/results b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/toExec b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/03_NormativeTypeCI-blockStorage/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/body.txt b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/body.txt new file mode 100644 index 0000000000..b5337685d5 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-objectStorage.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"objectstore.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/objectstore.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/command b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/commandTrial b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/contentMD5.txt new file mode 100644 index 0000000000..1a7037769f --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/contentMD5.txt @@ -0,0 +1 @@ +ZDdmYjFmODg4ODZlOGRkMDE0NWNhNGYwYjRhNmExN2Q=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/headers b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/results b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/toExec b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/04_NormativeTypeCI-objectStorage/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/body.txt b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/body.txt new file mode 100644 index 0000000000..a6b6faae8d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-softwareComponent.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"software.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/software.png"}],"payloadData":"UEsDBAoAAAAIAOJdbEYqXfgFaQEAAPQCAAAlAAAAbm9ybWF0aXZlLXR5cGVzLXNvZnR3YXJlQ29tcG9uZW50LnltbH1SS2/CMAy+51dY3NuBduth0tQLJ5hG75XXGBqJJJ3jbuLfzw0F9kBTLpHzPezPkZg6bC3tXXDiYkjtB3HSSwWSn5Lzw5HaE/pju2qXej7t8tEYIa2jUBvQ0wwuQmSP4j6okNNAqUhxL5/IVEc/xEBBbjQcpY9cQbPd1c/Q1LeXawOrcqlnsit2m+eX3XrbGGMpdewGyYg6BkEXEkhPcDWHbA63oUqjQ0SWVBmAAhb3m+UYpbrjufiP1Olko9B9ngnRUpuBlVGVLFFOxVTufkcz9QaAb0kYO9FEeaRcssTqZ9s9R1/90HjVjmfIt1Cecgmg0UzO6f7xgo3yodHGgGlgSlpLgHCgoGYdXPYG3XVxZ03pUaDDAG8EHgMeyAIGCzxq6aQKZ8P6nMrNpsx8pvfRMfnJrZoVC+hjkp9zzfQZAXmfFwSTfpLpo/ZuSOVauWS3IUMFD1dZ101RPDivLaaHyzzlEA7GfAFQSwMECgAAAAAA4l1sRgAAAAAAAAAAAAAAAAcAAABpbWFnZXMvUEsDBAoAAAAAAOJdbEacjiETb9gAAG/YAAATAAAAaW1hZ2VzL3NvZnR3YXJlLnBuZ4lQTkcNChoKAAAADUlIRFIAAAGHAAACAAgGAAAAaUOggwAAAARzQklUCAgICHwIZIgAAAAJcEhZcwAAGzQAABs0AbsOJE0AAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAKXRFWHRUaXRsZQBTb2Z0d2FyZSBDYXJ0b24gQm94IFdlYiAyLjAgKHJlbWl4KV/asksAAAAVdEVYdEF1dGhvcgBwYWxvbWFpcm9uaXF1ZZDwO/kAAADTdEVYdERlc2NyaXB0aW9uAFNvZnR3YXJlIENhcnRvbiBCb3ggV2ViIDIuMCAocmVtaXhlZCBpbGx1c3RyYXRpb24gZnJvbSB0aGUgZXhjZWxsZW50IHdvcmsgb2YgImxlYW5kcm9zY2lvbGFAZ21haWwuY29tIikgLSBCb8OudGUgZW4gY2FydG9uIGR1IGxvZ2ljaWVsIFdlYiAyLjAgLSBTb2Z0d2FyZSBLYXJ0b24gV2ViIDIuMCAtIENhcnRvbmUgY29uIHNvZnR3YXJlIFdlYiAyLjAZE/0rAAAAIXRFWHRDcmVhdGlvbiBUaW1lADIwMTAtMDYtMTBUMTk6NTU6MTIMWx2BAAAAYHRFWHRTb3VyY2UAaHR0cDovL29wZW5jbGlwYXJ0Lm9yZy9kZXRhaWwvNjU2Mjkvc29mdHdhcmUtY2FydG9uLWJveC13ZWItMi4wLShyZW1peCktYnktcGFsb21haXJvbmlxdWWxIioQAAAASXRFWHRDb3B5cmlnaHQAUHVibGljIERvbWFpbiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9wdWJsaWNkb21haW4vWcP+ygAAIABJREFUeJzsvXmcFNW5Pv5Ur9PrDLMwrGoAEQQFkUVABK9xize5Ji6RX8I1akxIFJerJgrfRKNJcM1ighKXEGOIkShuaIyJxhgWBRSDGBVFgdlgmJnunq2XqlPn90d19/RSa3d1d1VPPZ8P2lNVZ6nqrvc57/O+5xyGUgoLFixYqGZMv+HHNgDBjH+1AAI5x1L/AgBTC+AIgH8B2LLnvlUtleh3JcFY5GDBggWzYfr/3eGFYOBrkTb2TDDj76HPDAIA/AAYAJkGT+Yzk3v8IIaIol3fuzEmLHKwYMFCRTH9+jucYFALoA5DRj3H8GcdDwBwJItnGDBG3Ngzagkh83MeOWR+/gzAZghEcVjh9kwLixwsWLCgG6Zdf7sNgvFOGftMQ1/L5PydlG9qhmxxIYY8hbKRQ+bnfWCwGcDWPfeuOoIqgkUOFixYkMS0636Ukm/qMkb3dUmjLkYAAWRYVuQYVCbvOCN8Ni45KJdh0p/3AtgKgSi6YXJY5GDBwjDBtOtucyaNep3Iv5RxH5HxuQ6AE/lGEGmjPgRVn/PJAQCYcpJDcXXJk0MKPICPIBDFtj33rgrBhLDIwYIFE2LatbcxEHT4lHEfASZt5EdgyODXYcjg+wo16gBEjKAGA5r8XAJyUNcnzd5DUeSQQxTMfyAQxVt77l0ZgUlgkYMFCwbAtGtv9WDIqOf8n0n9XZdxPAjAliyuxkgVNeIXr78k5FB4/+T6VDlyyJSoCID3IRDF9j33ruyDgWGRgwULOmPaNT+0Jw166l8dgHoIun3m37UZ17gyqig0OKrCCJadHLL+ZqT6VFBcQOxzBYLS6skh8zgB8B4Eotix596VAzAYLHKwYEEG0675IQMhyFqPIUMu9k8w/sLnQIUyZ0pFDsLfedKP9rqGJzmkL5IiTQ7AbghEsXPPvSujMAAscrAwrDBtxQ9qMGTMMw1+PcAIfzN5ht8OMxgpVfVrqCv3s0UO4p+LJ4fMzyyAdwFsA/DOnntXxlAhWORgwbSYtuL/2QGMSEo49QAaMGT4R2T8nXnMkywu/QIbN61SfmQv1F9sXSUlB8CU6azlJIfMzwkAu8BgG4B399yzMo4ywiIHC4bBtKv/XwCCQa/P+Jdp8If+MaiHEJRlitLR8z6XNa1S2djL1VWQobLIQX2dFScH4bNQfxzAOwC2Acy/99xzC4sSwyIHCyXBtKtXuSAY9tS/TGOfknByicCRUYWGF9Lw5JB9zhiZMxY5KH4uaaxHfT/yn3sMwE4AbwHYveeeWziUABY5WFDEtKtW2iDINymD3oghQ59p/FOj/EYw8KFURgqoNDmor0vsuEUO4vVY5CD+Wf65D2KIKPbsuecWAp1gkcMwxLTvrvQBaAKTNuxixj7T6I8AYDOMkcqrv2hyyK6rqoOjlX/uw4wctNdVOCn3Y4goPiiWKCxyMDmmffcWFwQD3gRkGftG4TOTeSxl7N0ASjuCVay/pEaq8HotcrDIIf1Z9FmJl6msxyZWvg/ZRKHZ0FvkYCBM+87NDFKyDBjBwDNZxj5l4BswRAaBjCrEjV1Bxlvsc1nJQb6NrBemSIOX9bnaySF9kYHIAShzIkBxdZWeHLL/zvu9aP69RwDsALAdwF61RGGRQwkx7Ts3+5Bt2JuQbeSbMj6n/p9cEsGIo6miyKG4uspJDoZ77kYlB6CQ77EE5KCuT8aL9ajrR/HkkPk5DIEktgPYJ0cUFjmoxLTv3OxAtkHPNfZif3tEKxNgQiMlk4Gj+YWxyEFbncOKHArvn1yfLHLI/dwDMNvBYPueu2/+LKdfw5MckvJNLdQZ+NTftUDOz7c4GM1IFVeXRQ4inw0XHK0UOWT9zUj1qarlvCLIodS/d+G5dEHwJnbsufvmA0CVkMO079zsgfrRfEqrd4hWVj6U2kjl1yV2nfFGU5V/WSxykP6sQzrr8CSH9EWGIgdKwROeRDlCWI7jCOEITbBsbyIRf7zSBjIP075zsx3IC8IqGXxfRTpbXjAY+nLVfLZgQS2s31aVgVLKE0JiHCEJjuM4jhCe4zgb4XkbIbyL5/kaSqmXUupFzveapJ4XDEEOxy6/5ftOhl7CAEdByNbRU74xKqwXshhQ5AyghsNPRjUM/duS/Lasr1ERlFJCCBfjOD7BEY7jOEI5wjGEEHGjn/c88+KGQM5vIfk1JAxBDgQYSygz0cnQTxxCHr4FCxWCIS2UoY29heJBKSUcIVGOI3HB6HOUIwQ8IXbCp42+j1LUQfx7Fjf6NJcgKCNBELmIG4IcAAwACLCUOYkDPnAxtN4GNFe6UxYs6Igh403BZOjflrGvBkiMKZJGf1Aw+oTjOI7nOMKQPKNPPcj9vpm8+EyqEbHfhvTvJa9vogSR6z0YhhwGUx8oMDVOmYQd2O5i6GwMbYU4PGHIgawFqDLqqkdpFkwGSiknjPS5OMcRliMc5Uja6Dt5nvckjX4NhK1e86oQqTbbwFOAMmCyCULWIGgjDfnyxpCVIHgOmXARYG6UMvvdDOVtwISK9MrCcILBpRtrlFAOUEo5jiNRjnAxliOsEMgVjD4vjPRTRj8AYee/bOSnhwtHQWnO96f6t0QhShDajL52eckwnoPU/qnHxClDbcAOF0NPYICasvbKQnGorD0zuLE3KUzKUYLR5/o5QuIsx7EcN2T0CSUunqceyvN+KmQ+1maXHkpBZfJPZP9+siXD3F7k1qA80pd/3qWUlwzrOWSC4YE5McoccTJ0nwOYVrZeVRQmfQtLB8vY6wYj/rYK6xPPU5YQboAlJMaljD4hIIQ4CCEunsLD87wfgBfZ65BlNpzbdM7vSONIXZwgCpV3KiUvGYYcBpUvQRNLmSYOeNfN0M8xeexuQRpGNAYGN/aGfGRGRGkeFM/ziWQgN8ZxXILlCC+kbPJ2whMXpdSbNPoeyBl9ILN/RRtNwU4XXt4k8hLp/eOviCHIweN0xKKsus2MKDAzRpl+B/C2k6Enl7hrFtTD2MbegiHA83ycI2SACLo+O2T0iZ0Q3sVT3svz1A8gCDCyRp8ZMnIKRl+RwESMpqj3IFWbmeQlNQQRByq/hAQA4EvTJx1V73Xj8Z0foD+eUFPEzwEnE8p85GJowAaMKXUfhyHUZOBYxt6IqIDXw/N8TBjpc1GOE5Zi4AgBR4iDFyZneXlKA2AQAOCX6HXuIdmUS0qzCEIMRWryppKX9Iw/GIcceMr3zD1qNKaMbMDvd76Pt1sOqypHgePilGGTaa8nA7CXtqemg/IIXjrnvgywtBujIznS7+c4LspyJMERjnCEMBwhdp7wNZTnPbyQuSNi9IcCucg/oZ/RVFU+67dmJnmpJPGHGqeDGVNf6x5VG3A3B/01TQG/uzHgc9X7vDUMgz7AIOTAERoCgGCNC1efehK2H+zQ4kU4k2mvLS6Gxu3ApNL2tqKwpBsLuoDn+RjHkT6WcFGO4xJC9g4Hjid2ntCa9Egf8IGBV6SKIXln6JjySFuzPCKfcpnjPZhJXtI9/mBjbLaRQb9jdF3Q3VzrdzcF/e5Gv8/dGPC6R/i87hFej7vW63HXeWvcHpfTKVV3e6j3CGAQcuAp7c78uxAvAsD4BGVgA3a6GDqNkd9LwSiwjH0xyHo7LS8EAAjPRzmO9HGEiyYXXSPs0IzcGp7nvckcfS/E35Hkb43JPCIrj6h48mIEoeF3bVx5qRzxh6CnxjmmLuhsrgu4Rwb97qaAz90Q8LkbfF7XCJ/HXecV/gU8bpeNUXgSKsDxfAIwCDmwhO/KPVagFwEemB2jTLeToR87gBN176yFYQDjEU3S6PdyHImyhIsnl2EAR4gzuQyDn1IaYMBkG/2h26iQvKNd8tC3/VyolJdKHH9wOezMqNpgzai6gLM5GHA3Bf2uRr/PXe/3uuv9Xle9Txjl13pqXC6HvaxyOUuIcchhkGXzyCGFAr2IBpYyDRyw283Q8Yyw0qsFC8ZB0lgQQgY4kjT6HBfnCOFZjgMhvIPwvDtl9CEYfLFJoCUy+jmSh+zoN48CzCQv6RZ/YBgGDX6vc3Rd0NVcG3CNDPpdjQGfu8HvdTX4fe4Rfo+rzutx1Xo9bp/b5TTW8GMIKc/BMJv9vPqPf1CHTX4ZJa1eRBKDDuA/TmGdJiOCSn/O0EzER4AaPucFB4c+m3XDn7z6Ze5R82fNexpn/U0I6eMI6WM5YdE1VsjeYQghmUY/CGHtsMx2xZ6ZaBtSx5jc58BIX6t8LE80kS3PiBzLOUNFDqvtEyQIYqh9Tfcq0afMaxnA53bZUwa/Oeh3NiZH+Q0Br6ve53WN8Hlddd4ad9BT47LbbEa1+arxn7bDu7942oIZhvAcACDBEepwyT/YAr0ILwfMJpT52MVQjw0YV3xvLQwDiMV9KCGkn+VIL0e4AZZLafocQ3jqIDyp4XnqSxp9D1PoSF+zJp99rRBTzRipK6tkJpKX9Ik/2G02prk26BxVG3A11/pdTUG/syngzzL4I3weV63X46pxOoZVFiTH88ZJZQUAlvA8VKSiFhqLoMCxccqQZNrrLBjo3qsaxpHv5QL+PCeM9Hs5jgywwoxcLjkj10F44uF5mpJ3agC4IexGmFF7/oiW5mWU5LUtAn0lj+LLl01e0uVeR/g8jtEjgq7mYMA5MigY/caAz1XvHzL4dV6PK1DjduoQu61KEJ6PAQYykAmV5JBCgV6EPZn22uZi6IAdmFxQZ8sG41hWg0BzdhdHSEQI5HIDLMfFWY6Q5IxcB+F5D08hb/TVavqUMmIEoeI+RI4lVWxNmryo95DRP2TWp9EQ5/wOtWUvFR1/qHE6mVF1AWdzbcDVXBtwNQX8zsaA35kc5TvrfV5XnWD0nQ67gjZtQRGEp8YiB47nOQCSubdiKNSLADA2mfb6touhU5hhsQe1IYlGs7GH8AdPhFF+mCXcIJut6TsJ4Wt4SgOZRp+RMvpM+j+ibUkcE4cIQUh4D1IwsLxUFEHkwcYwTFPQ7xhVF3Q1B/3OppSWH/A56/1eZ73P60yO8p1et8swdmo4gCMkChiIHFhC1C2uJIICvQjwwMkxyoSS25POKLR9C2kUZOxTEDZF5yMc4cIsRwZZjouxGSmbPM97eNBAUtN3AxgpYoJER/rJsbhEXxWtZlGkUUl5SYYgpMoXda8BT41jTF3QMbI24GwO+l2NAb+zMeBzNgS8znqfzznC73GO8HpdQW+NQ4+cfAv6g/DUYOSQTJ8qFEV4ESNYyozggD1uho5igMZi+lFlkDDq2tZXShr9EEu4MCcY/SibXE8/bfQpDSZH+kmjn19NVq/Sn9TPMhWhABUzYmVheHmpwGuz4HI4mKSk42iuDTiTOr6zwe9zNgR8zhHCKN9Z5/M43Q6HJeuYHITnBwEDkQPhaVHkkEKhXgQFpscoE3MAO5Jpr9U4qhE39gWuryTsj8uHOcKFWI4bSMs7SaNPhF2zgpRSPwA3GIzMt8MFGLI8K593QJshpEhynRHlpTRBFGz0xeIPjI1Bg9/raK4NOptrA46moN/RFBCMfYMg7TjqfV5nnc/r9Ne4HdX4MlgQh+HIgSNC+pQeKMKLqOGAORxl9rkZ6rABR+vVpxKhKBlHCslN0Xs4jkRYwvWxrJC9wxLORgjvJDz10iFN3wWlkf7QEYYymfKOSHBSHkVntJhIXioo/uBzu2yj6oLOkbUBx8ig3yGM8v0OYZTvddT7fKlRvqMacvIt6A/C0wHAQORAqJA+pScK9SIATIxThk+mvZ4EjYHyIlASY59CclP0bpYjYZbj+rlk9k7S6DsIz/uyRvpAExip7J3CR+qi8o5Wo5tdSTnlJXV9lZCXCok/OOwMMzIYdDTXpQ2+ozHodzQKso6j3u911vt9jhE+j7PG6bRkHQtFgVDeWOTAJYMgeqMIL8KWTHs95GJoyA5MLUX/UISxTyHD6IdYjusXUjY5jiUkOdLnfZTng1RYUtkNMCORHO1niw0ifdNdk8/NcpEdrZdTXkreq6K8pL6vCvGHET6vvbk24BiZknWCfkdjwOdoCPgcDX5f0uB7HUFvjSXrWCgbCE/7AQORQ0rnKhWK8CJGJSgzyga842LosYz4loQlAaWUFYw+FxLkHRJPDKVsughPfZTna6mQipuSdwSJJ1u7ya05M6CcgoImn3tt4csNl1leEr1WRF7K6Erh8Ycap5Nprgs4BB1/yOg3BHyORr/PUe/3Oer9Xkedz+Nw2u2WzbdgOBCeNxo50JKSA1CUFwEemBWjTK+TobscwEnF9IOnlOU40sURrifBkn6W42Is4VLZOy6e8j6ep3UQllXONvpDRkuXjJQcu6+xfHGB4CLlJeG4srwkBdXxBxvDoDHodzTXBuwjkwa/UTD69ga/z5HU8h0j/F6Hz+2yZB0LpobxyIEKrkw5UIQXEWQpcxIH/MfF0AYb0Jx5kudpgiOki+W4EMtx/QlB3iEcR2wcIW6epz6e0hEQVth0QSifriOZ9a1PGmKe0cy9dsh7UAzDllBeGmo7/als8Yegp8aWlHXsIwWDb28KBhyNAZ9d0PJ9jnq/117r9ThsVkq+hWECjucjgIHIgefLRw5AcV4EBY6PUyYRDoX+PTg4GON5PsBTWgfB6CssrSxttJKLhikYXQ2Sh6LVL6u8VJb4g8thZ0YGA/aRtQH7yNqgY2TQb28UtHx7Q0AY6df7vfZ6v9fhclhSvgULueCIwTwHntLeSrRbhBfh4nl6LEeIWApu0SmX8uX1T7lULS9VIP7AMAzq/V57c23ANrI2YG8KBuxNmQY/4LM3+H32er/XEfDUWLKOBQtFwHCeA+H5ipADULgXwdgYJn/0K19EyZAqLDlcTnmp5PEHr9vFNNcG7M11QXtT0G8fGQzYG4M+e2PAnxrl2+oDXscIn9dm5eRbsFAeDMQSvYCByIGniFS6D1q9CBtj4wGIyCMAijCkJZaXShp/cNhtaErJOkG/rSkYsDcG/bbGQMro++wNAZ+93u+ze4y7GZYFC8MWkWjUWJ4DT2m40n0AtHkRjI1RWiywnPJSSeMPI3xe28jagK0pafSF4K3f1hDw2xsDPltDwG+v9/vstV6PFbu1YMGkoACe2PZu5DfXGIgcKGio0n3IhBovgmEYAmGbRynvQQpa5KWSxR9qXE6muTZgawoG7CODAVtTbcDWGPDbktKOrSHgszX4ffb6gM9m5eRbsFD9YDlCep/4NQcYiBwIbyxyAJS9iKSsNBQA1SYvlST+YLfZaEPAJ4zygwFbkzDCZxqDfrtg+JNGP+C3+9wuy+BbsGAhDZYQkvpsGHLgKe2qdB+kIOVFMDaGz7u4RPGHoKcGaYNfG7A1CdKOMNLPMPp1Pq/N0nUsWLBQCDjCp6Vyw5ADA3RXug9yEPMibIymrMk8gnA5HExTrZ8ZGQwmjb7f1hjwM2nDLxh/piHgs1k5+RYsWCg1EhmbrhmGHBx225FK90ENMr2IrZ8cTA37c3PybSNrA4wwwg8wjUG/rSnoZ5qCAVtjUDD2DQG/LeipsQy+BQsWDAOOEDb1maFUbQy19PjH669TM0kibx7oiDkcTltj0M80Bvy2hqCPqff7bNYe5xYsWDAjWnrCh5bMOXk0YCDPAQDiHKEep3nkk6Prax1zpk421DO0YMGChULBkqHtmg01xE0Qkh/gNTBsjHwOqQULFiyYCcSo5MAS3lTkYGdMpIFZsGDBggI43rjkoDTj2FAwU3zEggULFpSQuZCoociB481FDg5rMTgLFixUEQjPx1KfDRVM5TL0LjPA2gGmunDw4EG0tbWB4ziwLIuamhocf/zxqKur01QPy7JwOp0l6qWFSuK9997Dtm3b8Pbbb2Pv3r3gk0q41+vF3Llzcdppp2HBggXweDwV7mlh4HhqUHLgTUYOdnulu2ChSGzfvh3r16/Hjh070NnZKXrN2LFjsXz5cixdulSxvieffBKJRALLli3Tu6sWKoj3338f9957L/71r39JXvPxxx9j/fr1aGpqws0334z/+Z//KWMP9QHh+Wjqs8HIgYptnGNYOO2GUuUsaEBXVxdWr16N5557TvHatrY2RCLKK8o/8MAD+NnPfoYbb7xRjy5a0AmdnZ14/fXXsWfPHni9XtTV1WH+/PmYMWOGqvI///nP8cADD0DtnLAjR47ghhtuwFNPPYU1a9YgGAwW0/2ywrDkkKl3mQEMAEoprKQlcyEUCuGSSy7B/v37VZcZOXKk5DlKKe644w78/ve/BwAMDg4W20ULOuG5557DD37wA9HvZM6cObjhhhswe/Zs0bKEEKxcuRJPP/10QW1v27YN3/zmN/HYY4+ZRmbiDEsOlEaVrzIWOELgdBjqMVqQQSwWwze/+U1NxABIkwPLsrjpppuwadOm9LFo1HQ/Y1Nh//79+Oyzz3Do0CF0dHTg0KFD6c+LFi3CD3/4QwDAs88+K+vF7dixA7t27ZIkh1WrVhVMDCm88847WL58OX7729/CbgIZmufpQOqzoawa4XnTDbliCZY6rUXxTIMnn3wS//73vzWXa25uzjs2ODiI7373u9i8eXPW8VjMVA6w6XDbbbflPfMUpk+fDgBoaWnBrbfeqljXrFmzRI8/99xzeOqppwrvZAa2bNmC3//+97jssst0qa+U4DJssKHIgeOp6cghzrIIwBwu43AHz/N47LHHCiqb6zn09PTgiiuuwHvvvZd3rSUrAe3t7di+fTveeust7N27FyzLprPAOI7D5MmTsXDhQixYsACTJk3SVLfX65U8l/Labr/9dgwMDEheBwAOhyNNJpnYv38/fvCDH2jqkxLuv/9+fOlLX0JDQ4Ou9eoNw3oOPKX9le6DVsRZU03NGNbYvXs3Dh48qLmc2+1GbW1t+u/u7m5ccskl+Oyzz0SvH66ew8GDB/HAAw/gzTffRGtrq+y1LS0tePXVVwEAp556Ku6++27ZuE4m5PT7WCyGDz74AP/4xz8U65k2bRrcbnfe8Z/97Ge6E3xfXx/uu+8+/PSnP9W1Xr3B8cSY5EB42lfpPmhFgmMV9+k0Eiil+PTTT/Huu+/iyJEjiEajGBwcBKUURx99NCZOnIhjjz0WTU1Nle6q7ti3b5/iNQ6HA3PnzsWUKVMwODiIgYEB1NTUZF3T0tIiSQxAdcUcKKVgWRYul0v2ug0bNuDHP/5xQUZ18+bNOO+883D//fdj/vz5itfLkUM0GsVvfvMbVe2edNJJecf27duHl19+Wbacy+XCueeei4svvhif+9zn8Nlnn+Hvf/87fve738lmND3zzDO4+eabDZ29RPihAbqhyIFSM5IDMTwxhEIh/OlPf8KOHTvw7rvvore3V/Z6hmGwYMECXHLJJfj85z9fNRO65Aw6APh8Pqxbt05Sh04hlyxyYTZyCIfD2LlzZzq429HRkf536NAh3H333fjSl74kWjYUCuGWW27B3//+96L6EAqFsGLFCrz00kuKHoQcOezfvx/vvvuuqjbFyGHt2rXpiW1icDgcePjhh7Fw4cL0sZEjR2LevHmYPXs2brrpJkmCZFkWf/vb33DBBReo6l8lwGcM0A1FDoTy8lbLgGCHtlw1HEKhEB555BE8/vjjmkZ0lFJs2bIFW7ZswaRJk7BmzRpMnDixhD0tD9rb22XPn3/++YrEAMhr3oAxyEFLivUzzzyDn/zkJ5LnxXT5VBvLly/H22+/XVAfcxEOh/G9730Pv/vd72SvkyOH7m71G0rmkkM0GsWLL74oeT3DMLjrrruyiCETZ599Ntrb22Wf5aZNmwxNDhw/ZIMNRQ48pcozjQwGjjMmOaxfvx533XVX0drpJ598gvPPPx933303zj33XJ16VxmwLCt7ftGiRarqMYrn0NHRgY8//hgdHR1ob2/P+n9HRwdeeeUVjBs3TrGevXv3Sp7zer045phjRM898cQTuhFDCps3b0Zra6tsv5XIWQyNjY2glKbJo7m5GWPGjMm6Ztu2bUgkpBdpWLhwoeKs56VLl+Khhx7CkSPiG1tu3boV4XBY85Is5QLP88b0HChFuNJ90ApCeMPFHO6//37cf//9utUXjUZx3XXXob6+HvPmzdOt3nJDaYZrZtBZDkoTmspFDrfeeitee+01yfM7d+5URQ4fffSR5Llp06bBJrKzYWdnJ+655x51HdWILVu24Ktf/arkeSVyzsRRRx2FO++8E3PmzAHDMOjq6sKDDz6IUCiUd+0///lP2bq+/OUvK7ZXU1ODK664AnfeeafoeUIIdu/ejdNOO03dDZQZcY4Y1nPoqXQftIJQ42xBQSnF7bffjscff1z3ugkhuOqqq/Dss8+qMjhGhBI5qDU6xZLDgQMH0N7enjXKT4366+rq8Kc//UlVP5RiKDt27MD5558vew3P8/j4448lz0+bNk30+E9+8hP09ZUmRLh582ZZclDrOYwaNQobN27MGqU3NjbiBz/4AYiIHCxHDl6vF2eddZaqdufOnSt7/sMPPzQsObCEpNUbQ5EDhfk8B7ngVbnxhz/8oSTEkEI4HMatt96KRx99tGRtlBJK35XatXMcDgfsdruogQGAgYEBPPPMM3mzd7/1rW/hi1/8Iq699lrs2bNHtCzDMAiFQhgxYoRsHziOU0zL3blzp+K9tLS0yJKZGDkMDAzgr3/9q2y9TqcTX/jCF7BgwQKMHTsWhBAMDAxgw4YNeP3112XL7tq1S/a8WhK/+uqrJeWb3NnK0WhUNv122rRpqpfAmDRpEhiGkfw9yXlqlUY0wRqTHEDRVekuaAWlUGdRSozu7m78/Oc/L3k7//znP/H222/j5JNPLnlbekMspz0TckaSEILDhw+nDb4cOSQSCdx00015x3t6BMd4yZIlkuRAKcW2bdvwhS98QbavBw4ckGw/hX379qGnpwf19fWS1ygZKrFg9LZt28Bx0vN7xo0bhwceeADHH3983rmzzjoLv/jFL/DrX/9asnxXl7wZUOM5eDweTYFfJaL4IOcsAAAgAElEQVRVKzkCQv/GjBmDtrY20fNGJoePOjqNKSvZbYzpyEH1cLPEuOuuuxRTVPXC/fffX/BM40pCaeT33nvvIRQK5QV4f/SjH+Gll17Cww8/XFT7KfJZsmSJrHHcunWrIjmombMBCNLS2WefLXlezlB5PB5MmDAh77jcstUMw+Cee+4RJYYUvv3tb2P9+vWiuj8geEWRSETSIKsZwZ988smaUrBbWlpkz6shh76+vvTgQY7A9u3bB57nRWM5lQTH8/w/P/zUmAvvNfg86vPQDAIjMMOHH36IZ555RvX1NpsNU6dOxfjx45FIJBCPx7F3717JDItcbNu2TZX0YQSkMlQ6OjoU0xylgoiRSESXVTVTmWMnnngi6urqEA6Lq6hbt25VrOvTTz9V1ebOnTsLJocpU6aILhb3xhtvSJY544wzMGfOHNk+eTwenHjiibIaf1dXV1HkoDVxQokcnE5nOjMsc8G/zJiR2sxAlmXR29truIwlliOk709r0ibNUORwzdILB//x+uum2pvZCD195ZVXVDkw8+bNw7Jly3DKKafk/TBjsRieeOIJrF27VtGI8jyPN954w/CbmZx//vnYu3evbHqiGsRiMV3IIeU52Gw2nHbaaXj++edFrzt48KBiOqdactixY4fseaVMpVx0dHRIbooEQHW688SJE2XJoaenR3JujZrv4qijjlLVjxSU9uv405/+pDpRQG17hiOHHJ3SUOQAAAnC0xqH3Qg2VyUq7zvIpTMCQvBtxYoV+O53vyvpytbU1OCyyy7DrFmzcPHFFyvq2a+//rqu5BCNRvHWW29hy5YtWcanubkZp5xyCubMmYNAIKCpzq6urqKJARDIoZDc+lxkxjQWL14sSQ6A4J1ddNFFkufVykoffPABBgYG4PP58s7FYjEcOHBAsqxYvGH06NHYs2cPurq60NbWhtbWVrS2tqY/L168WFW/xo4dK3teLu6ghhy0/laUfu96IxwO4+ijjy5rm0pgCZ8VSDIcObAc4WtMtP9mpb2czs5OvP/++7LX3Hffffjv//5vVfXNmDEDy5cvx5o1a2Sv+/DDD1X3UQqUUvz5z3/Gs88+i127dklOUkuthX/OOefge9/7nqJhSUGvDVai0aim3Hq5elI47bTTYLPZJDOotm7dKksOSmmsKRBCsGvXLpx66ql55z755BPZDC6pNFaGYdDU1ISmpibMnDlTVT8y8dZbb8nORAYgmyarhqj9fr+mPpU761BKUqwkOEKyyMFYEREACUKMkxuqArYKC0s7duyQlZTmz5+vmhhSuPrqq0VHmploaWkpKha/b98+LF26FCtXrsT27dsVZy8TQvDiiy/irLPOwi9/+UtVL7MeBh0ojecwYsQInHDCCZLXbt26VfL5dnV1aUo+kJKW5CQll8uFyZMnq25DCYQQbNq0Ceeffz6+9rWv4Z133pG9Xm5lWzXfq1bPQS77qhQwIjmwhGS9hIbzHDie5wCYZqU3W4XZIZUeKYXTTz9dc51OpxPz58+XXUwtFovh8OHDGDVqlKa6eZ7Hgw8+iDVr1hQk+cTjcfzqV7/CZ599hvvuu092d61Keg5OpxPNzc0YPXo0Ro0ahVGjRuWt5bN48WLJjYe6u7uxd+9eHHfccXnn1MYbUti+fbvo8UKC0VoxODiIDRs24He/+53iMt6ZiMelt5Mvheeg91a/NpsNjY2N6e9/9OjR6X+jRo3Cscceq2t7eoAjfNYLaThyyNW9jA57hTeQVhqB5K4foxaLFi3KI4cxY8Zg8uTJOPbYY3HsscdqHp0BwsxaPdJgN23ahMHBQfz617+WXE66VJ6DzWaDw+GQJbef/exnisHZJUuWyC5zsnXrVlFyUBtvSGH37t1gWTYvtVNuTSUpSUkturu7sW7dOjzxxBOKwV4xyHkOSpMQAWhOE9XynjAMg/r6+ixjn2v8R40aBYfJtg/meN7ongMtPoJYRtgZW0XJQUleOHToUEH1nn766di/fz8mT56MyZMnY9KkSYpSkxLWrVun6/yI1157DatXr5bcDlIrOTAMg8bGxvTLnvr/ggULMG7cODz55JMYPXo0mpub8dOf/lT2XtSsr3TCCSegoaFBMjts69atoltLavUc4vE4du/enTdxUc5zkFqJVQnhcBgPPfQQHn/88aLWmJLzHADBe5CLS2iViaQWF0xh2rRpWLVqVfr7V9rfwozgCJ/10A1IDry5yKHCiVVKL+CWLVvwjW98Q3O9Y8aMwapVqwrsVT5efvllrF69Wrf6Unj88cexZMkS0SyZXFnJ4/HIPq+zzjpLNhCfaVz1WHyPYRgsWrQIzz77rOj57du3gxCSJ+9IkYPf70d/v/hmijt27MjqfygUkp3XotVziEQieOSRR/DYY4/psouaEjl4PB5dyUEpc2hgYEBxzSSzg+OzycFwAencDhodTltlPQeljVH+8Y9/YNOmTWXqjTja2tpwww03lCwj5OabbxaV1y6//HL84Q9/wN///ne89957+P3vfy9bj5aRrpJXotZALlmyRPLcwMCAaExCSlY655xzJJcIyV1nSc5rcDgconKWGKLRKH75y19i8eLFePDBB3XbXlMNOchBKzmMGzdONsbS0tKi2Cezw/CeA+GpqTbgddory69qAsI33HADtmzZgmuvvVZzAFkPPPLII6pfrJS0o3a2NgAcOXIE69atw/XXX591fMaMGVl/67kPg17Ldp966qmy+vmWLVuyNiCKx+OSmxZNmTIFra2tePPNN/POvf3221lLNsiRw+TJk1UtPRGLxXDFFVdIBrzFYLPZcOaZZ+KLX/wirr76atm65aAUlFbKfsuF3W7H+PHjsX//ftHzhBB8+umnmDp1qqr6brnlFsRiMTQ3N6O5uTkdh2hubsbIkSMNGY8gPJ/1ozVcD3M7aHQ4Krw+ipqZoIQQ/PnPf8bzzz+PCy64AIsXL8bcuXMLCihrRU9PD/785z8rXtfc3IwLL7wQF110EcaNG4f+/n7s27cP69atU+X5rF+/HsuXL5c12nru4KYXOdTV1WHGjBmSqZ1bt27FihUr0n/v379f0gObOHEi+vr6RMmhr68PH330Udq4aZ0Z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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/command b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/commandTrial b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/contentMD5.txt new file mode 100644 index 0000000000..59613c85d8 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/contentMD5.txt @@ -0,0 +1 @@ +NzEyYjhjMDY4ZGNiMGM4MGM3OTY2NzFjY2Y4OTNjN2E=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/headers b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/results b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/toExec b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/05_NormativeTypeCI-softwareComponent/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/body.txt b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/body.txt new file mode 100644 index 0000000000..0ca83ed662 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-webServer.zip","isEncoded":true,"isCompressed":true,"artifactList":[],"payloadData":"UEsDBAoAAAAIAApebEb/fQgElQEAAJMDAAAdAAAAbm9ybWF0aXZlLXR5cGVzLXdlYlNlcnZlci55bWyVUk1r4zAQvftXDL3bpOzNh0IIhT21BRv2UIpQrHEjsDViNEnov+9YtRO3ZBfWutiaeR/zPEKps8Zh74MXTyGZE3LSlxokl5If44Dmw46DuTcbPWe3+VUUgnpvBU2wI87NZSAerfgTlvIRMZVn3DfIynhtt0c5ENfQPje7LbS7a+UifF9t9EwyZfO0fWl+P7dF4TB17KPkjh0FsT4kkAPCRRSyKFyHqQo1TyypLgBKuLttkomkvqF59y9Qol7OlnFHqhAw/IWhCOTQZMjkIXNV012q/izZTAUAu0/CthONko+YrxyyCjrTM431N2zzU33uX0X0kK8AWk3oK+uLIDwpCbRqChgjY1KCBDZcPMAyHXSLABBDUrTvNOaDFfAJOhvtfkCgHg6UxId3JXEQmU7eTV+jDfYdxwyPyDYvGPRKpZwT40iqob62MQ6+y3XIE2bzmd8P+iu/0ssxxWgwuEg+yJLJuq96nItzf8LuyPhfkGmWRQ7yTt1EzTuou7206uA65drt9Jzs4J1Z7QG8/tyD9fhvxSdQSwECFAAKAAAACAAKXmxG/30IBJUBAACTAwAAHQAAAAAAAAAAAAAAAAAAAAAAbm9ybWF0aXZlLXR5cGVzLXdlYlNlcnZlci55bWxQSwUGAAAAAAEAAQBLAAAA0AEAAAAA"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/command b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/commandTrial b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/contentMD5.txt new file mode 100644 index 0000000000..da3c1fb22c --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/contentMD5.txt @@ -0,0 +1 @@ +YmZkOGVhZjgxMmRjMjNmODgxMzQ3N2NkOGMzNmViMGI=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/headers b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/results b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/toExec b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/toExec new file mode 100644 index 0000000000..b74e582498 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/06_NormativeTypeCI-webServer/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.122:8080/sdc1/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "USER_ID: USER_ID" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/body.txt b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/body.txt new file mode 100644 index 0000000000..15f24240fb --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-webApplication.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"network.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/network.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/command b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/commandTrial b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/contentMD5.txt new file mode 100644 index 0000000000..24d4e9ac79 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/contentMD5.txt @@ -0,0 +1 @@ +MDBkNmI2OWIxYzhkMDg3ODgzZGFjYTk3NWEzYzAyMDY=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/headers b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/results b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/toExec b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/07_NormativeTypeCI-webApplication/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/body.txt b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/body.txt new file mode 100644 index 0000000000..e61be1905d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-DBMS.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"relational_db.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/relational_db.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/command b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/commandTrial b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/contentMD5.txt new file mode 100644 index 0000000000..4ca5998e41 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/contentMD5.txt @@ -0,0 +1 @@ +YmM1YmYzZDUxYmY4OTg1ZGUwOWQ2Y2Y4YTc3NWUzODg=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/headers b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/results b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/toExec b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/08_NormativeTypeCI-DBMS/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/body.txt b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/body.txt new file mode 100644 index 0000000000..7adbb52d21 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-database.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"relational_db.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/relational_db.png"}],"payloadData":"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PvjgA3z11VdVbytJktavqa/rBUFAT08PnnvuuZqVsxa4RqAAEIlE8Oqrr+Kf/umfMDY2pjXlAopgJUlCIpGoqF9Uz+3bt/GP//iP+OCDD/D000/jkUce4ahdQgipIV9//TXef/997eHW1eL3++H1egGgKFBatmwZ9uzZ47p6212lAdDe3o5XXnkFv/rVrzA8PGz4TBRFhMNhJJPJBecMmXHnzh387Gc/wzvvvIMdO3Zgx44daG9vr1XRCSGkpchkMjh16hQOHjyIeDxuaR+SJCEYDBYtkKA24a5duxbPP/+8YTCRW3CdQAEgEAjge9/7Ht577z1cunTJ0H8pyzL8fj88Hg9mZ2ctrZE7PT2N/fv348MPP8TmzZvxxBNPOLIQMSGENCITExP47LPPcOTIEUxPT1vej9/vN22yVRkcHMQTTzxR8nOncaVAAeWu5MUXX8Qnn3xieHiq/vO2tjYkEgnMz89bOkYmk8HJkydx8uRJ9Pf344knnmDzLiGElODrr7/Gp59+ii+//HJRD/hQWxMLF0dQEQQBTz31FB566CFXilPF9ab41re+hWg0alg3V+0bFQQBoVAIXq8Xc3NzVfeN6onH49i3bx/eeustbN++Hbt27UI0Gq3Fn0AIIQ1LOp3GiRMn8Omnn2JoaGjR+/P7/YYlWAtH2/p8PnznO99xzVSVcrheoADw8MMPo729He+8847pnFCv1wuv14v5+XnMzc0t6qRPT0/j/fffx4cffohNmzbhsccew/3338/Ru4SQluL27ds4evQojhw5UjQzwgperxfhcLjsg0NCoRD27NnTMA8LaQiBAsB9992HvXv34r333sPo6GjR54IgIBgMIhAIYHZ21tIgIz3ZbBanT5/G6dOnEYlE8Oijj2JwcBBLly5d1H4JIcStzM7O4tSpkzh27BiuX79ek31KkoRIJAKfz6eJ02yO54oVK7B7925EIhHXR54qDSNQAOjo6MArr7yCY8eO4ejRo8hkMkULJIiiiLa2NgSDQczMzCCZTC76uNPT0zhw4AAOHDiApUuXYnBwEI888ggikcii900IIU6SyWRw8eJFHDt2DOfPn19UV5getZ8zGAwCKB4EpErU6/Vi165d2Lx5s2k+N9NQAgWUk75161YMDAzg3Xffxd27d03zeTwexGIxJJNJTE1N1exLMTIygrfeegu//vWvsX79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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/command b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/commandTrial b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/contentMD5.txt new file mode 100644 index 0000000000..29d1bec2a1 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/contentMD5.txt @@ -0,0 +1 @@ +OGNiY2Y2ODIxZDI4MjNhYWM5NzM1OWFiMjFiNmY2Zjg=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/headers b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/results b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/toExec b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/09_NormativeTypeCI-database/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/body.txt b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/body.txt new file mode 100644 index 0000000000..8cae64ff16 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/body.txt @@ -0,0 +1 @@ +{"payloadName":"normative-types-network.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"network.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/network.png"}],"payloadData":"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"}
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/command b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/commandTrial b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/contentMD5.txt new file mode 100644 index 0000000000..45dfcd2313 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/contentMD5.txt @@ -0,0 +1 @@ +YmU2YjBlNzVlYWZjYjQ3Nzg3MjQxYWRkNmU1MjI4OTM=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/headers b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/results b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/toExec b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/toExec new file mode 100644 index 0000000000..ede26fe287 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/10_NormativeTypeCI-network/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.121:8080/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/body.txt b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/body.txt new file mode 100644 index 0000000000..48df31d188 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/body.txt @@ -0,0 +1 @@ +{"payloadName":"apache-type.zip","isEncoded":true,"isCompressed":true,"artifactList":[{"artifactName":"apache.png","artifactType":"ICON","artifactDescription":"","artifactPath":"images/apache.png"},{"artifactName":"install_apache.sh","artifactType":"SHELL_SCRIPT","artifactDescription":"","artifactPath":"scripts/install_apache.sh"},{"artifactName":"start_apache.sh","artifactType":"SHELL_SCRIPT","artifactDescription":"","artifactPath":"scripts/start_apache.sh"}],"payloadData":"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"} diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/command b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/command new file mode 100644 index 0000000000..c9a5b38dc4 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/command @@ -0,0 +1,15 @@ +headers=`paste -s -d" " headers` + +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc1/rest/v1/catalog/resources\" -d \"@body.txt\" ${headers} -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/commandTrial b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/commandTrial new file mode 100644 index 0000000000..0496ab340d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/commandTrial @@ -0,0 +1,12 @@ +command="curl -XPOST \"http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources\" -d \"@body.txt\"" +command="$command `paste -s -d\" \" headers`" +command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/contentMD5.txt new file mode 100644 index 0000000000..d51f666132 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/contentMD5.txt @@ -0,0 +1 @@ +YTg2Mjg4MWJhNmI5NzBiNzdmNGFmMTY4OTlhNDFkMWI= diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/headers b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/results b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/toExec b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/toExec new file mode 100644 index 0000000000..b74e582498 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/11_AlienApacheType/toExec @@ -0,0 +1 @@ +curl -XPOST "http://172.20.43.122:8080/sdc1/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" --header "USER_ID: USER_ID" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/body.txt b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/body.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/body.txt diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/command b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/command new file mode 100644 index 0000000000..96c8a2101c --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/command @@ -0,0 +1,13 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/tosca.nodes.Database/1.0.0.wd03-SNAPSHOT/artifacts\" -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/commandTrial b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/commandTrial new file mode 100644 index 0000000000..26c8be9956 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/commandTrial @@ -0,0 +1,12 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts\" -d \"@body.txt\"" +#command="$command `paste -s -d\" \" headers`" +#command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/contentMD5.txt new file mode 100644 index 0000000000..763af5bc63 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/contentMD5.txt @@ -0,0 +1 @@ +YTg2Mjg4MWJhNmI5NzBiNzdmNGFmMTY4OTlhNDFkMWI=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/headers b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/results b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/results new file mode 100644 index 0000000000..6bce5fe69a --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/results @@ -0,0 +1 @@ +.*:204:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/toExec b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/toExec new file mode 100644 index 0000000000..24ac2f04c7 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/12_DatabaseType-GetArtifacts/toExec @@ -0,0 +1 @@ +curl "http://172.20.43.124:8080/sdc2/rest/v1/catalog/resources/tosca.nodes.Database/1.0.0.wd03-SNAPSHOT/artifacts" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/body.txt b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/body.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/body.txt diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/command b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/command new file mode 100644 index 0000000000..14783faad6 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/command @@ -0,0 +1,13 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts/install_apache.sh/metadata\" -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/commandTrial b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/commandTrial new file mode 100644 index 0000000000..26c8be9956 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/commandTrial @@ -0,0 +1,12 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts\" -d \"@body.txt\"" +#command="$command `paste -s -d\" \" headers`" +#command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/contentMD5.txt new file mode 100644 index 0000000000..763af5bc63 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/contentMD5.txt @@ -0,0 +1 @@ +YTg2Mjg4MWJhNmI5NzBiNzdmNGFmMTY4OTlhNDFkMWI=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/headers b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/results b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/results new file mode 100644 index 0000000000..da36ee26fc --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/results @@ -0,0 +1 @@ +.*:200:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/toExec b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/toExec new file mode 100644 index 0000000000..0dc5652530 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/13_ApacheType-GetMetadata/toExec @@ -0,0 +1 @@ +curl "http://172.20.43.124:8080/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts/install_apache.sh/metadata" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/body.txt b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/body.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/body.txt diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/command b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/command new file mode 100644 index 0000000000..e18ca5ba6d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/command @@ -0,0 +1,13 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts\" -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/commandTrial b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/commandTrial new file mode 100644 index 0000000000..26c8be9956 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/commandTrial @@ -0,0 +1,12 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts\" -d \"@body.txt\"" +#command="$command `paste -s -d\" \" headers`" +#command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/contentMD5.txt new file mode 100644 index 0000000000..763af5bc63 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/contentMD5.txt @@ -0,0 +1 @@ +YTg2Mjg4MWJhNmI5NzBiNzdmNGFmMTY4OTlhNDFkMWI=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/headers b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/results b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/results new file mode 100644 index 0000000000..da36ee26fc --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/results @@ -0,0 +1 @@ +.*:200:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/results.json b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/results.json new file mode 100644 index 0000000000..a50cca2af8 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/results.json @@ -0,0 +1,12 @@ +{ + "artifacts": [ + { + "name": "start_apache.sh", + "url": "http://.*/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts/start_apache.sh" + }, + { + "name": "install_apache.sh", + "url": "http://.*/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts/install_apache.sh" + } + ] +} diff --git a/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/toExec b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/toExec new file mode 100644 index 0000000000..6fdf8907ab --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/14_ApacheType-GetArtifacts/toExec @@ -0,0 +1 @@ +curl "http://172.20.43.124:8080/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/body.txt b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/body.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/body.txt diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/command b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/command new file mode 100644 index 0000000000..fc8bcb241f --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/command @@ -0,0 +1,13 @@ +command="curl -o \"/tmp/start_apache.sh\" \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts/start_apache.sh\" -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\" " + +echo $command > toExec +chmod +x toExec +./toExec + + +#$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/commandTrial b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/commandTrial new file mode 100644 index 0000000000..26c8be9956 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/commandTrial @@ -0,0 +1,12 @@ +command="curl \"http://${CATALOG_BE_HOST}:${CATALOG_BE_PORT}/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts\" -d \"@body.txt\"" +#command="$command `paste -s -d\" \" headers`" +#command="$command -sL -w \":%{http_code}:%{size_request} BYTES:%{time_total} \\n\"" + +echo $command > 1.log + +$command + +#curl -XPOST "http://${CATALOG_FE_HOST}:${CATALOG_FE_PORT}/sdc2/rest/v1/catalog/resources" -d "@body.txt" --header "Content-Type: application/json" --header "HTTP_IV_USER: HTTP_IV_USER" --header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" --header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" --header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" --header "Content-MD5: `cat contentMD5.txt`" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \\n" + + + diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/contentMD5.txt b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/contentMD5.txt new file mode 100644 index 0000000000..763af5bc63 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/contentMD5.txt @@ -0,0 +1 @@ +YTg2Mjg4MWJhNmI5NzBiNzdmNGFmMTY4OTlhNDFkMWI=
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/headers b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/headers new file mode 100644 index 0000000000..cd1db0c52d --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/headers @@ -0,0 +1,8 @@ +--header "Content-Type: application/json" +--header "HTTP_IV_USER: HTTP_IV_USER" +--header "HTTP_CSP_FIRSTNAME: HTTP_CSP_FIRSTNAME" +--header "HTTP_CSP_LASTNAME: HTTP_CSP_LASTNAME" +--header "HTTP_IV_REMOTE_ADDRESS: HTTP_IV_REMOTE_ADDRESS" +--header "HTTP_CSP_WSTYPE: HTTP_CSP_WSTYPE" +--header "USER_ID: USER_ID" +--header "Content-MD5: `cat contentMD5.txt`" diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/results b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/results new file mode 100644 index 0000000000..da36ee26fc --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/results @@ -0,0 +1 @@ +.*:200:.*:.* diff --git a/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/toExec b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/toExec new file mode 100644 index 0000000000..91f4750c01 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/15_ApacheType-DownloadArtifact/toExec @@ -0,0 +1 @@ +curl -o "/tmp/start_apache.sh" "http://172.20.43.124:8080/sdc2/rest/v1/catalog/resources/alien.nodes.Apache/2.0.0-SNAPSHOT/artifacts/start_apache.sh" -sL -w ":%{http_code}:%{size_request} BYTES:%{time_total} \n" diff --git a/catalog-fe/src/test/resources/CI/tests/env/env.sh b/catalog-fe/src/test/resources/CI/tests/env/env.sh new file mode 100644 index 0000000000..0a3bc3acc9 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/env/env.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +export CATALOG_FE_HOST=00.000.00.00 +export CATALOG_FE_PORT=0000 + +export CATALOG_BE_HOST=00.000.00.00 +export CATALOG_BE_PORT=0000 + +# Example +#export CATALOG_FE_HOST=10.112.10.22 +#export CATALOG_FE_PORT=8080
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/CI/tests/runTests.sh b/catalog-fe/src/test/resources/CI/tests/runTests.sh new file mode 100644 index 0000000000..3fc0d39897 --- /dev/null +++ b/catalog-fe/src/test/resources/CI/tests/runTests.sh @@ -0,0 +1,90 @@ +#!/bin/sh + +DEBUG=0 + +function cdAndExit() { + cd - >> /dev/null + exit $1 +} + +function usage() { + echo "$0 <envronment file>" + exit 3 +} + + +if [ $# -ne 1 ] +then + usage +fi + +envFile=$1 + +echo $envFile + +source $envFile + +#source ./envCatalogBE.sh + +echo "******************************************" +echo "********* CATALOG_FE_HOST $CATALOG_FE_HOST " +echo "********* CATALOG_FE_PORT $CATALOG_FE_PORT " +echo "********* CATALOG_BE_HOST $CATALOG_BE_HOST " +echo "********* CATALOG_BE_PORT $CATALOG_BE_PORT " +echo "******************************************" + +if [[ ${DEBUG} -eq 1 ]] +then + read stam +fi + +for folder in * +do + +if [[ -d $folder && $folder != "env" ]] +then + +echo "processing folder" $folder +cd $folder + +commandResult=`./command` + +if [ $? -ne 0 ] +then + echo "command $folder failed" + cdAndExit 2 +fi + +echo "command result is $commandResult" +results=`cat results` + +echo "Going to match $commandResult with pattern $results" + +matchNumber=`echo $commandResult | grep -c "$results" ` +echo $matchNumber +if [ $matchNumber -eq 1 ] +then + echo "command $folder succeed." +else + echo "command $folder failed. Going to exit" + cdAndExit 1 + +fi + +echo "Finish processing folder $folder" +echo "********************************************************" + +cd - >> /dev/null + +#if folder +fi + +#loop on folder +done + +echo "***************************************" +echo "* SUCCESS ${envFile} *" +echo "***************************************" + + + diff --git a/catalog-fe/src/test/resources/config/catalog-fe/configuration.yaml b/catalog-fe/src/test/resources/config/catalog-fe/configuration.yaml new file mode 100644 index 0000000000..22bfee90f9 --- /dev/null +++ b/catalog-fe/src/test/resources/config/catalog-fe/configuration.yaml @@ -0,0 +1,69 @@ +# Needed for logging purposes. To be populated by DevOps - currently dummy +feFqdn: asdcFe.att.com + +# catalog backend hostname +beHost: localhost + +# catalog backend http port +beHttpPort: 8181 + +# catalog backend http context +beContext: /sdc2/rest/v1/catalog/upload/resources + +# catalog backend protocol +beProtocol: http + +# catalog backend ssl port +beSslPort: 8443 + +# threadpool size for handling requests +threadpoolSize: 50 + +# request processing timeout (seconds) +requestTimeout: 10 + +# a4c hostname +a4cHost: localhost + +# a4c http port +a4cHttpPort: 8088 + + +identificationHeaderFields: + - + - &HTTP_IV_USER HTTP_IV_USER + - &iv-user iv-user + - + - &USER_ID USER_ID + - &csp-userId csp-userId + - + - &HTTP_CSP_WSTYPE HTTP_CSP_WSTYPE + - &csp-wstype csp-wstype + +optionalHeaderFields: + - + - &HTTP_CSP_FIRSTNAME HTTP_CSP_FIRSTNAME + - &csp-firstname csp-firstname + - + - &HTTP_CSP_LASTNAME HTTP_CSP_LASTNAME + - &csp-lastname csp-lastname + - + - &HTTP_IV_REMOTE_ADDRESS HTTP_IV_REMOTE_ADDRESS + - &iv-remote-address iv-remote-address + + +version: 1.0 +released: 2012-11-30 + +# Connection parameters +connection: + url: jdbc:mysql://localhost:3306/db + poolSize: 17 + +# Protocols +protocols: + - http + - https + + +
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/config/catalog-fe/rest-configuration-info.yaml b/catalog-fe/src/test/resources/config/catalog-fe/rest-configuration-info.yaml new file mode 100644 index 0000000000..a3559c631f --- /dev/null +++ b/catalog-fe/src/test/resources/config/catalog-fe/rest-configuration-info.yaml @@ -0,0 +1,12 @@ +# rest read timeout - means no timeout +readTimeoutInSec: 0 + +# whether to ignore certificate +ignoreCertificate: false + +# the connection pool size +connectionPoolSize: 10 + +# create connection timeout +connectTimeoutInSec: 12 + diff --git a/catalog-fe/src/test/resources/config/configuration1.yaml b/catalog-fe/src/test/resources/config/configuration1.yaml new file mode 100644 index 0000000000..12ab2c777f --- /dev/null +++ b/catalog-fe/src/test/resources/config/configuration1.yaml @@ -0,0 +1,17 @@ +version: 1.0 +released: 2012-11-30 + +# Connection parameters +connection: + url: jdbc:mysql://localhost:3306/db + poolSize: 5 + +# Protocols +protocols: + - http + - https + +# Users +users: + tom: passwd + bob: passwd
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/config/sample.yaml b/catalog-fe/src/test/resources/config/sample.yaml new file mode 100644 index 0000000000..12ab2c777f --- /dev/null +++ b/catalog-fe/src/test/resources/config/sample.yaml @@ -0,0 +1,17 @@ +version: 1.0 +released: 2012-11-30 + +# Connection parameters +connection: + url: jdbc:mysql://localhost:3306/db + poolSize: 5 + +# Protocols +protocols: + - http + - https + +# Users +users: + tom: passwd + bob: passwd
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/config/sampleNoProtocol.yaml b/catalog-fe/src/test/resources/config/sampleNoProtocol.yaml new file mode 100644 index 0000000000..6197232aa4 --- /dev/null +++ b/catalog-fe/src/test/resources/config/sampleNoProtocol.yaml @@ -0,0 +1,17 @@ +version: 1.0 +released: 2012-11-30 + +# Connection parameters +connection: + url: jdbc:mysql://localhost:3306/db + poolSize: 5 + +# Protocols +#protocols: +# - http +# - https + +# Users +users: + tom: passwd + bob: passwd
\ No newline at end of file diff --git a/catalog-fe/src/test/resources/logback-test.xml b/catalog-fe/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..9fc1778eba --- /dev/null +++ b/catalog-fe/src/test/resources/logback-test.xml @@ -0,0 +1,2 @@ +<!-- only one line, shut up logback ! --> +<configuration />
\ No newline at end of file diff --git a/catalog-fe/src/test/spec/codeSpec.js b/catalog-fe/src/test/spec/codeSpec.js new file mode 100644 index 0000000000..1cb5da0b8a --- /dev/null +++ b/catalog-fe/src/test/spec/codeSpec.js @@ -0,0 +1,197 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +describe("General", function() { + + + + describe("File Handler", function() { + + var jsHandler = new JsHandler(); + var fileHandler = jsHandler.getFileHandler(); + fileHandler.fileContents.fileToUpload = mysqlTypeYml; + fileHandler.fileContents.artifactToUpload = installMySqlSH; + + + describe("checkFile Method", function() { + + it("checkFile Valid", function() { + spyOn(window, 'alert'); + + affix('#dummyElement').val('stam.zip'); + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.chef, 'dummyElement'); + expect(isValid).toBeTruthy(); + + + $('#dummyElement').val('stam.sh'); + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.shell, 'dummyElement'); + expect(isValid).toBeTruthy(); + + $('#dummyElement').val('stam.pp'); + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.puppet, 'dummyElement'); + expect(isValid).toBeTruthy(); + + $('#dummyElement').val('stam.yang'); + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.yang, 'dummyElement'); + expect(isValid).toBeTruthy(); + + + + }); + + it("checkFile inValid", function() { + spyOn(window, 'alert'); + + affix('#dummyElement').val('stam.zip'); + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.shell, 'dummyElement'); + expect(isValid).toBeFalsy(); + + $('#dummyElement').val('stam.sh'); + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.chef, 'dummyElement'); + expect(isValid).toBeFalsy(); + + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.puppet, 'dummyElement'); + expect(isValid).toBeFalsy(); + + var isValid = fileHandler.checkFile(fileHandler.filesExtensions.yang, 'dummyElement'); + expect(isValid).toBeFalsy(); + + }); + + }); + + + + describe("getZipName Method", function() { + it("getZipName", function() { + spyOn(fileHandler, 'getFileName').and.returnValue('mysql-type.yml'); + expect(fileHandler.getZipName() == 'mysql-type.zip').toBeTruthy(); + }); + }); + /* + describe("generateArtifactsList Method", function() { + beforeEach(function() { + jsHandler.getDomHandler().exisitngArifactsCounter = 2; + }); + + it("generateArtifactsList", function() { + spyOn(fileHandler, 'getFileName').and.returnValue('mysql-type.yml'); + var artifactList = fileHandler.generateArtifactsList(); +// expect(fileHandler.generateArtifactsList() == 'mysql-type.zip').toBeTruthy(); + }); + });*/ + + describe("getArtifactsListFromYml Method", function() { + it("getArtifactsListFromYml", function() { + var expectedArtifacts = fileHandler.getArtifactsListFromYml(); + expect(expectedArtifacts.length == 3).toBeTruthy(); + expect($.inArray('scripts/install_mysql.sh', expectedArtifacts) != -1).toBeTruthy(); + expect($.inArray('scripts/start_mysql.sh', expectedArtifacts) != -1).toBeTruthy(); + expect($.inArray('images/mysql.png', expectedArtifacts) != -1).toBeTruthy(); + }); + }); + + describe("uploadFileJson Method", function() { + var sentJson, sendEncodedMd5; + + beforeEach(function() { + sentJson = ''; + sendEncodedMd5 = ''; + spyOn(fileHandler, 'sendAjaxToServer').and.callFake(function(strifiedJson, encodedMd5) { + sentJson = JSON.parse(strifiedJson); + sendEncodedMd5 = encodedMd5; + + }); + spyOn(fileHandler, 'getZipName').and.callFake(function() { return 'fakeZipName.zip' }); + spyOn(fileHandler, 'generateArtifactsList').and.callFake(function() { return 'fakeArtifactsList' }); + spyOn(fileHandler, 'generateZip').and.callFake(function() { return 'fakeEncodedZipData' }); + }); + + it("sendAjaxToServer method is called", function() { + fileHandler.uploadFileJson(); + expect(fileHandler.sendAjaxToServer).toHaveBeenCalled(); + }); + + it("json contains relevant fields", function() { + fileHandler.uploadFileJson(); + + expect(sentJson.payloadName == 'fakeZipName.zip').toBeTruthy(); + expect(sentJson.isEncoded).toBeTruthy(); + expect(sentJson.isCompressed).toBeTruthy(); + expect(sentJson.artifactList == 'fakeArtifactsList').toBeTruthy(); + expect(sentJson.payloadData == 'fakeEncodedZipData').toBeTruthy(); + + + + }); + + it("md5 is validated", function() { + fileHandler.uploadFileJson(); + + var strifiedJson = JSON.stringify(sentJson); + var md5 = CryptoJS.MD5(strifiedJson); + var encodedMd5 = btoa(md5); + expect(encodedMd5 == sendEncodedMd5).toBeTruthy(); + + }); + }); + + describe("generateZip Method", function() { + + it("generateZip", function() { + + + spyOn(fileHandler, 'getFileName').and.callFake(function(controName) { + var fileName; + if( controName == 'fileToUpload'){ + fileName = 'mysql-type.yml'; + } + else if( controName == 'imageToUpload'){ + fileName = 'root.png'; + } + else if( controName == 'artifactToUpload'){ + fileName = 'install_mysql.sh'; + } + else{ + fileName = controName+'.sh'; + } + return fileName; + }); + + var encodedZip = fileHandler.generateZip(); + var decodedZip = atob(encodedZip); + var myZip = new JSZip(decodedZip); + + var componentContentInZip = myZip.file('mysql-type.yml').asText(); + expect(componentContentInZip == mysqlTypeYml).toBeTruthy(); + + var artifactContentInZip = myZip.folder('scripts').file('install_mysql.sh').asText(); + expect(artifactContentInZip == installMySqlSH).toBeTruthy(); + + + + }); + }); + }); + + +}); + + diff --git a/catalog-fe/src/test/testScripts/filesContents.js b/catalog-fe/src/test/testScripts/filesContents.js new file mode 100644 index 0000000000..b2e7aa2c65 --- /dev/null +++ b/catalog-fe/src/test/testScripts/filesContents.js @@ -0,0 +1,207 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +var normativeTypesRootYml = "tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03"+ + +"template_name: tosca-normative-types-root"+ +"template_author: TOSCA TC"+ +"template_version: 1.0.0.wd03-SNAPSHOT"+ +"description: Contains the normative types definition."+ +"node_types:"+ +" tosca.nodes.Root:"+ +" abstract: true"+ +" description: >"+ +" This is the default (root) TOSCA Node Type that all other TOSCA nodes should extends."+ +" This allows all TOSCA nodes to have a consistent set of features for modeling and management"+ +" (e.g, consistent definitions for requirements, capabilities, and lifecycle interfaces)."+ +" tags:"+ +" icon: /images/root.png"+ +" attributes:"+ +" tosca_id:"+ +" type: string"+ +" tosca_name:"+ +" type: string"+ +" requirements:"+ +" dependency:"+ +" type: tosca.capabilities.Root"+ +" lower_bound: 0"+ +" upper_bound: unbounded"+ +" capabilities:"+ +" root:"+ +" type: tosca.capabilities.Root"+ +" interfaces:"+ +" tosca.interfaces.node.lifecycle.Standard:"+ +" description: >"+ +" This lifecycle interface defines the essential, normative operations that TOSCA nodes may support."+ +" create:"+ +" description: Standard lifecycle create operation."+ +" configure:"+ +" description: Standard lifecycle configure operation (pre-start)."+ +" start:"+ +" description: Standard lifecycle start operation."+ +" post_start:"+ +" description: Standard lifecycle post-configure operation (post-start)"+ +" stop:"+ +" description: Standard lifecycle stop operation."+ +" delete:"+ +" description: Standard lifecycle delete operation."+ +"capability_types:"+ +" tosca.capabilities.Root:"+ +" description: This is the default (root) TOSCA Capability Type definition that all other TOSCA Capability Types derive from."+ +"relationship_types:"+ +" tosca.relationships.Root:"+ +" abstract: true"+ +" description: This is the default (root) TOSCA Relationship Type definition that all other TOSCA Relationship Types derive from."+ +" valid_targets: [ tosca.capabilities.Root ]"+ +" attributes:"+ +" tosca_id:"+ +" type: string"+ +" tosca_name:"+ +" type: string"+ +" interfaces:"+ +" tosca.interfaces.relationship.Configure:"+ +" description: >"+ +" The lifecycle interfaces define the essential, normative operations that each TOSCA Relationship Types may support."+ +" pre_configure_source:"+ +" description: Operation to pre-configure the source endpoint."+ +" pre_configure_target:"+ +" description: Operation to pre-configure the target endpoint."+ +" post_configure_source:"+ +" description: Operation to post-configure the source endpoint."+ +" post_configure_target:"+ +" description: Operation to post-configure the target endpoint."+ +" add_target:"+ +" description: Operation to notify the source node of a target node being added via a relationship."+ +" add_source:"+ +" description: Operation to notify the target node of a source node which is now available via a relationship."+ +" remove_target:"+ +" description: Operation to notify the source node of a target node being removed from a relationship."+ +" remove_source:"+ +" description: Operation to notify the target node of a source node being removed from a relationship."+ +" target_changed:"+ +" description: Operation to notify source some property or attribute of the target."+ +" source_changed:"+ +" description: Operation to notify target some property or attribute of the source."+ +"artifact_types:"+ +" tosca.artifacts.Root:"+ +" description: The TOSCA Artifact Type all other TOSCA Artifact Types derive from."; + + +var mysqlTypeYml = +"tosca_definitions_version: tosca_simple_yaml_1_0_0_wd03"+ +"description: MySQL RDBMS installation on a specific mounted volume path."+ +"template_name: mysql-type"+ +"template_version: 2.0.0-SNAPSHOT"+ +"template_author: FastConnect"+ + +"imports:"+ +' - "tosca-normative-types:1.0.0.wd03-SNAPSHOT"'+ + +"node_types:"+ +" alien.nodes.Mysql:"+ +" derived_from: tosca.nodes.Database"+ +" description: >"+ +" A node to install MySQL v5.5 database with data"+ +" on a specific attached volume."+ +" capabilities:"+ +" host:"+ +" type: alien.capabilities.MysqlDatabase"+ +" properties:"+ +" valid_node_types: [ tosca.nodes.WebApplication ]"+ +" requirements:"+ +" - host: tosca.nodes.Compute"+ +" type: tosca.relationships.HostedOn"+ +" tags:"+ +" icon: /images/mysql.png"+ +" properties:"+ +" db_port:"+ +" type: integer"+ +" default: 3306"+ +" description: The port on which the underlying database service will listen to data."+ +" db_name:"+ +" type: string"+ +" required: true"+ +" default: wordpress"+ +" description: The logical name of the database."+ +" db_user:"+ +" type: string"+ +" default: pass"+ +" description: The special user account used for database administration."+ +" db_password:"+ +" type: string"+ +" default: pass"+ +" description: The password associated with the user account provided in the ‘db_user’ property."+ +" bind_address:"+ +" type: boolean"+ +" default: true"+ +" required: false"+ +" description: If true,the server accepts TCP/IP connections on all server host IPv4 interfaces."+ +" storage_path:"+ +" type: string"+ +" default: /mountedStorage"+ +" constraints:"+ +' - valid_values: [ "/mountedStorage", "/var/mysql" ]'+ +" interfaces:"+ +" Standard:"+ +" create: scripts/install_mysql.sh"+ +" start:"+ +" inputs:"+ +" VOLUME_HOME: { get_property: [SELF, storage_path] }"+ +" PORT: { get_property: [SELF, db_port] }"+ +" DB_NAME: { get_property: [SELF, db_name] }"+ +" DB_USER: { get_property: [SELF, db_user] }"+ +" DB_PASSWORD: { get_property: [SELF, db_password] }"+ +" BIND_ADRESS: { get_property: [SELF, bind_address] }"+ +" implementation: scripts/start_mysql.sh"+ +" "+ +"capability_types:"+ +" alien.capabilities.MysqlDatabase:"+ +" derived_from: tosca.capabilities.Container"; + + +var installMySqlSH = +'#!/bin/bash'+ + +'echo "Debian based MYSQL install 5..."'+ +'LOCK="/tmp/lockaptget"'+ + +'while true; do'+ +' if mkdir "${LOCK}" &>/dev/null; then'+ +' echo "MySQL take the lock"'+ +' break;'+ +' fi'+ +' echo "Waiting the end of one of our recipes..."'+ +' sleep 0.5'+ +'done'+ + +'while sudo fuser /var/lib/dpkg/lock >/dev/null 2>&1 ; do'+ +' echo "Waiting for other software managers to finish..."'+ +' sleep 0.5'+ +'done'+ +'sudo rm -f /var/lib/dpkg/lock'+ + +'sudo apt-get update || (sleep 15; sudo apt-get update || exit ${1})'+ +'sudo DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server-5.5 pwgen || exit ${1}'+ +'rm -rf "${LOCK}"'+ + +'sudo /etc/init.d/mysql stop'+ +'sudo rm -rf /var/lib/apt/lists/*'+ +'sudo rm -rf /var/lib/mysql/*'+ +'echo "MySQL Installation complete."'; diff --git a/catalog-fe/src/test/testScripts/jasmine-fixture.js b/catalog-fe/src/test/testScripts/jasmine-fixture.js new file mode 100644 index 0000000000..18ff8c6418 --- /dev/null +++ b/catalog-fe/src/test/testScripts/jasmine-fixture.js @@ -0,0 +1,453 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +/* jasmine-fixture - 1.2.2 + * Makes injecting HTML snippets into the DOM easy & clean! + * https://github.com/searls/jasmine-fixture + */ +(function() { + var createHTMLBlock, + __slice = [].slice; + + (function($) { + var ewwSideEffects, jasmineFixture, originalAffix, originalJasmineDotFixture, originalJasmineFixture, root, _, _ref; + root = this; + originalJasmineFixture = root.jasmineFixture; + originalJasmineDotFixture = (_ref = root.jasmine) != null ? _ref.fixture : void 0; + originalAffix = root.affix; + _ = function(list) { + return { + inject: function(iterator, memo) { + var item, _i, _len, _results; + _results = []; + for (_i = 0, _len = list.length; _i < _len; _i++) { + item = list[_i]; + _results.push(memo = iterator(memo, item)); + } + return _results; + } + }; + }; + root.jasmineFixture = function($) { + var $whatsTheRootOf, affix, create, jasmineFixture, noConflict; + affix = function(selectorOptions) { + return create.call(this, selectorOptions, true); + }; + create = function(selectorOptions, attach) { + var $top; + $top = null; + _(selectorOptions.split(/[ ](?=[^\]]*?(?:\[|$))/)).inject(function($parent, elementSelector) { + var $el; + if (elementSelector === ">") { + return $parent; + } + $el = createHTMLBlock($, elementSelector); + if (attach || $top) { + $el.appendTo($parent); + } + $top || ($top = $el); + return $el; + }, $whatsTheRootOf(this)); + return $top; + }; + noConflict = function() { + var currentJasmineFixture, _ref1; + currentJasmineFixture = jasmine.fixture; + root.jasmineFixture = originalJasmineFixture; + if ((_ref1 = root.jasmine) != null) { + _ref1.fixture = originalJasmineDotFixture; + } + root.affix = originalAffix; + return currentJasmineFixture; + }; + $whatsTheRootOf = function(that) { + if (that.jquery != null) { + return that; + } else if ($('#jasmine_content').length > 0) { + return $('#jasmine_content'); + } else { + return $('<div id="jasmine_content"></div>').appendTo('body'); + } + }; + jasmineFixture = { + affix: affix, + create: create, + noConflict: noConflict + }; + ewwSideEffects(jasmineFixture); + return jasmineFixture; + }; + ewwSideEffects = function(jasmineFixture) { + var _ref1; + if ((_ref1 = root.jasmine) != null) { + _ref1.fixture = jasmineFixture; + } + $.fn.affix = root.affix = jasmineFixture.affix; + return afterEach(function() { + return $('#jasmine_content').remove(); + }); + }; + if ($) { + return jasmineFixture = root.jasmineFixture($); + } else { + return root.affix = function() { + var nowJQueryExists; + nowJQueryExists = window.jQuery || window.$; + if (nowJQueryExists != null) { + jasmineFixture = root.jasmineFixture(nowJQueryExists); + return affix.call.apply(affix, [this].concat(__slice.call(arguments))); + } else { + throw new Error("jasmine-fixture requires jQuery to be defined at window.jQuery or window.$"); + } + }; + } + })(window.jQuery || window.$); + + createHTMLBlock = (function() { + var bindData, bindEvents, parseAttributes, parseClasses, parseContents, parseEnclosure, parseReferences, parseVariableScope, regAttr, regAttrDfn, regAttrs, regCBrace, regClass, regClasses, regData, regDatas, regEvent, regEvents, regExclamation, regId, regReference, regTag, regTagNotContent, regZenTagDfn; + createHTMLBlock = function($, ZenObject, data, functions, indexes) { + var ZenCode, arr, block, blockAttrs, blockClasses, blockHTML, blockId, blockTag, blocks, el, el2, els, forScope, indexName, inner, len, obj, origZenCode, paren, result, ret, zc, zo; + if ($.isPlainObject(ZenObject)) { + ZenCode = ZenObject.main; + } else { + ZenCode = ZenObject; + ZenObject = { + main: ZenCode + }; + } + origZenCode = ZenCode; + if (indexes === undefined) { + indexes = {}; + } + if (ZenCode.charAt(0) === "!" || $.isArray(data)) { + if ($.isArray(data)) { + forScope = ZenCode; + } else { + obj = parseEnclosure(ZenCode, "!"); + obj = obj.substring(obj.indexOf(":") + 1, obj.length - 1); + forScope = parseVariableScope(ZenCode); + } + while (forScope.charAt(0) === "@") { + forScope = parseVariableScope("!for:!" + parseReferences(forScope, ZenObject)); + } + zo = ZenObject; + zo.main = forScope; + el = $(); + if (ZenCode.substring(0, 5) === "!for:" || $.isArray(data)) { + if (!$.isArray(data) && obj.indexOf(":") > 0) { + indexName = obj.substring(0, obj.indexOf(":")); + obj = obj.substr(obj.indexOf(":") + 1); + } + arr = ($.isArray(data) ? data : data[obj]); + zc = zo.main; + if ($.isArray(arr) || $.isPlainObject(arr)) { + $.map(arr, function(value, index) { + var next; + zo.main = zc; + if (indexName !== undefined) { + indexes[indexName] = index; + } + if (!$.isPlainObject(value)) { + value = { + value: value + }; + } + next = createHTMLBlock($, zo, value, functions, indexes); + if (el.length !== 0) { + return $.each(next, function(index, value) { + return el.push(value); + }); + } + }); + } + if (!$.isArray(data)) { + ZenCode = ZenCode.substr(obj.length + 6 + forScope.length); + } else { + ZenCode = ""; + } + } else if (ZenCode.substring(0, 4) === "!if:") { + result = parseContents("!" + obj + "!", data, indexes); + if (result !== "undefined" || result !== "false" || result !== "") { + el = createHTMLBlock($, zo, data, functions, indexes); + } + ZenCode = ZenCode.substr(obj.length + 5 + forScope.length); + } + ZenObject.main = ZenCode; + } else if (ZenCode.charAt(0) === "(") { + paren = parseEnclosure(ZenCode, "(", ")"); + inner = paren.substring(1, paren.length - 1); + ZenCode = ZenCode.substr(paren.length); + zo = ZenObject; + zo.main = inner; + el = createHTMLBlock($, zo, data, functions, indexes); + } else { + blocks = ZenCode.match(regZenTagDfn); + block = blocks[0]; + if (block.length === 0) { + return ""; + } + if (block.indexOf("@") >= 0) { + ZenCode = parseReferences(ZenCode, ZenObject); + zo = ZenObject; + zo.main = ZenCode; + return createHTMLBlock($, zo, data, functions, indexes); + } + block = parseContents(block, data, indexes); + blockClasses = parseClasses($, block); + if (regId.test(block)) { + blockId = regId.exec(block)[1]; + } + blockAttrs = parseAttributes(block, data); + blockTag = (block.charAt(0) === "{" ? "span" : "div"); + if (ZenCode.charAt(0) !== "#" && ZenCode.charAt(0) !== "." && ZenCode.charAt(0) !== "{") { + blockTag = regTag.exec(block)[1]; + } + if (block.search(regCBrace) !== -1) { + blockHTML = block.match(regCBrace)[1]; + } + blockAttrs = $.extend(blockAttrs, { + id: blockId, + "class": blockClasses, + html: blockHTML + }); + el = $("<" + blockTag + ">", blockAttrs); + el.attr(blockAttrs); + el = bindEvents(block, el, functions); + el = bindData(block, el, data); + ZenCode = ZenCode.substr(blocks[0].length); + ZenObject.main = ZenCode; + } + if (ZenCode.length > 0) { + if (ZenCode.charAt(0) === ">") { + if (ZenCode.charAt(1) === "(") { + zc = parseEnclosure(ZenCode.substr(1), "(", ")"); + ZenCode = ZenCode.substr(zc.length + 1); + } else if (ZenCode.charAt(1) === "!") { + obj = parseEnclosure(ZenCode.substr(1), "!"); + forScope = parseVariableScope(ZenCode.substr(1)); + zc = obj + forScope; + ZenCode = ZenCode.substr(zc.length + 1); + } else { + len = Math.max(ZenCode.indexOf("+"), ZenCode.length); + zc = ZenCode.substring(1, len); + ZenCode = ZenCode.substr(len); + } + zo = ZenObject; + zo.main = zc; + els = $(createHTMLBlock($, zo, data, functions, indexes)); + els.appendTo(el); + } + if (ZenCode.charAt(0) === "+") { + zo = ZenObject; + zo.main = ZenCode.substr(1); + el2 = createHTMLBlock($, zo, data, functions, indexes); + $.each(el2, function(index, value) { + return el.push(value); + }); + } + } + ret = el; + return ret; + }; + bindData = function(ZenCode, el, data) { + var datas, i, split; + if (ZenCode.search(regDatas) === 0) { + return el; + } + datas = ZenCode.match(regDatas); + if (datas === null) { + return el; + } + i = 0; + while (i < datas.length) { + split = regData.exec(datas[i]); + if (split[3] === undefined) { + $(el).data(split[1], data[split[1]]); + } else { + $(el).data(split[1], data[split[3]]); + } + i++; + } + return el; + }; + bindEvents = function(ZenCode, el, functions) { + var bindings, fn, i, split; + if (ZenCode.search(regEvents) === 0) { + return el; + } + bindings = ZenCode.match(regEvents); + if (bindings === null) { + return el; + } + i = 0; + while (i < bindings.length) { + split = regEvent.exec(bindings[i]); + if (split[2] === undefined) { + fn = functions[split[1]]; + } else { + fn = functions[split[2]]; + } + $(el).bind(split[1], fn); + i++; + } + return el; + }; + parseAttributes = function(ZenBlock, data) { + var attrStrs, attrs, i, parts; + if (ZenBlock.search(regAttrDfn) === -1) { + return undefined; + } + attrStrs = ZenBlock.match(regAttrDfn); + attrs = {}; + i = 0; + while (i < attrStrs.length) { + parts = regAttr.exec(attrStrs[i]); + attrs[parts[1]] = ""; + if (parts[3] !== undefined) { + attrs[parts[1]] = parseContents(parts[3], data); + } + i++; + } + return attrs; + }; + parseClasses = function($, ZenBlock) { + var classes, clsString, i; + ZenBlock = ZenBlock.match(regTagNotContent)[0]; + if (ZenBlock.search(regClasses) === -1) { + return undefined; + } + classes = ZenBlock.match(regClasses); + clsString = ""; + i = 0; + while (i < classes.length) { + clsString += " " + regClass.exec(classes[i])[1]; + i++; + } + return $.trim(clsString); + }; + parseContents = function(ZenBlock, data, indexes) { + var html; + if (indexes === undefined) { + indexes = {}; + } + html = ZenBlock; + if (data === undefined) { + return html; + } + while (regExclamation.test(html)) { + html = html.replace(regExclamation, function(str, str2) { + var begChar, fn, val; + begChar = ""; + if (str.indexOf("!for:") > 0 || str.indexOf("!if:") > 0) { + return str; + } + if (str.charAt(0) !== "!") { + begChar = str.charAt(0); + str = str.substring(2, str.length - 1); + } + fn = new Function("data", "indexes", "var r=undefined;" + "with(data){try{r=" + str + ";}catch(e){}}" + "with(indexes){try{if(r===undefined)r=" + str + ";}catch(e){}}" + "return r;"); + val = unescape(fn(data, indexes)); + return begChar + val; + }); + } + html = html.replace(/\\./g, function(str) { + return str.charAt(1); + }); + return unescape(html); + }; + parseEnclosure = function(ZenCode, open, close, count) { + var index, ret; + if (close === undefined) { + close = open; + } + index = 1; + if (count === undefined) { + count = (ZenCode.charAt(0) === open ? 1 : 0); + } + if (count === 0) { + return; + } + while (count > 0 && index < ZenCode.length) { + if (ZenCode.charAt(index) === close && ZenCode.charAt(index - 1) !== "\\") { + count--; + } else { + if (ZenCode.charAt(index) === open && ZenCode.charAt(index - 1) !== "\\") { + count++; + } + } + index++; + } + ret = ZenCode.substring(0, index); + return ret; + }; + parseReferences = function(ZenCode, ZenObject) { + ZenCode = ZenCode.replace(regReference, function(str) { + var fn; + str = str.substr(1); + fn = new Function("objs", "var r=\"\";" + "with(objs){try{" + "r=" + str + ";" + "}catch(e){}}" + "return r;"); + return fn(ZenObject, parseReferences); + }); + return ZenCode; + }; + parseVariableScope = function(ZenCode) { + var forCode, rest, tag; + if (ZenCode.substring(0, 5) !== "!for:" && ZenCode.substring(0, 4) !== "!if:") { + return undefined; + } + forCode = parseEnclosure(ZenCode, "!"); + ZenCode = ZenCode.substr(forCode.length); + if (ZenCode.charAt(0) === "(") { + return parseEnclosure(ZenCode, "(", ")"); + } + tag = ZenCode.match(regZenTagDfn)[0]; + ZenCode = ZenCode.substr(tag.length); + if (ZenCode.length === 0 || ZenCode.charAt(0) === "+") { + return tag; + } else if (ZenCode.charAt(0) === ">") { + rest = ""; + rest = parseEnclosure(ZenCode.substr(1), "(", ")", 1); + return tag + ">" + rest; + } + return undefined; + }; + regZenTagDfn = /([#\.\@]?[\w-]+|\[([\w-!?=:"']+(="([^"]|\\")+")? {0,})+\]|\~[\w$]+=[\w$]+|&[\w$]+(=[\w$]+)?|[#\.\@]?!([^!]|\\!)+!){0,}(\{([^\}]|\\\})+\})?/i; + regTag = /(\w+)/i; + regId = /(?:^|\b)#([\w-!]+)/i; + regTagNotContent = /((([#\.]?[\w-]+)?(\[([\w!]+(="([^"]|\\")+")? {0,})+\])?)+)/i; + /* + See lookahead syntax (?!) at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp + */ + + regClasses = /(\.[\w-]+)(?!["\w])/g; + regClass = /\.([\w-]+)/i; + regReference = /(@[\w$_][\w$_\d]+)/i; + regAttrDfn = /(\[([\w-!]+(="?([^"]|\\")+"?)? {0,})+\])/ig; + regAttrs = /([\w-!]+(="([^"]|\\")+")?)/g; + regAttr = /([\w-!]+)(="?((([\w]+(\[.*?\])+)|[^"\]]|\\")+)"?)?/i; + regCBrace = /\{(([^\}]|\\\})+)\}/i; + regExclamation = /(?:([^\\]|^))!([^!]|\\!)+!/g; + regEvents = /\~[\w$]+(=[\w$]+)?/g; + regEvent = /\~([\w$]+)=([\w$]+)/i; + regDatas = /&[\w$]+(=[\w$]+)?/g; + regData = /&([\w$]+)(=([\w$]+))?/i; + return createHTMLBlock; + })(); + +}).call(this); diff --git a/catalog-fe/tarball.xml b/catalog-fe/tarball.xml new file mode 100644 index 0000000000..87b944bd4e --- /dev/null +++ b/catalog-fe/tarball.xml @@ -0,0 +1,32 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> + <id>bin</id> + <formats> + <format>tar</format> + </formats> + <files> + <file> + <source>${project.build.directory}/${project.artifactId}-${project.version}.war</source> + <outputDirectory>./</outputDirectory> + <destName>${project.artifactId}-${project.version}.war</destName> + </file> + <file> + <source>src/main/resources/jetty-ipaccess.xml</source> + <outputDirectory>./</outputDirectory> + <destName>jetty-ipaccess.xml</destName> + </file> + </files> + + <fileSets> + <fileSet> + <directory>src/main/resources/config</directory> + <outputDirectory>config</outputDirectory> + </fileSet> + <fileSet> + <directory>src/main/resources/scripts</directory> + <outputDirectory>scripts</outputDirectory> + </fileSet> + </fileSets> + +</assembly> |