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

yongzao pushed a commit to branch try-test-timer
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit b59fe68ce96383fa31af2049b1a3dd9eaa648dcb
Author: Yongzao <[email protected]>
AuthorDate: Sun Aug 17 11:49:32 2025 +0800

    trigger CU
---
 .../iotdb/it/env/cluster/node/AINodeWrapper.java   | 42 ++++++++++++++++++++++
 .../iotdb/ainode/it/AINodeModelManageIT.java       | 37 +++++++++----------
 2 files changed, 58 insertions(+), 21 deletions(-)

diff --git 
a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AINodeWrapper.java
 
b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AINodeWrapper.java
index 64c2bbec2c0..b9eba67c6e1 100644
--- 
a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AINodeWrapper.java
+++ 
b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/node/AINodeWrapper.java
@@ -22,15 +22,22 @@ package org.apache.iotdb.it.env.cluster.node;
 import org.apache.iotdb.it.env.cluster.config.MppJVMConfig;
 import org.apache.iotdb.it.framework.IoTDBTestLogger;
 
+import org.apache.commons.io.file.PathUtils;
 import org.slf4j.Logger;
 
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.LinkOption;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Stream;
 
 import static org.apache.iotdb.it.env.cluster.ClusterConstant.AI_NODE_NAME;
 import static org.apache.iotdb.it.env.cluster.ClusterConstant.TARGET;
@@ -51,6 +58,8 @@ public class AINodeWrapper extends AbstractNodeWrapper {
   private static final String PROPERTIES_FILE = "iotdb-ainode.properties";
   public static final String CONFIG_PATH = "conf";
   public static final String SCRIPT_PATH = "sbin";
+  public static final String BUILT_IN_MODEL_PATH = 
"data/ainode/models/weights";
+  public static final String CACHE_BUILT_IN_MODEL_PATH = 
"/tmp/data/ainode/models/weights";
 
   private void replaceAttribute(String[] keys, String[] values, String 
filePath) {
     try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, 
true))) {
@@ -115,6 +124,39 @@ public class AINodeWrapper extends AbstractNodeWrapper {
           },
           propertiesFile);
 
+      // copy built-in LTSM
+      String builtInModelPath = filePrefix + File.separator + 
BUILT_IN_MODEL_PATH;
+      new File(builtInModelPath).mkdirs();
+      try {
+        if (new File(builtInModelPath).exists()) {
+          PathUtils.deleteDirectory(Paths.get(builtInModelPath));
+        }
+      } catch (NoSuchFileException e) {
+        // ignored
+      }
+      try (Stream<Path> s = Files.walk(Paths.get(CACHE_BUILT_IN_MODEL_PATH))) {
+        s.forEach(
+            source -> {
+              Path destination =
+                  Paths.get(
+                      builtInModelPath,
+                      
source.toString().substring(CACHE_BUILT_IN_MODEL_PATH.length()));
+              logger.info("AINode copying model weights from {} to {}", 
source, destination);
+              try {
+                Files.copy(
+                    source,
+                    destination,
+                    LinkOption.NOFOLLOW_LINKS,
+                    StandardCopyOption.COPY_ATTRIBUTES);
+              } catch (IOException e) {
+                logger.error("AINode got error copying model weights", e);
+                throw new RuntimeException(e);
+              }
+            });
+      } catch (Exception e) {
+        logger.error("AINode got error copying model weights", e);
+      }
+
       // start AINode
       List<String> startCommand = new ArrayList<>();
       startCommand.add(SHELL_COMMAND);
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeModelManageIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeModelManageIT.java
index af6681fc9b8..2a1461e4a15 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeModelManageIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/ainode/it/AINodeModelManageIT.java
@@ -54,7 +54,7 @@ import static org.junit.Assert.fail;
 @Category({AIClusterIT.class})
 public class AINodeModelManageIT {
 
-  private static final Map<String, FakeModelInfo> 
BUILT_IN_MACHINE_LEARNING_MODEL_MAP =
+  private static final Map<String, FakeModelInfo> BUILT_IN_MODEL_MAP =
       Stream.of(
               new AbstractMap.SimpleEntry<>(
                   "arima", new FakeModelInfo("arima", "Arima", "BUILT-IN", 
"ACTIVE")),
@@ -77,13 +77,11 @@ public class AINodeModelManageIT {
               new AbstractMap.SimpleEntry<>(
                   "gmm_hmm", new FakeModelInfo("gmm_hmm", "GmmHmm", 
"BUILT-IN", "ACTIVE")),
               new AbstractMap.SimpleEntry<>(
-                  "stray", new FakeModelInfo("stray", "Stray", "BUILT-IN", 
"ACTIVE")))
-          //              new AbstractMap.SimpleEntry<>(
-          //                  "sundial", new FakeModelInfo("sundial", 
"Timer-Sundial", "BUILT-IN",
-          // "ACTIVE")),
-          //              new AbstractMap.SimpleEntry<>(
-          //                  "timer_xl", new FakeModelInfo("timer_xl", 
"Timer-XL", "BUILT-IN",
-          // "ACTIVE")))
+                  "stray", new FakeModelInfo("stray", "Stray", "BUILT-IN", 
"ACTIVE")),
+              new AbstractMap.SimpleEntry<>(
+                  "sundial", new FakeModelInfo("sundial", "Timer-Sundial", 
"BUILT-IN", "ACTIVE")),
+              new AbstractMap.SimpleEntry<>(
+                  "timer_xl", new FakeModelInfo("timer_xl", "Timer-XL", 
"BUILT-IN", "ACTIVE")))
           .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
 
   @BeforeClass
@@ -203,20 +201,17 @@ public class AINodeModelManageIT {
       ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
       checkHeader(resultSetMetaData, "ModelId,ModelType,Category,State");
       while (resultSet.next()) {
-        String modelId = resultSet.getString(1);
-        if (!modelId.equals("sundial") && !modelId.equals("timer_xl")) {
-          built_in_model_count++;
-          FakeModelInfo modelInfo =
-              new FakeModelInfo(
-                  resultSet.getString(1),
-                  resultSet.getString(2),
-                  resultSet.getString(3),
-                  resultSet.getString(4));
-          
assertTrue(BUILT_IN_MACHINE_LEARNING_MODEL_MAP.containsKey(modelInfo.getModelId()));
-          
assertEquals(BUILT_IN_MACHINE_LEARNING_MODEL_MAP.get(modelInfo.getModelId()), 
modelInfo);
-        }
+        built_in_model_count++;
+        FakeModelInfo modelInfo =
+            new FakeModelInfo(
+                resultSet.getString(1),
+                resultSet.getString(2),
+                resultSet.getString(3),
+                resultSet.getString(4));
+        assertTrue(BUILT_IN_MODEL_MAP.containsKey(modelInfo.getModelId()));
+        assertEquals(BUILT_IN_MODEL_MAP.get(modelInfo.getModelId()), 
modelInfo);
       }
     }
-    assertEquals(BUILT_IN_MACHINE_LEARNING_MODEL_MAP.size(), 
built_in_model_count);
+    assertEquals(BUILT_IN_MODEL_MAP.size(), built_in_model_count);
   }
 }

Reply via email to