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

ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new b168ee6297 IGNITE-20969 Decrease default data region sizes in tests 
(#2879)
b168ee6297 is described below

commit b168ee6297963f999af77abfd67bd21508441182
Author: Ivan Bessonov <[email protected]>
AuthorDate: Mon Nov 27 16:32:38 2023 +0300

    IGNITE-20969 Decrease default data region sizes in tests (#2879)
---
 .../testframework/TestIgnitionManager.java         | 110 ++++++++++++---------
 .../rebalance/ItRebalanceDistributedTest.java      |   3 +
 2 files changed, 66 insertions(+), 47 deletions(-)

diff --git 
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/TestIgnitionManager.java
 
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/TestIgnitionManager.java
index 91dda231aa..8d65644ab7 100644
--- 
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/TestIgnitionManager.java
+++ 
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/TestIgnitionManager.java
@@ -17,13 +17,19 @@
 
 package org.apache.ignite.internal.testframework;
 
+import static java.nio.file.StandardOpenOption.CREATE;
+import static java.nio.file.StandardOpenOption.SYNC;
+import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
+import static org.apache.ignite.internal.util.Constants.MiB;
+
 import com.typesafe.config.ConfigException;
 import com.typesafe.config.parser.ConfigDocument;
 import com.typesafe.config.parser.ConfigDocumentFactory;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.StandardOpenOption;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.Ignite;
@@ -49,6 +55,21 @@ public class TestIgnitionManager {
     /** Default partition idle SafeTime interval in ms used for tests that is 
set on node init. */
     public static final int DEFAULT_PARTITION_IDLE_SYNC_TIME_INTERVAL_MS = 100;
 
+    /** Map with default node configuration values. */
+    private static final Map<String, String> DEFAULT_NODE_CONFIG = Map.of(
+            "network.membership.scaleCube.metadataTimeout", 
Integer.toString(DEFAULT_SCALECUBE_METADATA_TIMEOUT),
+            "aipersist.defaultRegion.size", Integer.toString(256 * MiB),
+            "aimem.defaultRegion.initSize", Integer.toString(256 * MiB),
+            "aimem.defaultRegion.maxSize", Integer.toString(256 * MiB)
+    );
+
+    /** Map with default cluster configuration values. */
+    private static final Map<String, String> DEFAULT_CLUSTER_CONFIG = Map.of(
+            "schemaSync.delayDuration", 
Integer.toString(DEFAULT_DELAY_DURATION_MS),
+            "metaStorage.idleSyncTimeInterval", 
Integer.toString(DEFAULT_METASTORAGE_IDLE_SYNC_TIME_INTERVAL_MS),
+            "replication.idleSafeTimePropagationDuration", 
Integer.toString(DEFAULT_PARTITION_IDLE_SYNC_TIME_INTERVAL_MS)
+    );
+
     /**
      * Starts an Ignite node with an optional bootstrap configuration from an 
input stream with HOCON configs.
      *
@@ -79,22 +100,11 @@ public class TestIgnitionManager {
      * @throws IgniteException If error occurs while reading node 
configuration.
      */
     public static CompletableFuture<Ignite> start(String nodeName, @Nullable 
String configStr, Path workDir) {
-        String enrichedConfig = enrichValidConfigWithTestDefaults(configStr);
-
         try {
             Files.createDirectories(workDir);
             Path configPath = workDir.resolve(DEFAULT_CONFIG_NAME);
-            if (configStr == null) {
-                // Null config might mean that this is a restart, so we should 
not rewrite the existing config file.
-                if (Files.notExists(configPath)) {
-                    Files.createFile(configPath);
-                }
-            } else {
-                assert enrichedConfig != null;
-
-                Files.writeString(configPath, enrichedConfig,
-                        StandardOpenOption.SYNC, StandardOpenOption.CREATE, 
StandardOpenOption.TRUNCATE_EXISTING);
-            }
+
+            addDefaultsToConfigurationFile(configStr, configPath);
 
             return IgnitionManager.start(nodeName, configPath, workDir);
         } catch (IOException e) {
@@ -102,25 +112,24 @@ public class TestIgnitionManager {
         }
     }
 
-    private static @Nullable String 
enrichValidConfigWithTestDefaults(@Nullable String configStr) {
+    /**
+     * Writes default values into the configuration file, according to the 
same rules that are used in {@link #start(String, String, Path)}.
+     */
+    public static void addDefaultsToConfigurationFile(Path configPath) {
         try {
-            return enrichConfigWithTestDefaults(configStr);
-        } catch (ConfigException e) {
-            // Config is invalid, let Ignite itself reject it in a predictable 
way.
-            return configStr;
+            addDefaultsToConfigurationFile(null, configPath);
+        } catch (IOException e) {
+            throw new IgniteException("Couldn't update node configuration 
file", e);
         }
     }
 
-    private static String enrichConfigWithTestDefaults(@Nullable String 
configStr) {
-        ConfigDocument configDocument = parseNullableConfigString(configStr);
-
-        configDocument = applyTestDefault(
-                configDocument,
-                "network.membership.scaleCube.metadataTimeout",
-                Integer.toString(DEFAULT_SCALECUBE_METADATA_TIMEOUT)
-        );
+    private static void addDefaultsToConfigurationFile(@Nullable String 
configStr, Path configPath) throws IOException {
+        if (configStr == null && Files.exists(configPath)) {
+            // Nothing to do.
+            return;
+        }
 
-        return configDocument.render();
+        Files.writeString(configPath, applyTestDefaultsToConfig(configStr, 
DEFAULT_NODE_CONFIG), SYNC, CREATE, TRUNCATE_EXISTING);
     }
 
     /**
@@ -141,29 +150,36 @@ public class TestIgnitionManager {
                 .metaStorageNodeNames(params.metaStorageNodeNames())
                 .cmgNodeNames(params.cmgNodeNames());
 
-        ConfigDocument configDocument = 
parseNullableConfigString(params.clusterConfiguration());
-
-        configDocument = applyTestDefault(
-                configDocument,
-                "schemaSync.delayDuration",
-                Integer.toString(DEFAULT_DELAY_DURATION_MS)
-        );
-        configDocument = applyTestDefault(
-                configDocument,
-                "metaStorage.idleSyncTimeInterval",
-                
Integer.toString(DEFAULT_METASTORAGE_IDLE_SYNC_TIME_INTERVAL_MS)
-        );
-        configDocument = applyTestDefault(
-                configDocument,
-                "replication.idleSafeTimePropagationDuration",
-                Integer.toString(DEFAULT_PARTITION_IDLE_SYNC_TIME_INTERVAL_MS)
-        );
-
-        builder.clusterConfiguration(configDocument.render());
+        
builder.clusterConfiguration(applyTestDefaultsToConfig(params.clusterConfiguration(),
 DEFAULT_CLUSTER_CONFIG));
 
         return builder.build();
     }
 
+    private static String applyTestDefaultsToConfig(@Nullable String 
configStr, Map<String, String> defaults) {
+        if (configStr == null) {
+            configStr = "{}";
+        }
+
+        ConfigDocument configDocument;
+
+        try {
+            configDocument = ConfigDocumentFactory.parseString(configStr);
+        } catch (ConfigException e) {
+            // Preserve original broken content, it might be broken on purpose.
+            return configStr;
+        }
+
+        for (Entry<String, String> entry : defaults.entrySet()) {
+            configDocument = applyTestDefault(
+                    configDocument,
+                    entry.getKey(),
+                    entry.getValue()
+            );
+        }
+
+        return configDocument.render();
+    }
+
     private static ConfigDocument parseNullableConfigString(@Nullable String 
configString) {
         String configToParse = Objects.requireNonNullElse(configString, "{}");
 
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
index d33509d160..052cf89a9b 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
@@ -161,6 +161,7 @@ import 
org.apache.ignite.internal.table.distributed.TableMessageGroup;
 import 
org.apache.ignite.internal.table.distributed.raft.snapshot.outgoing.OutgoingSnapshotsManager;
 import 
org.apache.ignite.internal.table.distributed.schema.SchemaSyncServiceImpl;
 import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
+import org.apache.ignite.internal.testframework.TestIgnitionManager;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.tx.HybridTimestampTracker;
@@ -851,6 +852,8 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
             );
 
             Path configPath = workDir.resolve(testInfo.getDisplayName());
+            TestIgnitionManager.addDefaultsToConfigurationFile(configPath);
+
             nodeCfgMgr = new ConfigurationManager(
                     List.of(NetworkConfiguration.KEY,
                             PersistentPageMemoryStorageEngineConfiguration.KEY,

Reply via email to