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

kezhenxu94 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new cd62de968d Add JDK11 on unit-test (#10364)
cd62de968d is described below

commit cd62de968dc037f05e1f188db734da6e57fd014a
Author: Wenjun Ruan <[email protected]>
AuthorDate: Tue Jun 28 14:21:51 2022 +0800

    Add JDK11 on unit-test (#10364)
---
 .github/workflows/backend.yml                      | 16 ++++++--
 .github/workflows/unit-test.yml                    |  7 +++-
 .../datasource/api/utils/CommonUtilsTest.java      | 47 +++++++++++++++-------
 dolphinscheduler-registry/pom.xml                  |  1 -
 4 files changed, 50 insertions(+), 21 deletions(-)

diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml
index d86837f6df..101bba8633 100644
--- a/.github/workflows/backend.yml
+++ b/.github/workflows/backend.yml
@@ -56,18 +56,26 @@ jobs:
     needs: paths-filter
     if: ${{ (needs.paths-filter.outputs.not-ignore == 'true') || 
(github.event_name == 'push') }}
     runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        java: [ '8', '11' ]
     timeout-minutes: 30
     steps:
       - uses: actions/checkout@v2
         with:
           submodules: true
+      - name: Set up JDK ${{ matrix.java }}
+        uses: actions/setup-java@v2
+        with:
+          java-version: ${{ matrix.java }}
+          distribution: 'adopt'
       - name: Sanity Check
         uses: ./.github/actions/sanity-check
       - uses: actions/cache@v3
         with:
           path: ~/.m2/repository
           key: ${{ runner.os }}-maven
-      - name: Build and Package
+      - name: Build and Package on ${{ matrix.java }}
         run: |
           ./mvnw -B clean install \
                  -Prelease,docker \
@@ -79,9 +87,10 @@ jobs:
       - name: Check dependency license
         run: tools/dependencies/check-LICENSE.sh
       - uses: actions/upload-artifact@v2
+        if: ${{ matrix.java == '8' }}
         name: Upload Binary Package
         with:
-          name: binary-package
+          name: binary-package-${{ matrix.java }}
           path: 
./dolphinscheduler-dist/target/apache-dolphinscheduler-dev-SNAPSHOT-bin.tar.gz
           retention-days: 1
   cluster-test:
@@ -103,7 +112,8 @@ jobs:
       - uses: actions/download-artifact@v2
         name: Download Binary Package
         with:
-          name: binary-package
+          # Only run cluster test on jdk8
+          name: binary-package-8
           path: ./
       - name: Running cluster test
         run: |
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 71cd27e1e5..01146c0466 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -53,6 +53,9 @@ jobs:
     needs: paths-filter
     if: ${{ (needs.paths-filter.outputs.not-ignore == 'true') || 
(github.event_name == 'push') }}
     runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        java: ['8', '11']
     timeout-minutes: 30
     steps:
       - uses: actions/checkout@v2
@@ -60,10 +63,10 @@ jobs:
           submodules: true
       - name: Sanity Check
         uses: ./.github/actions/sanity-check
-      - name: Set up JDK 1.8
+      - name: Set up JDK ${{ matrix.java }}
         uses: actions/setup-java@v2
         with:
-          java-version: 8
+          java-version: ${{ matrix.java }}
           distribution: 'adopt'
       - uses: actions/cache@v3
         with:
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/test/java/org/apache/dolphinscheduler/plugin/datasource/api/utils/CommonUtilsTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/test/java/org/apache/dolphinscheduler/plugin/datasource/api/utils/CommonUtilsTest.java
index 7be1a8acb7..ab32a12a69 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/test/java/org/apache/dolphinscheduler/plugin/datasource/api/utils/CommonUtilsTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/test/java/org/apache/dolphinscheduler/plugin/datasource/api/utils/CommonUtilsTest.java
@@ -28,26 +28,32 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.stubbing.Answer;
 import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import 
org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
 import org.powermock.modules.junit4.PowerMockRunner;
 
 @RunWith(PowerMockRunner.class)
-@SuppressStaticInitializationFor("org.apache.dolphinscheduler.spi.utils.PropertyUtils")
+@SuppressStaticInitializationFor(
+    value = {"org.apache.dolphinscheduler.spi.utils.PropertyUtils", 
"org.apache.hadoop.security.UserGroupInformation"}
+)
 @PrepareForTest(value = {PropertyUtils.class, UserGroupInformation.class, 
CommonUtils.class, PasswordUtils.class})
+@PowerMockIgnore({"jdk.xml.*", "org.apache.hadoop.security.*"})
 public class CommonUtilsTest {
 
     @Test
     public void testGetKerberosStartupState() {
         PowerMockito.mockStatic(CommonUtils.class);
-        
PowerMockito.when(CommonUtils.getKerberosStartupState()).thenReturn(false);
+        
PowerMockito.when(CommonUtils.getKerberosStartupState()).thenAnswer((Answer<Boolean>)
 invocation -> false);
         boolean kerberosStartupState = CommonUtils.getKerberosStartupState();
         Assert.assertFalse(kerberosStartupState);
 
         PowerMockito.mockStatic(PropertyUtils.class);
-        
PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenReturn("HDFS");
-        
PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE,
 true)).thenReturn(Boolean.TRUE);
+        
PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenAnswer((Answer<String>)
 invocation -> "HDFS");
+        
PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE,
 true))
