You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by vo...@apache.org on 2020/04/26 14:47:39 UTC

[fineract] 03/03: IntegrationTests for git build info

This is an automated email from the ASF dual-hosted git repository.

vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit 394a7fb1d1d268dda3c80f6f28859195ca7242c7
Author: xurror <ka...@outlook.com>
AuthorDate: Thu Apr 23 08:28:57 2020 +0100

    IntegrationTests for git build info
---
 .travis.yml                                        |   2 +-
 fineract-provider/.gitignore                       |   1 -
 fineract-provider/build.gradle                     | 222 +++++++++++----------
 .../integrationtests/ActuatorIntegrationTest.java  |  47 +++++
 4 files changed, 161 insertions(+), 111 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 933e5e5..955add4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -61,5 +61,5 @@ script:
 # using "&&" instead of several "-" means that integrationTest does not run if test fails,
 # and Docker test does not run if integration test fails, which makes PR failure easier to understand.
 # @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase
-  - ./gradlew clean && ./gradlew --console=plain licenseMain licenseTest licenseIntegrationTest check  &&  ./gradlew --console=plain integrationTest  &&  sudo service mysql stop  &&  docker-compose build  &&  docker-compose up -d  &&  sleep 30s  &&  http --verify=no --timeout 240 --check-status get https://localhost:8443/fineract-provider/actuator/health
+  - ./gradlew --console=plain licenseMain licenseTest licenseIntegrationTest check  &&  ./gradlew --console=plain integrationTest  &&  sudo service mysql stop  &&  docker-compose build  &&  docker-compose up -d  &&  sleep 30s  &&  http --verify=no --timeout 240 --check-status get https://localhost:8443/fineract-provider/actuator/health
 # We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773)
diff --git a/fineract-provider/.gitignore b/fineract-provider/.gitignore
index 0118827..e4bae86 100644
--- a/fineract-provider/.gitignore
+++ b/fineract-provider/.gitignore
@@ -1,7 +1,6 @@
 bin
 out/
 build
-src/main/resources/git.properties
 repos
 .classpath
 .project
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index 595e755..955375f 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -24,33 +24,33 @@ gradle clean tomcatrunwar
 project.ext.jerseyVersion = '1.17'
 
 buildscript {
-  ext {
-    openJPAVersion = '3.1.0'
-    jacocoVersion = '0.8.5'
-  }
-  repositories {
-  	 jcenter()
-  	 mavenCentral()
-  	 maven { url "https://plugins.gradle.org/m2/" }
-  }
-
-  dependencies {
-     classpath 'io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE'
-     classpath 'com.bmuschko:gradle-tomcat-plugin:2.5',
-               'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0',
-               'org.zeroturnaround:gradle-jrebel-plugin:1.1.2',
-               'org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE'
-     // below
-     classpath "org.apache.openjpa:openjpa:$openJPAVersion"
-     classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
-     classpath "org.nosphere.apache:creadur-rat-gradle:0.6.0"
-     classpath "com.github.spotbugs:spotbugs-gradle-plugin:2.0.1"
-      // Use Guava version 23+ as a workaround to spotbug intergration.
-      // See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882
-     classpath 'com.google.guava:guava:28.1-jre'
-     classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
-     classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2"
-  }
+    ext {
+        openJPAVersion = '3.1.0'
+        jacocoVersion = '0.8.5'
+    }
+    repositories {
+        jcenter()
+        mavenCentral()
+        maven { url "https://plugins.gradle.org/m2/" }
+    }
+
+    dependencies {
+        classpath 'io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE'
+        classpath 'com.bmuschko:gradle-tomcat-plugin:2.5',
+            'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0',
+            'org.zeroturnaround:gradle-jrebel-plugin:1.1.2',
+            'org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE'
+        // below
+        classpath "org.apache.openjpa:openjpa:$openJPAVersion"
+        classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
+        classpath 'gradle.plugin.org.nosphere.apache:creadur-rat-gradle:0.2.2'
+        classpath "com.github.spotbugs:spotbugs-gradle-plugin:2.0.1"
+        // Use Guava version 23+ as a workaround to spotbug intergration.
+        // See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882
+        classpath 'com.google.guava:guava:28.1-jre'
+        classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
+        classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2"
+    }
 }
 
 apply plugin: 'io.spring.dependency-management'
