diff options
author | Jozsef Csongvai <jozsef.csongvai@bell.ca> | 2020-08-11 16:17:55 -0400 |
---|---|---|
committer | Jozsef Csongvai <jozsef.csongvai@bell.ca> | 2020-08-11 16:36:01 -0400 |
commit | fb0b3dc943bca0346271e0889ff2e7dbf3c77eeb (patch) | |
tree | 10e3ca9ced32f57cac7701ce57427d0617f3883e /components/model-catalog/blueprint-model/test-blueprint-kotlin-parent/pom.xml | |
parent | 26fe74dd5776276f432e5159e5f7f70a3a106292 (diff) |
Add test-blueprint-kotlin-parent
This parent project is intended for inheritence in CBA pom.xml.
It provides dependencies for testing and mocking kotlin scripts.
By turning a CBA into a maven project which inherits this parent,
users will be able to debug and unit test their kotlin scripts.
The parent also includes a profile (-Pdeploy-cba) which will enrich
and publish the CBA to a running instance of CDS, defined by properties
in the CBA pom.xml.
This patch also adds a common assembly descriptor for resuse in
maven-assembly-plugin where it is used to package CBA into zip.
Issue-ID: CCSDK-2642
Signed-off-by: Jozsef Csongvai <jozsef.csongvai@bell.ca>
Change-Id: I160c3c3e982ad4ed46f0704d6dc27dadfb0dfdc8
Diffstat (limited to 'components/model-catalog/blueprint-model/test-blueprint-kotlin-parent/pom.xml')
-rw-r--r-- | components/model-catalog/blueprint-model/test-blueprint-kotlin-parent/pom.xml | 393 |
1 files changed, 393 insertions, 0 deletions
diff --git a/components/model-catalog/blueprint-model/test-blueprint-kotlin-parent/pom.xml b/components/model-catalog/blueprint-model/test-blueprint-kotlin-parent/pom.xml new file mode 100644 index 000000000..1459531ec --- /dev/null +++ b/components/model-catalog/blueprint-model/test-blueprint-kotlin-parent/pom.xml @@ -0,0 +1,393 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright © 2020 Bell Canada + ~ + ~ 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. + --> + +<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> + + <parent> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId> + <artifactId>cba-parent</artifactId> + <version>1.0.0-SNAPSHOT</version> + </parent> + + <artifactId>test-blueprint-kotlin-parent</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <name>CBA - Test Kotlin scripts</name> + <description>CBA - Test Kotlin scripts</description> + + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId> + <artifactId>execution-service</artifactId> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId> + <artifactId>resource-resolution</artifactId> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId> + <artifactId>netconf-executor</artifactId> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId> + <artifactId>cli-executor</artifactId> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId> + <artifactId>message-prioritizaion</artifactId> + </dependency> + <dependency> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-stdlib</artifactId> + </dependency> + <dependency> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-test-junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.jetbrains.kotlinx</groupId> + <artifactId>kotlinx-coroutines-test</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.mockk</groupId> + <artifactId>mockk</artifactId> + <version>1.10.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.squareup.okhttp3</groupId> + <artifactId>okhttp</artifactId> + <version>3.14.0</version> + </dependency> + </dependencies> + + <build> + <sourceDirectory>${project.basedir}/Scripts/kotlin</sourceDirectory> + <testSourceDirectory>${project.basedir}/Tests/kotlin</testSourceDirectory> + <resources> + <resource> + <directory>${project.basedir}/Environments</directory> + </resource> + </resources> + <plugins> + <plugin> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>validate-kotlin</id> + <phase>validate</phase> + <configuration> + <target name="ktlint"> + <java taskname="ktlint" dir="${project.basedir}" fork="true" failonerror="true" classname="com.pinterest.ktlint.Main" classpathref="maven.plugin.classpath"> + <arg value="Scripts/kotlin/**/*.kt"/> + </java> + </target> + <skip>${format.skipValidate}</skip> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + <execution> + <!-- Built-in formatter So that you wouldn't have to fix all style violations by hand.--> + <id>format-kotlin</id> + <phase>process-sources</phase> + <configuration> + <target name="ktlint"> + <java taskname="ktlint" dir="${project.basedir}" fork="true" failonerror="true" classname="com.pinterest.ktlint.Main" classpathref="maven.plugin.classpath"> + <arg value="-F"/> + <arg value="Scripts/kotlin/**/*.kt"/> + </java> + </target> + <skip>${format.skipExecute}</skip> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <executions> + <execution> + <id>pre-unit-test</id> + <phase>none</phase> + </execution> + <execution> + <id>default-prepare-agent</id> + <phase>none</phase> + </execution> + <execution> + <id>post-unit-test</id> + <phase>none</phase> + </execution> + <execution> + <id>default-report</id> + <phase>none</phase> + </execution> + <execution> + <id>pre-integration-test</id> + <phase>none</phase> + </execution> + <execution> + <id>post-integration-test</id> + <phase>none</phase> + </execution> + <execution> + <id>default-check</id> + <phase>none</phase> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + <executions> + <execution> + <id>default</id> + <phase>none</phase> + </execution> + <execution> + <id>integration-tests</id> + <phase>none</phase> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-maven-plugin</artifactId> + <version>${kotlin.maven.version}</version> + <executions> + <execution> + <id>compile</id> + <phase>compile</phase> + <goals> + <goal>compile</goal> + </goals> + <configuration> + <sourceDirs> + <sourceDir>${project.basedir}/Scripts/kotlin</sourceDir> + </sourceDirs> + </configuration> + </execution> + <execution> + <id>test-compile</id> + <phase>test-compile</phase> + <goals> + <goal>test-compile</goal> + </goals> + <configuration> + <sourceDirs> + <sourceDir>${project.basedir}/Tests/kotlin</sourceDir> + </sourceDirs> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <executions> + <execution> + <id>default-test</id> + <phase>test</phase> + <goals> + <goal>test</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <executions> + <execution> + <id>attach-descriptor</id> + <phase>none</phase> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-checkstyle-plugin</artifactId> + <executions> + <execution> + <id>check-license</id> + <phase>none</phase> + </execution> + <execution> + <id>check-style</id> + <phase>none</phase> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId> + <artifactId>cba-assembly-descriptor</artifactId> + <version>1.0.0-SNAPSHOT</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + <configuration> + <descriptorRefs> + <descriptorRef>cba_zip</descriptorRef> + </descriptorRefs> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>deploy-cba</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.gmaven</groupId> + <artifactId>groovy-maven-plugin</artifactId> + <dependencies> + <dependency> + <groupId>com.squareup.okhttp3</groupId> + <artifactId>okhttp</artifactId> + <version>3.14.0</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>${commons-io-version}</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>deploy-cba</id> + <phase>install</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source> + import okhttp3.Credentials + import okhttp3.MediaType + import okhttp3.MultipartBody + import okhttp3.OkHttpClient + import okhttp3.Request + import okhttp3.RequestBody + import org.apache.commons.io.IOUtils + + import java.io.File + + target = "${basedir.absolutePath}/target" + userName = throwIfPropMissing('cds.username') + password = throwIfPropMissing('cds.password') + protocol = properties['cds.protocol'] ?: 'http' + host = properties['cds.host'] ?: 'localhost' + port = properties['cds.port'] ?: '8081' + + def cba = "${project.artifact.artifactId}-${project.artifact.version}-cba.zip" + def enrichedCba = "${project.artifact.artifactId}-${project.artifact.version}-enriched-cba.zip" + def enrichEndpoint = properties['cds.enrich.endpoint'] ?: 'api/v1/blueprint-model/enrich' + def publishEndpoint = properties['cds.publish.endpoint'] ?: 'api/v1/blueprint-model/publish' + + def throwIfPropMissing(prop) { + value = properties[prop] + if (!value || "".equals(value)) { + throw new RuntimeException("Property missing: $prop") + } + return value + } + + def buildRequest(endpoint, fileName) { + body = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("file", + fileName, + RequestBody.create(MediaType.parse('application/zip'), new File(target, fileName))) + .build() + + return new Request.Builder() + .url("$protocol://$host:$port/$endpoint") + .addHeader('Authorization', Credentials.basic(userName, password)) + .post(body) + .build() + } + + def logAndThrow(msg) { + if(response) { + log.error(response.body().string()) + } + throw new RuntimeException(msg) + } + + response = null + try { + def client = new OkHttpClient() + + response = client.newCall(buildRequest(enrichEndpoint, cba)).execute() + if (!response || !response.isSuccessful()) { + logAndThrow("Failed to enrich CBA") + } + + IOUtils.copy( + response.body().byteStream(), + new FileOutputStream(new File(target, enrichedCba)) + ) + log.info("Created enriched cba: $enrichedCba") + + response = client.newCall(buildRequest(publishEndpoint, enrichedCba)).execute() + if (!response || !response.isSuccessful()) { + logAndThrow("Failed to publish CBA") + } + + log.info("CBA Deployed") + log.info(response.body().string()) + } finally { + if (response) { + response.close() + } + } + </source> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> |