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

leonbao pushed a commit to branch dev-resource-tree
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev-resource-tree by this push:
     new 1a4963e  Fix github action rerun failed (#2067)
1a4963e is described below

commit 1a4963e2cb6f9ab67df178080616375106b7d6b6
Author: lgcareer <[email protected]>
AuthorDate: Tue Mar 3 16:58:10 2020 +0800

    Fix github action rerun failed (#2067)
    
    * update resource service test
    
    * Fix github action rerun failed
    
    * add status of PARENT_RESOURCE_NOT_EXIST
---
 .github/workflows/ci_backend.yml                   |  6 +-
 .github/workflows/ci_frontend.yml                  |  4 +-
 .github/workflows/ci_ut.yml                        | 10 ++--
 .../apache/dolphinscheduler/api/enums/Status.java  |  1 +
 .../api/service/ResourcesService.java              | 14 ++++-
 .../api/service/ResourcesServiceTest.java          | 66 ++++++++++++++++------
 6 files changed, 72 insertions(+), 29 deletions(-)

diff --git a/.github/workflows/ci_backend.yml b/.github/workflows/ci_backend.yml
index e527c3c..1ca15c2 100644
--- a/.github/workflows/ci_backend.yml
+++ b/.github/workflows/ci_backend.yml
@@ -45,17 +45,17 @@ jobs:
   Compile-check:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v1
+      - uses: actions/checkout@v2
       - name: Set up JDK 1.8
         uses: actions/setup-java@v1
         with:
           java-version: 1.8
       - name: Compile
-        run: mvn -U -B -T 1C clean install -Prelease -Dmaven.compile.fork=true 
-Dmaven.test.skip=true
+        run: mvn -B clean compile package -Prelease -Dmaven.test.skip=true
   License-check:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v1
+      - uses: actions/checkout@v2
       - name: Set up JDK 1.8
         uses: actions/setup-java@v1
         with:
diff --git a/.github/workflows/ci_frontend.yml 
b/.github/workflows/ci_frontend.yml
index fab75c6..1f959b4 100644
--- a/.github/workflows/ci_frontend.yml
+++ b/.github/workflows/ci_frontend.yml
@@ -34,7 +34,7 @@ jobs:
       matrix:
         os: [ubuntu-latest, macos-latest]
     steps:
-      - uses: actions/checkout@v1
+      - uses: actions/checkout@v2
       - name: Set up Node.js
         uses: actions/setup-node@v1
         with:
@@ -49,7 +49,7 @@ jobs:
   License-check:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v1
+      - uses: actions/checkout@v2
       - name: Set up JDK 1.8
         uses: actions/setup-java@v1
         with:
diff --git a/.github/workflows/ci_ut.yml b/.github/workflows/ci_ut.yml
index 1166029..13993ca 100644
--- a/.github/workflows/ci_ut.yml
+++ b/.github/workflows/ci_ut.yml
@@ -20,7 +20,7 @@ env:
   DOCKER_DIR: ./docker
   LOG_DIR: /tmp/dolphinscheduler
 
-name: Test Coveralls Parallel
+name: Unit Test
 
 jobs:
 
@@ -29,9 +29,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
 
-      - uses: actions/checkout@v1
-        with:
-          submodules: true
+      - uses: actions/checkout@v2
       - uses: actions/cache@v1
         with:
           path: ~/.m2/repository
@@ -47,13 +45,13 @@ jobs:
       - name: Compile
         run: |
           export MAVEN_OPTS='-Dmaven.repo.local=.m2/repository 
-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+CMSClassUnloadingEnabled 
-XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -Xmx3g'
-          mvn test -B -Dmaven.test.skip=false cobertura:cobertura
+          mvn test -B -Dmaven.test.skip=false
           CODECOV_TOKEN="09c2663f-b091-4258-8a47-c981827eb29a" bash <(curl -s 
https://codecov.io/bash)
       - name: Run SonarCloud Analysis
         run: >
           mvn verify --batch-mode
           org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.1.1688:sonar
-          -Dsonar.junit.reportPaths=target/cobertura
+          -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml
           -Dmaven.test.skip=true
           -Dsonar.host.url=https://sonarcloud.io
           -Dsonar.organization=apache
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 8d785e5..b85747e 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -185,6 +185,7 @@ public enum Status {
     RESOURCE_FILE_NOT_EXIST(20012, "resource file {0} not exists in hdfs!"),
     UDF_RESOURCE_IS_BOUND(20013, "udf resource file is bound by UDF 
functions:{0}"),
     RESOURCE_IS_USED(20014, "resource file is used by process definition"),
+    PARENT_RESOURCE_NOT_EXIST(20015, "resource not exist"),
 
 
 
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
index 095f532..b1dbed2 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
@@ -91,13 +91,19 @@ public class ResourcesService extends BaseService {
                                  int pid,
                                  String currentDir) {
         Result result = new Result();
+        // if hdfs not startup
+        if (!PropertyUtils.getResUploadStartupState()){
+            logger.error("resource upload startup state: {}", 
PropertyUtils.getResUploadStartupState());
+            putMsg(result, Status.HDFS_NOT_STARTUP);
+            return result;
+        }
         String fullName = currentDir.equals("/") ? 
String.format("%s%s",currentDir,name):String.format("%s/%s",currentDir,name);
 
         if (pid != -1) {
             Resource parentResource = resourcesMapper.selectById(pid);
 
             if (parentResource == null) {
-                putMsg(result, Status.RESOURCE_NOT_EXIST);
+                putMsg(result, Status.PARENT_RESOURCE_NOT_EXIST);
                 return result;
             }
 
@@ -406,6 +412,10 @@ public class ResourcesService extends BaseService {
 
     /**
      * create direcoty
+     * @param loginUser login user
+     * @param fullName  full name
+     * @param type      resource type
+     * @param result    Result
      */
     private void createDirecotry(User loginUser,String fullName,ResourceType 
type,Result result){
         // query tenant
@@ -554,7 +564,7 @@ public class ResourcesService extends BaseService {
         resourceIdSet.retainAll(allChildren);
         if (CollectionUtils.isNotEmpty(resourceIdSet)) {
             logger.error("can't be deleted,because it is used of process 
definition");
-            putMsg(result, Status.USER_NO_OPERATION_PERM);
+            putMsg(result, Status.RESOURCE_IS_USED);
             return result;
         }
 
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
index 73fa903..c735317 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
@@ -71,6 +71,8 @@ public class ResourcesServiceTest {
     private UserMapper userMapper;
     @Mock
     private UdfFuncMapper udfFunctionMapper;
+    @Mock
+    private ProcessDefinitionMapper processDefinitionMapper;
 
     @Before
     public void setUp() {
@@ -121,19 +123,30 @@ public class ResourcesServiceTest {
         
Assert.assertEquals(Status.UDF_RESOURCE_SUFFIX_NOT_JAR.getMsg(),result.getMsg());
 
 
-        //UDF_RESOURCE_SUFFIX_NOT_JAR
-        Mockito.when(tenantMapper.queryById(0)).thenReturn(getTenant());
-        
Mockito.when(resourcesMapper.queryResourceList("ResourcesServiceTest.jar", 0, 
1)).thenReturn(getResourceList());
-        mockMultipartFile = new 
MockMultipartFile("ResourcesServiceTest.jar","ResourcesServiceTest.jar","pdf",new
 String("test").getBytes());
-        result = 
resourcesService.createResource(user,"ResourcesServiceTest.jar","ResourcesServiceTest",ResourceType.UDF,mockMultipartFile,-1,"/");
+    }
+
+    @Test
+    public void testCreateDirecotry(){
+
+        
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(false);
+        User user = new User();
+        //HDFS_NOT_STARTUP
+        Result result = 
resourcesService.createDirectory(user,"directoryTest","directory 
test",ResourceType.FILE,-1,"/");
         logger.info(result.toString());
-        Assert.assertEquals(Status.RESOURCE_EXIST.getMsg(),result.getMsg());
+        Assert.assertEquals(Status.HDFS_NOT_STARTUP.getMsg(),result.getMsg());
 
-        //SUCCESS
-        
Mockito.when(resourcesMapper.queryResourceList("ResourcesServiceTest.jar", 0, 
1)).thenReturn(new ArrayList<>());
-        result = 
resourcesService.createResource(user,"ResourcesServiceTest.jar","ResourcesServiceTest",ResourceType.UDF,mockMultipartFile,-1,"/");
+        //PARENT_RESOURCE_NOT_EXIST
+        
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(true);
+        
Mockito.when(resourcesMapper.selectById(Mockito.anyInt())).thenReturn(null);
+        result = 
resourcesService.createDirectory(user,"directoryTest","directory 
test",ResourceType.FILE,1,"/");
         logger.info(result.toString());
-        Assert.assertEquals(Status.SUCCESS.getMsg(),result.getMsg());
+        
Assert.assertEquals(Status.RESOURCE_NOT_EXIST.getMsg(),result.getMsg());
+        //RESOURCE_EXIST
+        
PowerMockito.when(PropertyUtils.getResUploadStartupState()).thenReturn(true);
+        Mockito.when(resourcesMapper.queryResourceList("/directoryTest", 0, 
0)).thenReturn(getResourceList());
+        result = 
resourcesService.createDirectory(user,"directoryTest","directory 
test",ResourceType.FILE,-1,"/");
+        logger.info(result.toString());
+        Assert.assertEquals(Status.RESOURCE_EXIST.getMsg(),result.getMsg());
 
     }
 
@@ -174,12 +187,14 @@ public class ResourcesServiceTest {
         logger.info(result.toString());
         Assert.assertEquals(Status.RESOURCE_EXIST.getMsg(),result.getMsg());
         //USER_NOT_EXIST
+        
Mockito.when(userMapper.queryDetailsById(Mockito.anyInt())).thenReturn(null);
         result = 
resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF);
         logger.info(result.toString());
         Assert.assertTrue(Status.USER_NOT_EXIST.getCode() == result.getCode());
 
         //TENANT_NOT_EXIST
         Mockito.when(userMapper.queryDetailsById(1)).thenReturn(getUser());
+        
Mockito.when(tenantMapper.queryById(Mockito.anyInt())).thenReturn(null);
         result = 
resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF);
         logger.info(result.toString());
         Assert.assertEquals(Status.TENANT_NOT_EXIST.getMsg(),result.getMsg());
@@ -199,7 +214,7 @@ public class ResourcesServiceTest {
 
         //SUCCESS
         PowerMockito.when(HadoopUtils.getHdfsResourceFileName(Mockito.any(), 
Mockito.any())).thenReturn("test");
-        result = 
resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest",ResourceType.UDF);
+        result = 
resourcesService.updateResource(user,1,"ResourcesServiceTest1.jar","ResourcesServiceTest1.jar",ResourceType.UDF);
         logger.info(result.toString());
         Assert.assertEquals(Status.SUCCESS.getMsg(),result.getMsg());
 
@@ -264,6 +279,7 @@ public class ResourcesServiceTest {
             //TENANT_NOT_EXIST
             loginUser.setUserType(UserType.ADMIN_USER);
             loginUser.setTenantId(2);
+            
Mockito.when(userMapper.queryDetailsById(Mockito.anyInt())).thenReturn(loginUser);
             result = resourcesService.delete(loginUser,1);
             logger.info(result.toString());
             Assert.assertEquals(Status.TENANT_NOT_EXIST.getMsg(), 
result.getMsg());
@@ -286,14 +302,20 @@ public class ResourcesServiceTest {
 
         User user = new User();
         user.setId(1);
-        Mockito.when(resourcesMapper.queryResourceList("test", 0, 
0)).thenReturn(getResourceList());
-        Result result = 
resourcesService.verifyResourceName("test",ResourceType.FILE,user);
+        
Mockito.when(resourcesMapper.queryResourceList("/ResourcesServiceTest.jar", 0, 
0)).thenReturn(getResourceList());
+        Result result = 
resourcesService.verifyResourceName("/ResourcesServiceTest.jar",ResourceType.FILE,user);
         logger.info(result.toString());
         Assert.assertEquals(Status.RESOURCE_EXIST.getMsg(), result.getMsg());
 
         //TENANT_NOT_EXIST
         Mockito.when(tenantMapper.queryById(1)).thenReturn(getTenant());
-        result = 
resourcesService.verifyResourceName("test1",ResourceType.FILE,user);
+        String unExistFullName = "/test.jar";
+        try {
+            
Mockito.when(hadoopUtils.exists(unExistFullName)).thenReturn(false);
+        } catch (IOException e) {
+            logger.error("hadoop error",e);
+        }
+        result = 
resourcesService.verifyResourceName("/test.jar",ResourceType.FILE,user);
         logger.info(result.toString());
         Assert.assertEquals(Status.TENANT_NOT_EXIST.getMsg(), result.getMsg());
 
@@ -306,9 +328,9 @@ public class ResourcesServiceTest {
             logger.error("hadoop error",e);
         }
         PowerMockito.when(HadoopUtils.getHdfsResourceFileName("123", 
"test1")).thenReturn("test");
-        result = 
resourcesService.verifyResourceName("test1",ResourceType.FILE,user);
+        result = 
resourcesService.verifyResourceName("/ResourcesServiceTest.jar",ResourceType.FILE,user);
         logger.info(result.toString());
-        
Assert.assertTrue(Status.RESOURCE_FILE_EXIST.getCode()==result.getCode());
+        Assert.assertTrue(Status.RESOURCE_EXIST.getCode()==result.getCode());
 
         //SUCCESS
         result = 
resourcesService.verifyResourceName("test2",ResourceType.FILE,user);
@@ -585,6 +607,7 @@ public class ResourcesServiceTest {
     private Resource getResource(){
 
         Resource resource = new Resource();
+        resource.setPid(-1);
         resource.setUserId(1);
         resource.setDescription("ResourcesServiceTest.jar");
         resource.setAlias("ResourcesServiceTest.jar");
@@ -593,6 +616,17 @@ public class ResourcesServiceTest {
         return resource;
     }
 
+    private Resource getUdfResource(){
+
+        Resource resource = new Resource();
+        resource.setUserId(1);
+        resource.setDescription("udfTest");
+        resource.setAlias("udfTest.jar");
+        resource.setFullName("/udfTest.jar");
+        resource.setType(ResourceType.UDF);
+        return resource;
+    }
+
     private UdfFunc getUdfFunc(){
 
         UdfFunc udfFunc = new UdfFunc();

Reply via email to