@@ -73,70 +73,70 @@ apply plugin: "com.gorylenko.gradle-git-properties"
 // apply plugin: 'pmd'
 
 dependencyManagement {
-  imports {
-    mavenBom 'org.springframework:spring-framework-bom:5.2.3.RELEASE'
-  }
-
-  dependencies {
-     dependency 'org.springframework.security.oauth:spring-security-oauth2:2.3.6.RELEASE'
-     dependency 'org.apache.openjpa:openjpa:3.1.0'
-     dependency 'com.squareup.retrofit:retrofit:1.6.1'
-     dependency 'com.squareup.okhttp:okhttp:2.0.0'
-     dependency 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
-     dependency 'com.google.code.gson:gson:+'
-     dependency 'com.google.guava:guava:28.1-jre'
-     dependency 'joda-time:joda-time:+'
-     dependency 'org.apache.commons:commons-email:1.3.3'
-     dependency 'org.apache.commons:commons-lang3:+'
-     dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4'
-     dependency 'com.lowagie:itext:2.1.7'
-     dependency 'com.lowagie:itext-rtf:2.1.7'
-     dependency 'org.mnode.ical4j:ical4j:1.0.4'
-     dependency 'com.googlecode.flyway:flyway-core:2.1.1'
-     dependency 'org.quartz-scheduler:quartz:+'
-     dependency 'com.amazonaws:aws-java-sdk-s3:1.11.80'
-     dependency 'net.sf.ehcache:ehcache:+'
-     dependency 'com.github.spullara.mustache.java:compiler:0.8.12'
-     dependency 'com.jayway.jsonpath:json-path:0.9.1'
-     dependency 'org.apache.tika:tika-core:1.9'
-     dependency 'org.apache.httpcomponents:httpclient:+'
-     dependency 'io.swagger:swagger-jersey-jaxrs:1.5.15'
-     dependency 'org.springframework:spring-jms:4.0.7.RELEASE'
-     dependency 'org.apache.activemq:activemq-broker:+'
-     dependency 'javax.validation:validation-api:+'
-     dependency 'org.apache.bval:org.apache.bval.bundle:2.0.2'
-     dependencySet(group: 'io.rest-assured', version: '3.3.0'){
-         entry 'rest-assured'
-     }
-     dependency 'junit:junit:+'
-     //dependency 'junit:junit-dep:4.11'
-     dependency 'org.mockito:mockito-core:+'
-     dependency 'org.slf4j:slf4j-simple:1.7.30'
-     dependency 'com.mockrunner:mockrunner-jms:2.0.1'
-     dependency 'com.mockrunner:mockrunner-jdbc:2.0.1'
-
-     dependencySet(group: 'com.sun.jersey', version: jerseyVersion) {
-         entry 'jersey-core'
-         entry 'jersey-servlet'
-         entry 'jersey-server'
-         entry 'jersey-json'
-     }
-     dependencySet(group: 'com.sun.jersey.contribs', version: jerseyVersion) {
-         entry 'jersey-spring'
-         entry 'jersey-multipart'
-     }
-     dependencySet(group: 'org.apache.poi', version: '3.9') {
-         entry 'poi'
-         entry 'poi-ooxml'
-         entry 'poi-ooxml-schemas'
-     }
-     dependencySet(group: 'org.apache.tomcat.embed', version: '7.0.94') {
-         entry 'tomcat-embed-core'
-         entry 'tomcat-embed-jasper'
-         entry 'tomcat-embed-logging-log4j'
-     }
-     
-  }
+    imports {
+        mavenBom 'org.springframework:spring-framework-bom:5.2.3.RELEASE'
+    }
+
+    dependencies {
+        dependency 'org.springframework.security.oauth:spring-security-oauth2:2.3.6.RELEASE'
+        dependency 'org.apache.openjpa:openjpa:3.1.0'
+        dependency 'com.squareup.retrofit:retrofit:1.6.1'
+        dependency 'com.squareup.okhttp:okhttp:2.0.0'
+        dependency 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
+        dependency 'com.google.code.gson:gson:+'
+        dependency 'com.google.guava:guava:28.1-jre'
+        dependency 'joda-time:joda-time:+'
+        dependency 'org.apache.commons:commons-email:1.3.3'
+        dependency 'org.apache.commons:commons-lang3:+'
+        dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4'
+        dependency 'com.lowagie:itext:2.1.7'
+        dependency 'com.lowagie:itext-rtf:2.1.7'
+        dependency 'org.mnode.ical4j:ical4j:1.0.4'
+        dependency 'com.googlecode.flyway:flyway-core:2.1.1'
+        dependency 'org.quartz-scheduler:quartz:+'
+        dependency 'com.amazonaws:aws-java-sdk-s3:1.11.80'
+        dependency 'net.sf.ehcache:ehcache:+'
+        dependency 'com.github.spullara.mustache.java:compiler:0.8.12'
+        dependency 'com.jayway.jsonpath:json-path:0.9.1'
+        dependency 'org.apache.tika:tika-core:1.9'
+        dependency 'org.apache.httpcomponents:httpclient:+'
+        dependency 'io.swagger:swagger-jersey-jaxrs:1.5.15'
+        dependency 'org.springframework:spring-jms:4.0.7.RELEASE'
+        dependency 'org.apache.activemq:activemq-broker:+'
+        dependency 'javax.validation:validation-api:+'
+        dependency 'org.apache.bval:org.apache.bval.bundle:2.0.2'
+        dependencySet(group: 'io.rest-assured', version: '3.3.0'){
+            entry 'rest-assured'
+        }
+        dependency 'junit:junit:+'
+        //dependency 'junit:junit-dep:4.11'
+        dependency 'org.mockito:mockito-core:+'
+        dependency 'org.slf4j:slf4j-simple:1.7.30'
+        dependency 'com.mockrunner:mockrunner-jms:2.0.1'
+        dependency 'com.mockrunner:mockrunner-jdbc:2.0.1'
+
+        dependencySet(group: 'com.sun.jersey', version: jerseyVersion) {
+            entry 'jersey-core'
+            entry 'jersey-servlet'
+            entry 'jersey-server'
+            entry 'jersey-json'
+        }
+        dependencySet(group: 'com.sun.jersey.contribs', version: jerseyVersion) {
+            entry 'jersey-spring'
+            entry 'jersey-multipart'
+        }
+        dependencySet(group: 'org.apache.poi', version: '3.9') {
+            entry 'poi'
+            entry 'poi-ooxml'
+            entry 'poi-ooxml-schemas'
+        }
+        dependencySet(group: 'org.apache.tomcat.embed', version: '7.0.94') {
+            entry 'tomcat-embed-core'
+            entry 'tomcat-embed-jasper'
+            entry 'tomcat-embed-logging-log4j'
+        }
+        
+    }
 }
 
 /* define the valid syntax level for source files */