+            .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
         kerberosStartupState = CommonUtils.getKerberosStartupState();
         Assert.assertFalse(kerberosStartupState);
     }
@@ -56,34 +62,43 @@ public class CommonUtilsTest {
     public void testLoadKerberosConf() {
         try {
             PowerMockito.mockStatic(PropertyUtils.class);
-            
PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenReturn("HDFS");
-            
PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE,
 false)).thenReturn(Boolean.TRUE);
-            
PowerMockito.when(PropertyUtils.getString(Constants.JAVA_SECURITY_KRB5_CONF_PATH)).thenReturn("/opt/krb5.conf");
-            
PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_USERNAME)).thenReturn("[email protected]");
-            
PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_PATH)).thenReturn("/opt/hdfs.headless.keytab");
+            
PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenAnswer((Answer<String>)
 invocation -> "HDFS");
+            
PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE,
 false))
+                .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
+            
PowerMockito.when(PropertyUtils.getString(Constants.JAVA_SECURITY_KRB5_CONF_PATH))
+                .thenAnswer((Answer<String>) invocation -> "/opt/krb5.conf");
+            
PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_USERNAME))
+                .thenAnswer((Answer<String>) invocation -> 
"[email protected]");
+            
PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_PATH))
+                .thenAnswer((Answer<String>) invocation -> 
"/opt/hdfs.headless.keytab");
 
             PowerMockito.mockStatic(UserGroupInformation.class);
-            boolean result = CommonUtils.loadKerberosConf(new Configuration());
+            Configuration configuration = 
PowerMockito.mock(Configuration.class);
+            
PowerMockito.whenNew(Configuration.class).withNoArguments().thenReturn(configuration);
+
+            boolean result = CommonUtils.loadKerberosConf(configuration);
             Assert.assertTrue(result);
 
             CommonUtils.loadKerberosConf(null, null, null);
 
         } catch (Exception e) {
-            Assert.fail("load Kerberos Conf failed");
+            Assert.fail("load Kerberos Conf failed" + e.getMessage());
         }
     }
 
     @Test
     public void encodePassword() {
         PowerMockito.mockStatic(PropertyUtils.class);
-        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, 
false)).thenReturn(Boolean.TRUE);
+        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
+            .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
 
         Assert.assertEquals("", PasswordUtils.encodePassword(""));
         Assert.assertEquals("bnVsbE1USXpORFUy", 
PasswordUtils.encodePassword("123456"));
         Assert.assertEquals("bnVsbElWRkJXbGhUVjBBPQ==", 
PasswordUtils.encodePassword("!QAZXSW@"));
         Assert.assertEquals("bnVsbE5XUm1aMlZ5S0VBPQ==", 
PasswordUtils.encodePassword("5dfger(@"));
 
-        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, 
false)).thenReturn(Boolean.FALSE);
+        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
+            .thenAnswer((Answer<Boolean>) invocation -> Boolean.FALSE);
 
         Assert.assertEquals("", PasswordUtils.encodePassword(""));
         Assert.assertEquals("123456", PasswordUtils.encodePassword("123456"));
@@ -95,7 +110,8 @@ public class CommonUtilsTest {
     @Test
     public void decodePassword() {
         PowerMockito.mockStatic(PropertyUtils.class);
-        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, 
false)).thenReturn(Boolean.TRUE);
+        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
+            .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
 
         PropertyUtils.setValue(DATASOURCE_ENCRYPTION_ENABLE, "true");
 
@@ -109,7 +125,8 @@ public class CommonUtilsTest {
         Assert.assertEquals("!QAZXSW@", 
PasswordUtils.decodePassword("bnVsbElWRkJXbGhUVjBBPQ=="));
         Assert.assertEquals("5dfger(@", 
PasswordUtils.decodePassword("bnVsbE5XUm1aMlZ5S0VBPQ=="));
 
-        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, 
false)).thenReturn(Boolean.FALSE);
+        
PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
+            .thenAnswer((Answer<Boolean>) invocation -> Boolean.FALSE);
 
         
PowerMockito.when(PasswordUtils.decodePassword("123456")).thenReturn("123456");
         
PowerMockito.when(PasswordUtils.decodePassword("!QAZXSW@")).thenReturn("!QAZXSW@");
diff --git a/dolphinscheduler-registry/pom.xml 
b/dolphinscheduler-registry/pom.xml
index 89e0565924..b8f08b49c1 100644
--- a/dolphinscheduler-registry/pom.xml
+++ b/dolphinscheduler-registry/pom.xml
@@ -41,7 +41,6 @@
         <dependency>
             <groupId>javax.annotation</groupId>
             <artifactId>javax.annotation-api</artifactId>
-            <scope>provided</scope>
         </dependency>
     </dependencies>
 

Reply via email to