Bladeren bron

Add JDK11 on unit-test (#10364)

Wenjun Ruan 2 jaren geleden
bovenliggende
commit
cd62de968d

+ 13 - 3
.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: |

+ 5 - 2
.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:

+ 32 - 15
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("hdfs-mycluster@ESZ.COM");
-            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 -> "hdfs-mycluster@ESZ.COM");
+            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@");

+ 0 - 1
dolphinscheduler-registry/pom.xml

@@ -41,7 +41,6 @@
         <dependency>
             <groupId>javax.annotation</groupId>
             <artifactId>javax.annotation-api</artifactId>
-            <scope>provided</scope>
         </dependency>
     </dependencies>