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,