You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by pe...@apache.org on 2022/10/10 09:12:58 UTC

[incubator-linkis] branch dev-1.3.1 updated: feat: linkis-storage-script-dev-server unit test (#3486)

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

peacewong pushed a commit to branch dev-1.3.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.3.1 by this push:
     new c3eb128b0 feat: linkis-storage-script-dev-server unit test (#3486)
c3eb128b0 is described below

commit c3eb128b00e0586c5f5e8eca1b6aa9f8aa446653
Author: ruY <43...@users.noreply.github.com>
AuthorDate: Mon Oct 10 17:12:51 2022 +0800

    feat: linkis-storage-script-dev-server unit test (#3486)
    
    * feat: linkis-storage-script-dev-server unit test
    
    * fix:  check license
---
 .../java/org/apache/linkis/filesystem/Scan.java    |  23 +++
 .../linkis/filesystem/WebApplicationServer.java    |  34 +++
 .../conf/WorkSpaceConfigurationTest.java           |  69 +++++++
 .../constant/WorkSpaceConstantsTest.java           |  40 ++++
 .../exception/WorkSpaceExceptionTest.java          |  47 +++++
 .../exception/WorkspaceExceptionManagerTest.java   |  44 ++++
 .../restful/api/BMLFsRestfulApiTest.java           | 124 +++++++++++
 .../filesystem/restful/api/FsRestfulApiTest.java   | 227 +++++++++++++++++++++
 .../linkis/filesystem/util/WorkspaceUtilTest.java  |  74 +++++++
 .../src/test/resources/application.properties      |  63 ++++++
 .../src/test/resources/deleteFile.sql              |  17 ++
 .../src/test/resources/existsSql.sql               |  17 ++
 .../src/test/resources/info.log                    |  19 ++
 .../src/test/resources/linkis.properties           |  22 ++
 .../src/test/resources/query.sql                   |  17 ++
 .../linkis/filesystem/entity/FSInfoTest.scala      |  36 ++++
 16 files changed, 873 insertions(+)

diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/Scan.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/Scan.java
new file mode 100644
index 000000000..bbb4e427e
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/Scan.java
@@ -0,0 +1,23 @@
+/*
+ * 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.linkis.filesystem;
+
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+
+@EnableAutoConfiguration
+public class Scan {}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/WebApplicationServer.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/WebApplicationServer.java
new file mode 100644
index 000000000..17faf096d
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/WebApplicationServer.java
@@ -0,0 +1,34 @@
+/*
+ * 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.linkis.filesystem;
+
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.ComponentScan;
+
+@EnableAutoConfiguration
+@ServletComponentScan
+@ComponentScan
+public class WebApplicationServer extends SpringBootServletInitializer {
+
+  public static void main(String[] args) {
+    new SpringApplicationBuilder(WebApplicationServer.class).run(args);
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/conf/WorkSpaceConfigurationTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/conf/WorkSpaceConfigurationTest.java
new file mode 100644
index 000000000..7eda4af72
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/conf/WorkSpaceConfigurationTest.java
@@ -0,0 +1,69 @@
+/*
+ * 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.linkis.filesystem.conf;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class WorkSpaceConfigurationTest {
+
+  @Test
+  @DisplayName("staticCommonConst")
+  public void staticCommonConst() {
+
+    String localUserRootPath = WorkSpaceConfiguration.LOCAL_USER_ROOT_PATH.getValue();
+    String hdfsUserRootPathPrefix = WorkSpaceConfiguration.HDFS_USER_ROOT_PATH_PREFIX.getValue();
+    String hdfsUserRootPathSuffix = WorkSpaceConfiguration.HDFS_USER_ROOT_PATH_SUFFIX.getValue();
+    Boolean resultSetDownloadIsLimit =
+        WorkSpaceConfiguration.RESULT_SET_DOWNLOAD_IS_LIMIT.getValue();
+    Integer resultSetDownloadMaxSizeCsv =
+        WorkSpaceConfiguration.RESULT_SET_DOWNLOAD_MAX_SIZE_CSV.getValue();
+    Integer resultSetDownloadMaxSizeExecl =
+        WorkSpaceConfiguration.RESULT_SET_DOWNLOAD_MAX_SIZE_EXCEL.getValue();
+    Long fileSystemGetTimeOut = WorkSpaceConfiguration.FILESYSTEM_GET_TIMEOUT.getValue();
+    Integer fileSystemFsThreadNum = WorkSpaceConfiguration.FILESYSTEM_FS_THREAD_NUM.getValue();
+    Integer fileSystemFsThreadCache = WorkSpaceConfiguration.FILESYSTEM_FS_THREAD_CACHE.getValue();
+    Boolean filesystemPathCheckTrigger =
+        WorkSpaceConfiguration.FILESYSTEM_PATH_CHECK_TRIGGER.getValue();
+    String filesystemLogAdmin = WorkSpaceConfiguration.FILESYSTEM_LOG_ADMIN.getValue();
+    Boolean filesystemPathCheckOwner =
+        WorkSpaceConfiguration.FILESYSTEM_PATH_CHECK_OWNER.getValue();
+    Boolean filesystemPathAutoCreate =
+        WorkSpaceConfiguration.FILESYSTEM_PATH_AUTO_CREATE.getValue();
+    Long localFilesystemUserRefreshInterval =
+        WorkSpaceConfiguration.LOCAL_FILESYSTEM_USER_REFRESH_INTERVAL.getValue();
+    Boolean enableUserGroup = WorkSpaceConfiguration.ENABLE_USER_GROUP.getValue();
+
+    Assertions.assertNotNull(localUserRootPath);
+    Assertions.assertNotNull(hdfsUserRootPathPrefix);
+    Assertions.assertNotNull(hdfsUserRootPathSuffix);
+    Assertions.assertTrue(resultSetDownloadIsLimit.booleanValue());
+    Assertions.assertTrue(resultSetDownloadMaxSizeCsv.intValue() == 5000);
+    Assertions.assertTrue(resultSetDownloadMaxSizeExecl == 5000);
+    Assertions.assertTrue(fileSystemGetTimeOut == 10000L);
+    Assertions.assertTrue(fileSystemFsThreadNum == 10);
+    Assertions.assertTrue(fileSystemFsThreadCache == 1000);
+    Assertions.assertFalse(filesystemPathCheckTrigger);
+    Assertions.assertNotNull(filesystemLogAdmin);
+    Assertions.assertFalse(filesystemPathCheckOwner.booleanValue());
+    Assertions.assertFalse(filesystemPathAutoCreate.booleanValue());
+    Assertions.assertTrue(localFilesystemUserRefreshInterval == 1800000L);
+    Assertions.assertTrue(enableUserGroup.booleanValue());
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/constant/WorkSpaceConstantsTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/constant/WorkSpaceConstantsTest.java
new file mode 100644
index 000000000..6fe4f8754
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/constant/WorkSpaceConstantsTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.linkis.filesystem.constant;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class WorkSpaceConstantsTest {
+
+  @Test
+  @DisplayName("staticCommonConst")
+  public void staticCommonConst() {
+
+    String xlsxResponseContentType = WorkSpaceConstants.XLSX_RESPONSE_CONTENT_TYPE;
+    String defaultDateType = WorkSpaceConstants.DEFAULT_DATE_TYPE;
+    String localReturnType = WorkSpaceConstants.LOCAL_RETURN_TYPE;
+    String blank = WorkSpaceConstants.BLANK;
+
+    Assertions.assertNotNull(xlsxResponseContentType);
+    Assertions.assertNotNull(defaultDateType);
+    Assertions.assertNotNull(localReturnType);
+    Assertions.assertNotNull(blank);
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/exception/WorkSpaceExceptionTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/exception/WorkSpaceExceptionTest.java
new file mode 100644
index 000000000..e0967e6c4
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/exception/WorkSpaceExceptionTest.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.linkis.filesystem.exception;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class WorkSpaceExceptionTest {
+
+  @Test
+  @DisplayName("workSpaceExceptionTest")
+  public void workSpaceExceptionTest() {
+
+    int errorCode = 80001;
+    String errorMsg =
+        "Requesting IO-Engine to initialize fileSystem failed!(请求IO-Engine初始化fileSystem失败!)";
+    String ip = "127.0.0.1";
+    int port = 8081;
+    String serviceKind = "ps-service";
+    WorkSpaceException workSpaceException = new WorkSpaceException(errorCode, errorMsg);
+
+    Assertions.assertTrue(errorCode == workSpaceException.getErrCode());
+    Assertions.assertEquals(errorMsg, workSpaceException.getDesc());
+
+    WorkSpaceException spaceException =
+        new WorkSpaceException(errorCode, errorMsg, ip, port, serviceKind);
+    Assertions.assertEquals(ip, spaceException.getIp());
+    Assertions.assertTrue(port == spaceException.getPort());
+    Assertions.assertEquals(serviceKind, spaceException.getServiceKind());
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/exception/WorkspaceExceptionManagerTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/exception/WorkspaceExceptionManagerTest.java
new file mode 100644
index 000000000..3263a6820
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/exception/WorkspaceExceptionManagerTest.java
@@ -0,0 +1,44 @@
+/*
+ * 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.linkis.filesystem.exception;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class WorkspaceExceptionManagerTest {
+
+  private static final Logger LOG = LoggerFactory.getLogger(WorkspaceExceptionManagerTest.class);
+
+  @Test
+  @DisplayName("createExceptionTest")
+  public void createExceptionTest() {
+
+    WorkSpaceException exception = WorkspaceExceptionManager.createException(80021, "");
+    Assertions.assertTrue(80021 == exception.getErrCode());
+    Assertions.assertNotNull(exception.getDesc());
+
+    Exception nullPointerException =
+        Assertions.assertThrows(
+            NullPointerException.class,
+            () -> WorkspaceExceptionManager.createException(8002100, ""));
+    LOG.info("assertThrows pass, the error message: {} ", nullPointerException.getMessage());
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApiTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApiTest.java
new file mode 100644
index 000000000..d2d5f0fad
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/restful/api/BMLFsRestfulApiTest.java
@@ -0,0 +1,124 @@
+/*
+ * 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.linkis.filesystem.restful.api;
+
+import org.apache.linkis.common.utils.JsonUtils;
+import org.apache.linkis.filesystem.Scan;
+import org.apache.linkis.filesystem.WebApplicationServer;
+import org.apache.linkis.filesystem.bml.BMLHelper;
+import org.apache.linkis.server.Message;
+import org.apache.linkis.server.MessageStatus;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mockito;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(classes = {WebApplicationServer.class, Scan.class})
+@AutoConfigureMockMvc
+public class BMLFsRestfulApiTest {
+
+  private static final Logger LOG = LoggerFactory.getLogger(BMLFsRestfulApiTest.class);
+
+  @Autowired private MockMvc mockMvc;
+
+  @InjectMocks private BMLFsRestfulApi bmlFsRestfulApi;
+
+  @MockBean private BMLHelper bmlHelper;
+
+  @Test
+  @DisplayName("openScriptFromBMLTest")
+  public void openScriptFromBMLTest() throws Exception {
+    String querySql = this.getClass().getResource("/").getPath() + "/query.sql";
+    Map<String, Object> query = new HashMap<>();
+    InputStream is = new FileInputStream(new File(querySql));
+    query.put("stream", is);
+    query.put("name", "hadoop");
+    Mockito.when(bmlHelper.query("hadoop", "1", "1")).thenReturn(query);
+
+    MvcResult mvcResult =
+        mockMvc
+            .perform(
+                get("/filesystem/openScriptFromBML")
+                    .param("fileName", querySql)
+                    .param("resourceId", "1")
+                    .param("version", "1"))
+            .andExpect(status().isOk())
+            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+            .andReturn();
+
+    Message res =
+        JsonUtils.jackson().readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+    assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+    LOG.info(mvcResult.getResponse().getContentAsString());
+  }
+
+  @Test
+  @DisplayName("openScriptFromProductBMLTest")
+  public void openScriptFromProductBMLTest() throws Exception {
+
+    String querySql = this.getClass().getResource("/").getPath() + "/query.sql";
+    Map<String, Object> query = new HashMap<>();
+    InputStream is = new FileInputStream(new File(querySql));
+    query.put("stream", is);
+    query.put("name", "hadoop");
+    Mockito.when(bmlHelper.query("hadoop", "1", "1")).thenReturn(query);
+
+    MvcResult mvcResult =
+        mockMvc
+            .perform(
+                get("/filesystem/product/openScriptFromBML")
+                    .param("fileName", querySql)
+                    .param("resourceId", "1")
+                    .param("version", "1"))
+            .andExpect(status().isOk())
+            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+            .andReturn();
+
+    Message res =
+        JsonUtils.jackson().readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+    assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+    LOG.info(mvcResult.getResponse().getContentAsString());
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/restful/api/FsRestfulApiTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/restful/api/FsRestfulApiTest.java
new file mode 100644
index 000000000..c42466b18
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/restful/api/FsRestfulApiTest.java
@@ -0,0 +1,227 @@
+/*
+ * 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.linkis.filesystem.restful.api;
+
+import org.apache.linkis.common.io.FsPath;
+import org.apache.linkis.common.utils.JsonUtils;
+import org.apache.linkis.filesystem.Scan;
+import org.apache.linkis.filesystem.WebApplicationServer;
+import org.apache.linkis.filesystem.service.FsService;
+import org.apache.linkis.server.Message;
+import org.apache.linkis.server.MessageStatus;
+import org.apache.linkis.storage.fs.FileSystem;
+import org.apache.linkis.storage.fs.impl.LocalFileSystem;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFileAttributes;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mockito;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(classes = {WebApplicationServer.class, Scan.class})
+@AutoConfigureMockMvc
+public class FsRestfulApiTest {
+
+  private static final Logger LOG = LoggerFactory.getLogger(FsRestfulApiTest.class);
+
+  @InjectMocks private FsRestfulApi fsRestfulApi;
+
+  @Autowired private MockMvc mockMvc;
+
+  @MockBean(name = "fsService")
+  private FsService fsService;
+
+  @Test
+  @DisplayName("getDirFileTreesTest")
+  public void getDirFileTreesTest() throws Exception {
+
+    if (!FsPath.WINDOWS) {
+      FileSystem fs = new LocalFileSystem();
+      fs.setUser("docker");
+      String group =
+          Files.readAttributes(
+                  Paths.get(this.getClass().getResource("/").getPath()), PosixFileAttributes.class)
+              .group()
+              .getName();
+      fs.setGroup(new FsPath(this.getClass().getResource("/").getPath()), group);
+
+      Mockito.when(fsService.getFileSystem(Mockito.anyString(), Mockito.any(FsPath.class)))
+          .thenReturn(fs);
+      String path = this.getClass().getResource("/").getPath();
+
+      MvcResult mvcResult =
+          mockMvc
+              .perform(get("/filesystem/getDirFileTrees").param("path", path))
+              .andExpect(status().isOk())
+              .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+              .andReturn();
+
+      Message res =
+          JsonUtils.jackson()
+              .readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+      assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+      LOG.info(mvcResult.getResponse().getContentAsString());
+    }
+  }
+
+  @Test
+  @DisplayName("isExistTest")
+  public void isExistTest() throws Exception {
+
+    FileSystem fs = new LocalFileSystem();
+    fs.setUser("docker");
+    Mockito.when(fsService.getFileSystem(Mockito.anyString(), Mockito.any(FsPath.class)))
+        .thenReturn(fs);
+    String path = this.getClass().getResource("/").getPath();
+
+    MvcResult mvcResult =
+        mockMvc
+            .perform(get("/filesystem/isExist").param("path", path))
+            .andExpect(status().isOk())
+            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+            .andReturn();
+
+    Message res =
+        JsonUtils.jackson().readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+    assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+    LOG.info(mvcResult.getResponse().getContentAsString());
+  }
+
+  @Test
+  @DisplayName("fileInfoTest")
+  public void fileInfoTest() throws Exception {
+    if (!FsPath.WINDOWS) {
+      FileSystem fs = new LocalFileSystem();
+      fs.setUser("docker");
+      String group =
+          Files.readAttributes(
+                  Paths.get(this.getClass().getResource("/").getPath()), PosixFileAttributes.class)
+              .group()
+              .getName();
+      fs.setGroup(new FsPath(this.getClass().getResource("/").getPath()), group);
+      Mockito.when(fsService.getFileSystem(Mockito.anyString(), Mockito.any(FsPath.class)))
+          .thenReturn(fs);
+      String path = this.getClass().getResource("/").getPath() + "query.sql";
+
+      MvcResult mvcResult =
+          mockMvc
+              .perform(get("/filesystem/fileInfo").param("path", path))
+              .andExpect(status().isOk())
+              .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+              .andReturn();
+
+      Message res =
+          JsonUtils.jackson()
+              .readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+      assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+      LOG.info(mvcResult.getResponse().getContentAsString());
+    }
+  }
+
+  @Test
+  @DisplayName("openFileTest")
+  public void openFileTest() throws Exception {
+
+    if (!FsPath.WINDOWS) {
+      FileSystem fs = new LocalFileSystem();
+      fs.setUser("docker");
+      String group =
+          Files.readAttributes(
+                  Paths.get(this.getClass().getResource("/").getPath()), PosixFileAttributes.class)
+              .group()
+              .getName();
+      fs.setGroup(new FsPath(this.getClass().getResource("/").getPath()), group);
+
+      Mockito.when(fsService.getFileSystem(Mockito.anyString(), Mockito.any(FsPath.class)))
+          .thenReturn(fs);
+      String path = this.getClass().getResource("/").getPath() + "query.sql";
+
+      MvcResult mvcResult =
+          mockMvc
+              .perform(get("/filesystem/fileInfo").param("path", path))
+              .andExpect(status().isOk())
+              .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+              .andReturn();
+
+      Message res =
+          JsonUtils.jackson()
+              .readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+      assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+      LOG.info(mvcResult.getResponse().getContentAsString());
+    }
+  }
+
+  @Test
+  @DisplayName("openLogTest")
+  public void openLogTest() throws Exception {
+
+    if (!FsPath.WINDOWS) {
+      FileSystem fs = new LocalFileSystem();
+      fs.setUser("docker");
+      String group =
+          Files.readAttributes(
+                  Paths.get(this.getClass().getResource("/").getPath()), PosixFileAttributes.class)
+              .group()
+              .getName();
+      fs.setGroup(new FsPath(this.getClass().getResource("/").getPath()), group);
+
+      Mockito.when(fsService.getFileSystem(Mockito.anyString(), Mockito.any(FsPath.class)))
+          .thenReturn(fs);
+      String path = this.getClass().getResource("/").getPath() + "info.log";
+
+      MvcResult mvcResult =
+          mockMvc
+              .perform(get("/filesystem/openLog").param("path", path))
+              .andExpect(status().isOk())
+              .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+              .andReturn();
+
+      Message res =
+          JsonUtils.jackson()
+              .readValue(mvcResult.getResponse().getContentAsString(), Message.class);
+
+      assertEquals(MessageStatus.SUCCESS(), res.getStatus());
+      LOG.info(mvcResult.getResponse().getContentAsString());
+    }
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/util/WorkspaceUtilTest.java b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/util/WorkspaceUtilTest.java
new file mode 100644
index 000000000..2920c0bef
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/java/org/apache/linkis/filesystem/util/WorkspaceUtilTest.java
@@ -0,0 +1,74 @@
+/*
+ * 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.linkis.filesystem.util;
+
+import org.apache.linkis.filesystem.entity.LogLevel;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class WorkspaceUtilTest {
+
+  @Test
+  @DisplayName("staticCommonConstTest")
+  public void staticCommonConstTest() {
+
+    String infoReg = WorkspaceUtil.infoReg;
+    String allReg = WorkspaceUtil.allReg;
+    String errorReg = WorkspaceUtil.errorReg;
+    String warnReg = WorkspaceUtil.warnReg;
+
+    Assertions.assertNotNull(infoReg);
+    Assertions.assertNotNull(allReg);
+    Assertions.assertNotNull(errorReg);
+    Assertions.assertNotNull(warnReg);
+  }
+
+  @Test
+  @DisplayName("logMatchTest")
+  public void logMatchTest() {
+    String code =
+        "2022-09-18 01:03:35.120 INFO  [SpringContextShutdownHook] com.netflix.util.concurrent.ShutdownEnabledTimer 67 cancel - Shutdown hook removed for: NFLoadBalancer-PingTimer-linkis-cg-linkismanager";
+    LogLevel logLevel = new LogLevel(LogLevel.Type.INFO);
+    List<Integer> logMatch = WorkspaceUtil.logMatch(code, logLevel);
+
+    Assertions.assertTrue(logMatch.size() == 2);
+  }
+
+  @Test
+  @DisplayName("suffixTuningTest")
+  public void suffixTuningTest() {
+    String path = "/home/hadoop/logs/linkis/apps";
+    String tuningPath = WorkspaceUtil.suffixTuning(path);
+
+    Assertions.assertNotNull(tuningPath);
+  }
+
+  @Test
+  @DisplayName("isLogAdminTest")
+  public void isLogAdminTest() {
+    boolean logAdmin = WorkspaceUtil.isLogAdmin("hadoop");
+    boolean admin = WorkspaceUtil.isLogAdmin("hadoops");
+
+    Assertions.assertTrue(logAdmin);
+    Assertions.assertFalse(admin);
+  }
+}
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/application.properties b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/application.properties
new file mode 100644
index 000000000..6cbb4ce88
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/application.properties
@@ -0,0 +1,63 @@
+# 
+# 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.
+#
+
+#wds.linkis.test.mode=true
+wds.linkis.server.version=v1
+
+#test
+wds.linkis.test.mode=true
+wds.linkis.test.user=hadoop
+
+wds.linkis.is.gateway=true
+wds.linkis.server.web.session.timeout=1h
+wds.linkis.gateway.conf.enable.proxy.user=false
+wds.linkis.gateway.conf.url.pass.auth=/dss/
+wds.linkis.gateway.conf.enable.token.auth=true
+wds.linkis.login_encrypt.enable=false
+#logging.level.root=debug
+#logging.file=./test.log
+#debug=true
+
+#ng.datasource.driver-class-name=org.h2.Driver
+#spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
+#spring.datasource.schema=classpath:create.sql
+#spring.datasource.data=classpath:data.sql
+##spring.datasource.username=sa
+#spring.datasource.password=
+#spring.datasource.hikari.connection-test-query=select 1
+##spring.datasource.hikari.minimum-idle=5
+#spring.datasource.hikari.auto-commit=true
+#spring.datasource.hikari.validation-timeout=3000
+#spring.datasource.hikari.pool-name=linkis-test
+#spring.datasource.hikari.maximum-pool-size=50
+#spring.datasource.hikari.connection-timeout=30000
+#spring.datasource.hikari.idle-timeout=600000
+#spring.datasource.hikari.leak-detection-threshold=0
+#spring.datasource.hikari.initialization-fail-timeout=1
+
+#spring.main.web-application-type=servlet
+#server.port=1234
+#spring.h2.console.enabled=true
+
+#disable eureka discovery client
+spring.cloud.service-registry.auto-registration.enabled=false
+eureka.client.enabled=false
+eureka.client.serviceUrl.registerWithEureka=false
+linkis.workspace.filesystem.auto.create=true
+
+#mybatis-plus.mapper-locations=classpath*:org/apache/linkis/udf/dao/impl/*.xml
+#mybatis-plus.type-aliases-package=org.apache.linkis.udf.entity
+#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/deleteFile.sql b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/deleteFile.sql
new file mode 100644
index 000000000..95f334f41
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/deleteFile.sql
@@ -0,0 +1,17 @@
+/*
+ * 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.
+*/
+show databases;
\ No newline at end of file
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/existsSql.sql b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/existsSql.sql
new file mode 100644
index 000000000..95f334f41
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/existsSql.sql
@@ -0,0 +1,17 @@
+/*
+ * 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.
+*/
+show databases;
\ No newline at end of file
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/info.log b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/info.log
new file mode 100644
index 000000000..153f737ca
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/info.log
@@ -0,0 +1,19 @@
+/*
+ * 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.
+*/
+2022-09-18 01:03:35.133 INFO  [SpringContextShutdownHook] com.netflix.discovery.DiscoveryClient 935 shutdown - Shutting down DiscoveryClient ...
+2022-09-18 01:03:38.135 INFO  [SpringContextShutdownHook] com.netflix.discovery.DiscoveryClient 971 unregister - Unregistering ...
+2022-09-18 01:03:38.138 INFO  [SpringContextShutdownHook] com.netflix.discovery.DiscoveryClient 973 unregister - DiscoveryClient_LINKIS-CG-ENGINECONN/bd210:linkis-cg-engineconn:43115 - deregister  status: 200
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/linkis.properties b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/linkis.properties
new file mode 100644
index 000000000..56c5f05cf
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/linkis.properties
@@ -0,0 +1,22 @@
+# 
+# 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.
+#
+
+#wds.linkis.test.mode=true
+wds.linkis.server.version=v1
+wds.linkis.storage.enable.io.proxy=true
+#linkis.workspace.filesystem.auto.create=true
+#test
+wds.linkis.test.mode=true
+wds.linkis.test.user=hadoop
\ No newline at end of file
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/query.sql b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/query.sql
new file mode 100644
index 000000000..95f334f41
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/resources/query.sql
@@ -0,0 +1,17 @@
+/*
+ * 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.
+*/
+show databases;
\ No newline at end of file
diff --git a/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/scala/org/apache/linkis/filesystem/entity/FSInfoTest.scala b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/scala/org/apache/linkis/filesystem/entity/FSInfoTest.scala
new file mode 100644
index 000000000..cb1b6bbcf
--- /dev/null
+++ b/linkis-public-enhancements/linkis-script-dev/linkis-storage-script-dev-server/src/test/scala/org/apache/linkis/filesystem/entity/FSInfoTest.scala
@@ -0,0 +1,36 @@
+/*
+ * 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.linkis.filesystem.entity
+
+import org.apache.linkis.storage.fs.impl.LocalFileSystem
+
+import org.junit.jupiter.api.{Assertions, DisplayName, Test}
+
+class FSInfoTest {
+
+  @Test
+  @DisplayName("timeoutTest")
+  def timeoutTest(): Unit = {
+
+    val info = new FSInfo("1", new LocalFileSystem(), System.currentTimeMillis())
+    val timeout = info.timeout
+    Assertions.assertFalse(timeout)
+
+  }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org