@@ -175,7 +175,11 @@ jacocoTestReport{
 }
 
 rat {
+    xmlOutput = false
+    htmlOutput = false
+    plainOutput = true
     verbose = false
+    // inputDir = './..'
     reportDir = new File(buildDir,'reports/rat')
     excludes = [
         '**/licenses/**',
@@ -250,6 +254,9 @@ rat {
         '**/assets/uglify.js',
         //Ignore out folder
         '**/out/**',
+
+        // Git build info
+        "**/git.properties",
     ]
 }
 
@@ -457,20 +464,20 @@ sourceSets.test.output.resourcesDir = sourceSets.test.java.outputDir
 
 /* Exclude maria db and embedded tomcat related files for non dev builds */
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
-sourceSets {
-    main {
-        java {
-            exclude '**/Server*'
-            exclude '**/MariaDB4j*'
-            exclude '**/EmbeddedTomcatWithSSLConfiguration.java'
+    sourceSets {
+        main {
+            java {
+                exclude '**/Server*'
+                exclude '**/MariaDB4j*'
+                exclude '**/EmbeddedTomcatWithSSLConfiguration.java'
+            }
+        }
+        test {
+            java {
+                exclude '**/core/boot/tests/**'
+            }
         }
     }
-    test {
-    	java {
-    		exclude '**/core/boot/tests/**'
-    	}
-    }
-}
 }
 
 sourceSets {
@@ -575,14 +582,11 @@ tasks.withType(SpotBugsTask) {
 }
 
 gitProperties {
-    gitPropertiesResourceDir = "${project.rootDir}/src/main/resources"
+    gitPropertiesResourceDir = "$buildDir/classes/java/main/resources"
     dateFormat = "yyyy-MM-dd'T'HH:mmZ"
     dateFormatTimeZone = "GMT"
+    failOnNoGitDirectory = false
 }
 
+// make sure the generateGitProperties task always executes (even when git.properties is not changed)
 generateGitProperties.outputs.upToDateWhen { false }
-
-clean {
-    delete "${project.rootDir}/src/main/resources/git.properties"
-}
-
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java
new file mode 100644
index 0000000..48219f8
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.fineract.integrationtests;
+
+import static org.junit.Assert.assertTrue;
+
+import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import io.restassured.response.Response;
+import java.util.Map;
+import org.junit.Test;
+
+public class ActuatorIntegrationTest {
+
+    private final static String INFO_URL = "/fineract-provider/actuator/info";
+
+    @Test
+    public void testActuatorGitBuildInfo() {
+        Response response = RestAssured.given()
+            .headers("Content-Type", ContentType.JSON, "Accept", ContentType.JSON).when()
+            .get(INFO_URL).then().contentType(ContentType.JSON).extract().response();
+
+        Map<String, String> gitBuildInfo = response.jsonPath().getMap("git");
+
+        assertTrue(gitBuildInfo.containsKey("branch"));
+        assertTrue(gitBuildInfo.containsKey("remote"));
+
+    }
+
+}