This is an automated email from the ASF dual-hosted git repository. joewitt pushed a commit to branch support/nifi-1.16 in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 520d2b145936f71fabf50e1c3a4e64b5765e0b54 Author: Paul Grey <[email protected]> AuthorDate: Tue Apr 19 16:35:09 2022 -0400 NIFI-9826 Moved build locale settings from Maven to GitHub Workflow - Adjusted Java 17 build locale settings - Added test to verify match between System properties and build environment variables This closes #5980 Signed-off-by: David Handermann <[email protected]> --- .github/workflows/ci-workflow.yml | 46 +++++++++++++----- nifi-commons/nifi-build/pom.xml | 25 ++++++++++ .../apache/nifi/build/VerifyBuildLocaleTest.java | 55 ++++++++++++++++++++++ nifi-commons/pom.xml | 1 + pom.xml | 6 --- 5 files changed, 114 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 107e406294..c3e7ee7728 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -51,7 +51,7 @@ concurrency: cancel-in-progress: true jobs: - ubuntu-build: + ubuntu-build-en: timeout-minutes: 120 runs-on: ubuntu-latest name: Ubuntu Zulu JDK 17 EN @@ -88,12 +88,17 @@ jobs: java-version: '17' - name: Maven Build env: - MAVEN_OPTS: >- - ${{ env.DEFAULT_MAVEN_OPTS }} + NIFI_CI_LOCALE: >- + -Duser.language=en + -Duser.country=AU + SUREFIRE_OPTS: >- -Duser.language=en -Duser.country=AU -Duser.region=AU -Duser.timezone=Australia/Melbourne + MAVEN_OPTS: >- + ${{ env.DEFAULT_MAVEN_OPTS }} + -DargLine=${env.SUREFIRE_OPTS} run: > ${{ env.MAVEN_COMMAND }} ${{ env.MAVEN_PROFILES }} @@ -110,10 +115,10 @@ jobs: - name: Post Disk Usage run: df - ubuntu-build-en: + ubuntu-build-hi: timeout-minutes: 120 runs-on: ubuntu-latest - name: Ubuntu Zulu JDK 11 EN + name: Ubuntu Zulu JDK 11 HI steps: - name: System Information run: | @@ -147,12 +152,17 @@ jobs: java-version: '11' - name: Maven Build env: + NIFI_CI_LOCALE: >- + -Duser.language=hi + -Duser.country=IN + SUREFIRE_OPTS: >- + -Duser.language=hi + -Duser.country=IN + -Duser.region=IN + -Duser.timezone=Asia/Kolkata MAVEN_OPTS: >- ${{ env.DEFAULT_MAVEN_OPTS }} - -Duser.language=en - -Duser.country=AU - -Duser.region=AU - -Duser.timezone=Australia/Melbourne + -DargLine=${env.SUREFIRE_OPTS} run: > ${{ env.MAVEN_COMMAND }} ${{ env.MAVEN_PROFILES }} @@ -206,12 +216,17 @@ jobs: java-version: '8' - name: Maven Build env: - MAVEN_OPTS: >- - ${{ env.DEFAULT_MAVEN_OPTS }} + NIFI_CI_LOCALE: >- + -Duser.language=ja + -Duser.country=JP + SUREFIRE_OPTS: >- -Duser.language=ja -Duser.country=JP -Duser.region=JP -Duser.timezone=Asia/Tokyo + MAVEN_OPTS: >- + ${{ env.DEFAULT_MAVEN_OPTS }} + -DargLine=${env.SUREFIRE_OPTS} run: >- ${{ env.MAVEN_COMMAND }} ${{ env.MAVEN_PROFILES }} @@ -271,12 +286,17 @@ jobs: java-version: '8' - name: Maven Build env: - MAVEN_OPTS: >- - ${{ env.DEFAULT_MAVEN_OPTS }} + NIFI_CI_LOCALE: >- + -Duser.language=fr + -Duser.country=FR + SUREFIRE_OPTS: >- -Duser.language=fr -Duser.country=FR -Duser.region=FR -Duser.timezone=Europe/Paris + MAVEN_OPTS: >- + ${{ env.DEFAULT_MAVEN_OPTS }} + -DargLine=${env.SUREFIRE_OPTS} run: >- ${{ env.MAVEN_COMMAND }} ${{ env.MAVEN_PROJECTS }} diff --git a/nifi-commons/nifi-build/pom.xml b/nifi-commons/nifi-build/pom.xml new file mode 100644 index 0000000000..3574a5da4c --- /dev/null +++ b/nifi-commons/nifi-build/pom.xml @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<!-- + 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. +--> +<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.nifi</groupId> + <artifactId>nifi-commons</artifactId> + <version>1.17.0-SNAPSHOT</version> + </parent> + <artifactId>nifi-build</artifactId> +</project> diff --git a/nifi-commons/nifi-build/src/test/java/org/apache/nifi/build/VerifyBuildLocaleTest.java b/nifi-commons/nifi-build/src/test/java/org/apache/nifi/build/VerifyBuildLocaleTest.java new file mode 100644 index 0000000000..73ad264a44 --- /dev/null +++ b/nifi-commons/nifi-build/src/test/java/org/apache/nifi/build/VerifyBuildLocaleTest.java @@ -0,0 +1,55 @@ +/* + * 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.nifi.build; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import org.junit.platform.commons.util.StringUtils; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class VerifyBuildLocaleTest { + + /** + * Verify that the intended system locale is active for the surefire invocation. + * + * NiFi Surefire invocations may be executed in the context of a particular locale, in order to verify the locale + * independence of the code base. + * + * If "NIFI_CI_LOCALE" is defined, then it must specify each system property enumerated in this test case. + */ + @Test + @EnabledIfEnvironmentVariable(named = "NIFI_CI_LOCALE", matches = ".+", + disabledReason = "NiFi CI build sets this environment variable; it will not normally be set") + public void testEnvironmentLocaleMatchesSystemProperties() { + final String ciLocale = System.getenv("NIFI_CI_LOCALE"); + // if the flag variable is set, verify the system locale of the surefire process against NIFI_CI_LOCALE + final String[] systemPropertyKeys = { + "user.language", + "user.country", + }; + for (String key : systemPropertyKeys) { + assertTrue(ciLocale.contains(key)); + final String value = System.getProperty(key); + final String message = String.format( + "system property - CI_LOCALE:[%s] ACTUAL:[%s=%s]", ciLocale, key, value); + assertTrue(StringUtils.isNotBlank(value), message); + final String expected = String.format("%s=%s", key, value); + assertTrue(ciLocale.contains(expected), message); + } + } +} diff --git a/nifi-commons/pom.xml b/nifi-commons/pom.xml index 1864f7a183..648ca6af40 100644 --- a/nifi-commons/pom.xml +++ b/nifi-commons/pom.xml @@ -25,6 +25,7 @@ <packaging>pom</packaging> <modules> <module>nifi-bootstrap-utils</module> + <module>nifi-build</module> <module>nifi-data-provenance-utils</module> <module>nifi-expression-language</module> <module>nifi-flowfile-packager</module> diff --git a/pom.xml b/pom.xml index ae8d5afb20..a283b14448 100644 --- a/pom.xml +++ b/pom.xml @@ -657,12 +657,6 @@ <exclude>**/*ITSpec.class</exclude> </excludes> <redirectTestOutputToFile>true</redirectTestOutputToFile> - <argLine combine.children="append">-Xmx1g - -Djava.net.preferIPv4Stack=true - -Duser.language=${user.language} - -Duser.country=${user.country} - -Duser.timezone=${user.timezone} - -Dfile.encoding=UTF-8</argLine> </configuration> </plugin> <plugin>
