This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch ignite-3.1.0
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/ignite-3.1.0 by this push:
new ec460973aef Revert "IGNITE-26100 Add Metastore Raft log compatibility
test (#6721)"
ec460973aef is described below
commit ec460973aef37f9e9602831e90e8020cf07ad406
Author: zstan <[email protected]>
AuthorDate: Tue Oct 14 13:48:44 2025 +0300
Revert "IGNITE-26100 Add Metastore Raft log compatibility test (#6721)"
This reverts commit 228572c4181f09a63934112ca0609bcae7db4560.
---
modules/compatibility-tests/build.gradle | 4 -
.../internal/MetastorageRaftCompatibilityTest.java | 134 ---------------------
.../internal/PersistentCompatibilityTest.java | 53 +++++++-
.../SendAllMetastorageCommandTypesJob.java | 71 -----------
.../ignite/internal/CompatibilityTestBase.java | 9 --
.../ignite/internal/CompatibilityTestCommon.java | 53 --------
.../org/apache/ignite/internal/IgniteCluster.java | 91 ++------------
.../org/apache/ignite/internal/RunnerNode.java | 11 +-
8 files changed, 67 insertions(+), 359 deletions(-)
diff --git a/modules/compatibility-tests/build.gradle
b/modules/compatibility-tests/build.gradle
index 8978c90ccb0..2928884d00b 100644
--- a/modules/compatibility-tests/build.gradle
+++ b/modules/compatibility-tests/build.gradle
@@ -48,8 +48,6 @@ dependencies {
integrationTestImplementation project(':ignite-storage-api')
integrationTestImplementation project(':ignite-storage-page-memory')
integrationTestImplementation project(':ignite-rest-api')
- integrationTestImplementation project(':ignite-metastorage-api')
- integrationTestImplementation project(':ignite-metastorage')
integrationTestAnnotationProcessor
libs.micronaut.inject.annotation.processor
integrationTestImplementation libs.micronaut.junit5
@@ -66,8 +64,6 @@ dependencies {
}
testFixturesImplementation libs.cytodynamics.nucleus
testFixturesImplementation libs.japicmp
- testFixturesImplementation libs.micronaut.http.client
-
testFixturesImplementation testFixtures(project(':ignite-core'))
testFixturesImplementation testFixtures(project(':ignite-runner'))
diff --git
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/MetastorageRaftCompatibilityTest.java
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/MetastorageRaftCompatibilityTest.java
deleted file mode 100644
index d88e2718dbe..00000000000
---
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/MetastorageRaftCompatibilityTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * 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.ignite.internal;
-
-import static
org.apache.ignite.internal.CompatibilityTestCommon.TABLE_NAME_TEST;
-import static
org.apache.ignite.internal.CompatibilityTestCommon.createDefaultTables;
-import static org.apache.ignite.internal.TestWrappers.unwrapIgniteImpl;
-import static
org.apache.ignite.internal.lang.IgniteSystemProperties.COLOCATION_FEATURE_FLAG;
-import static
org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.client.IgniteClient;
-import org.apache.ignite.compute.JobDescriptor;
-import org.apache.ignite.compute.JobTarget;
-import org.apache.ignite.deployment.DeploymentUnit;
-import org.apache.ignite.internal.configuration.ComponentWorkingDir;
-import org.apache.ignite.internal.metastorage.MetaStorageManager;
-import org.apache.ignite.internal.testframework.WithSystemProperty;
-import org.apache.ignite.internal.util.IgniteUtils;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedClass;
-import org.junit.jupiter.params.provider.MethodSource;
-
-/** Compatibility tests for metastorage raft log. */
-@ParameterizedClass
-@MethodSource("baseVersions")
-@MicronautTest(rebuildContext = true)
-// Old version node starts with disabled colocation. New version nodes that
start from scratch would fail to join cluster.
-@WithSystemProperty(key = COLOCATION_FEATURE_FLAG, value = "false")
-public class MetastorageRaftCompatibilityTest extends CompatibilityTestBase {
- @Override
- protected boolean restartWithCurrentEmbeddedVersion() {
- return false;
- }
-
- @Override
- protected int nodesCount() {
- return 1;
- }
-
- @Override
- protected void setupBaseVersion(Ignite baseIgnite) {
- createDefaultTables(baseIgnite);
-
- Path nodeWorkDir = cluster.runnerNodeWorkDir(0);
-
- try {
- deploySendAllMetastorageCommandTypesJob();
-
- runSendAllMetastorageCommandTypesJob();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
-
- cluster.stop();
-
- // To force metastorage recovery from the raft log.
- deleteMetastorageDbDir(nodeWorkDir);
- }
-
- @AfterEach
- void tearDown() {
- cluster.stop();
- }
-
- @Test
- void testReapplication() {
- cluster.startEmbedded(1, false);
-
- checkMetastorage();
- }
-
- @Test
- void testStreamToFollower() throws InterruptedException {
- cluster.startEmbedded(2, false);
-
- checkMetastorage();
-
- MetaStorageManager newNodeMetastorage =
unwrapIgniteImpl(cluster.node(1)).metaStorageManager();
- MetaStorageManager oldNodeMetastorage =
unwrapIgniteImpl(cluster.node(0)).metaStorageManager();
-
- // Assert that new node got all log entries from old one.
- assertTrue(waitForCondition(() -> oldNodeMetastorage.appliedRevision()
== newNodeMetastorage.appliedRevision(), 10_000));
- }
-
- private void checkMetastorage() {
- // Will fail if metastorage is corrupted.
- sql("SELECT * FROM " + TABLE_NAME_TEST);
- }
-
- private static void deleteMetastorageDbDir(Path nodeWorkDir) {
- Path metastorageDbDir = new
ComponentWorkingDir(nodeWorkDir.resolve("metastorage")).dbPath();
-
- // There is no IgniteUtils.delete() method yet.
- assertTrue(Files.exists(metastorageDbDir));
- assertTrue(IgniteUtils.deleteIfExists(metastorageDbDir));
- }
-
- private <T, R> void deploySendAllMetastorageCommandTypesJob() throws
IOException {
-
CompatibilityTestCommon.deployJob(SendAllMetastorageCommandTypesJob.class,
workDir, deploymentClient);
- }
-
- private void runSendAllMetastorageCommandTypesJob() {
- try (IgniteClient client = cluster.createClient()) {
- JobDescriptor<String, Void> job =
JobDescriptor.builder(SendAllMetastorageCommandTypesJob.class)
- .units(new
DeploymentUnit(SendAllMetastorageCommandTypesJob.class.getName(),
"1.0.0")).build();
-
- JobTarget jobTarget = JobTarget.anyNode(client.cluster().nodes());
-
- client.compute().execute(jobTarget, job, "");
- }
- }
-}
diff --git
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/PersistentCompatibilityTest.java
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/PersistentCompatibilityTest.java
index 1c790cb96c4..c6c138491e5 100644
---
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/PersistentCompatibilityTest.java
+++
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/PersistentCompatibilityTest.java
@@ -20,9 +20,25 @@ package org.apache.ignite.internal;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import io.micronaut.http.HttpRequest;
+import io.micronaut.http.HttpResponse;
+import io.micronaut.http.HttpStatus;
+import io.micronaut.http.MediaType;
+import io.micronaut.http.MutableHttpRequest;
+import io.micronaut.http.client.HttpClient;
+import io.micronaut.http.client.annotation.Client;
+import io.micronaut.http.client.multipart.MultipartBody;
+import io.micronaut.http.client.multipart.MultipartBody.Builder;
import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
+import jakarta.inject.Inject;
+import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
import org.apache.ignite.Ignite;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.compute.JobDescriptor;
@@ -71,6 +87,8 @@ import org.junit.jupiter.params.provider.ValueSource;
// PersistentPageMemoryStorageEngine
@WithSystemProperty(key = IgniteSystemProperties.THREAD_ASSERTIONS_ENABLED,
value = "false")
public class PersistentCompatibilityTest extends CompatibilityTestBase {
+ private static final String NODE_URL = "http://localhost:" +
ClusterConfiguration.DEFAULT_BASE_HTTP_PORT;
+
/** Delta files are not compacted before updating the cluster. */
private static final String TABLE_WITH_DELTA_FILES =
"TEST_WITH_DELTA_FILES";
@@ -89,6 +107,10 @@ public class PersistentCompatibilityTest extends
CompatibilityTestBase {
private static final String ORIGINAL_ROW_VALUE = "original_value";
private static final String UPDATED_ROW_VALUE = "updated_value";
+ @Inject
+ @Client(NODE_URL + "/management/v1/deployment")
+ private HttpClient deploymentClient;
+
@Override
protected int nodesCount() {
return 1;
@@ -185,7 +207,36 @@ public class PersistentCompatibilityTest extends
CompatibilityTestBase {
}
private <T, R> void deployCheckpointJob() throws IOException {
- CompatibilityTestCommon.deployJob(CheckpointJob.class, workDir,
deploymentClient);
+ Path jarFile = createJar(CheckpointJob.class);
+
+ HttpResponse<Object> deploy = deploy(CheckpointJob.class.getName(),
"1.0.0", jarFile.toFile());
+ assertThat(deploy.status(), is(HttpStatus.OK));
+ }
+
+ private Path createJar(Class<?> clazz) throws IOException {
+ String resource = clazz.getName().replace('.', '/') + ".class";
+ Path path =
Path.of(clazz.getClassLoader().getResource(resource).getPath());
+ Path jarFile = Files.createFile(workDir.resolve("CheckpointJob.jar"));
+
+ try (FileOutputStream fos = new FileOutputStream(jarFile.toFile());
JarOutputStream jos = new JarOutputStream(fos)) {
+ JarEntry entry = new JarEntry(resource);
+ jos.putNextEntry(entry);
+ Files.copy(path, jos);
+ jos.closeEntry();
+ }
+
+ return jarFile;
+ }
+
+ private HttpResponse<Object> deploy(String id, String version, File file) {
+ Builder builder = MultipartBody.builder();
+ builder.addPart("unitContent", file);
+ MultipartBody body = builder.build();
+
+ MutableHttpRequest<MultipartBody> post = HttpRequest.POST("units/" +
id + "/" + version, body)
+ .contentType(MediaType.MULTIPART_FORM_DATA);
+
+ return deploymentClient.toBlocking().exchange(post);
}
private static void insertRow(Ignite baseIgnite, String tableName, int id,
String name) {
diff --git
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/SendAllMetastorageCommandTypesJob.java
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/SendAllMetastorageCommandTypesJob.java
deleted file mode 100644
index e2c255990b1..00000000000
---
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/SendAllMetastorageCommandTypesJob.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.ignite.internal;
-
-import static java.util.concurrent.CompletableFuture.allOf;
-import static org.apache.ignite.internal.metastorage.dsl.Conditions.exists;
-import static org.apache.ignite.internal.metastorage.dsl.Operations.noop;
-import static org.apache.ignite.internal.metastorage.dsl.Operations.ops;
-import static org.apache.ignite.internal.metastorage.dsl.Statements.iif;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import org.apache.ignite.compute.ComputeJob;
-import org.apache.ignite.compute.JobExecutionContext;
-import org.apache.ignite.internal.app.IgniteImpl;
-import org.apache.ignite.internal.hlc.HybridTimestamp;
-import org.apache.ignite.internal.lang.ByteArray;
-import org.apache.ignite.internal.metastorage.impl.MetaStorageManagerImpl;
-import org.apache.ignite.internal.wrapper.Wrappers;
-
-/** A job that runs different MetastorageWriteCommands. */
-class SendAllMetastorageCommandTypesJob implements ComputeJob<String, Void> {
- @Override
- public CompletableFuture<Void> executeAsync(JobExecutionContext context,
String arg) {
- IgniteImpl igniteImpl = Wrappers.unwrap(context.ignite(),
IgniteImpl.class);
-
- try {
- byte[] value = "value".getBytes();
-
- MetaStorageManagerImpl metastorage = (MetaStorageManagerImpl)
igniteImpl.metaStorageManager();
-
- return allOf(
- metastorage.put(ByteArray.fromString("put"), value),
- metastorage.putAll(Map.of(ByteArray.fromString("putAll"),
value)),
- metastorage.remove(ByteArray.fromString("remove")),
-
metastorage.removeAll(Set.of(ByteArray.fromString("removeAll"))),
-
metastorage.removeByPrefix(ByteArray.fromString("removeByPrefix")),
- metastorage.invoke(exists(ByteArray.fromString("key")),
noop(), noop()),
-
metastorage.invoke(iif(exists(ByteArray.fromString("key")), ops().yield(),
ops().yield())),
-
metastorage.evictIdempotentCommandsCache(HybridTimestamp.MAX_VALUE),
- sendCompactionCommand(metastorage)
- );
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- private static CompletableFuture<Void>
sendCompactionCommand(MetaStorageManagerImpl metastorage)
- throws Exception {
- Method sendCompactionCommand =
metastorage.getClass().getDeclaredMethod("sendCompactionCommand", long.class);
- sendCompactionCommand.setAccessible(true);
- return (CompletableFuture<Void>)
sendCompactionCommand.invoke(metastorage, metastorage.appliedRevision());
- }
-}
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
index b260d82b092..7c70867fc8b 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
@@ -25,9 +25,6 @@ import static
org.apache.ignite.internal.testframework.flow.TestFlowUtils.subscr
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willBe;
import static org.awaitility.Awaitility.await;
-import io.micronaut.http.client.HttpClient;
-import io.micronaut.http.client.annotation.Client;
-import jakarta.inject.Inject;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collections;
@@ -84,8 +81,6 @@ public abstract class CompatibilityTestBase extends
BaseIgniteAbstractTest {
+ " }\n"
+ "}";
- private static final String NODE_URL = "http://localhost:" +
ClusterConfiguration.DEFAULT_BASE_HTTP_PORT;
-
// If there are no fields annotated with @Parameter, constructor injection
will be used, which is incompatible with the
// Lifecycle.PER_CLASS.
@SuppressWarnings("unused")
@@ -102,10 +97,6 @@ public abstract class CompatibilityTestBase extends
BaseIgniteAbstractTest {
return Collections.emptyList();
}
- @Inject
- @Client(NODE_URL + "/management/v1/deployment")
- protected HttpClient deploymentClient;
-
@SuppressWarnings("unused")
@BeforeParameterizedClassInvocation
void startCluster(String baseVersion, TestInfo testInfo) {
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestCommon.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestCommon.java
index f5c10891cc1..69b8e9b1825 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestCommon.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestCommon.java
@@ -17,27 +17,9 @@
package org.apache.ignite.internal;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-
-import io.micronaut.http.HttpRequest;
-import io.micronaut.http.HttpResponse;
-import io.micronaut.http.HttpStatus;
-import io.micronaut.http.MediaType;
-import io.micronaut.http.MutableHttpRequest;
-import io.micronaut.http.client.HttpClient;
-import io.micronaut.http.client.multipart.MultipartBody;
-import io.micronaut.http.client.multipart.MultipartBody.Builder;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarOutputStream;
import org.apache.ignite.Ignite;
import org.apache.ignite.sql.SqlRow;
import org.jetbrains.annotations.Nullable;
@@ -103,39 +85,4 @@ public class CompatibilityTestCommon {
return cursor.wasApplied();
}
}
-
- /** Deploys class to the cluster using the given deployment client. */
- public static void deployJob(Class<?> clazz, Path workDir, HttpClient
deploymentClient) throws IOException {
- Path jarFile = createJar(clazz, workDir);
-
- HttpResponse<Object> deploy = deploy(clazz.getName(), "1.0.0",
jarFile.toFile(), deploymentClient);
- assertThat(deploy.status(), is(HttpStatus.OK));
-
- }
-
- private static Path createJar(Class<?> clazz, Path workDir) throws
IOException {
- String resource = clazz.getName().replace('.', '/') + ".class";
- Path path =
Path.of(clazz.getClassLoader().getResource(resource).getPath());
- Path jarFile = Files.createFile(workDir.resolve(clazz.getName() +
".jar"));
-
- try (FileOutputStream fos = new FileOutputStream(jarFile.toFile());
JarOutputStream jos = new JarOutputStream(fos)) {
- JarEntry entry = new JarEntry(resource);
- jos.putNextEntry(entry);
- Files.copy(path, jos);
- jos.closeEntry();
- }
-
- return jarFile;
- }
-
- private static HttpResponse<Object> deploy(String id, String version, File
file, HttpClient deploymentClient) {
- Builder builder = MultipartBody.builder();
- builder.addPart("unitContent", file);
- MultipartBody body = builder.build();
-
- MutableHttpRequest<MultipartBody> post = HttpRequest.POST("units/" +
id + "/" + version, body)
- .contentType(MediaType.MULTIPART_FORM_DATA);
-
- return deploymentClient.toBlocking().exchange(post);
- }
}
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteCluster.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteCluster.java
index 594ea267cf9..0f46446a02e 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteCluster.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteCluster.java
@@ -18,13 +18,9 @@
package org.apache.ignite.internal;
import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasJsonPath;
-import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
-import static org.apache.ignite.internal.ClusterConfiguration.configOverrides;
-import static
org.apache.ignite.internal.ClusterConfiguration.containsOverrides;
import static org.apache.ignite.internal.Dependencies.constructArgFile;
import static org.apache.ignite.internal.Dependencies.getProjectRoot;
-import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
import static
org.apache.ignite.internal.testframework.matchers.HttpResponseMatcher.hasStatusCode;
import static org.apache.ignite.internal.util.CollectionUtils.setListAtIndex;
@@ -44,7 +40,6 @@ import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpRequest.Builder;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
-import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -56,7 +51,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
-import java.util.stream.IntStream;
+import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteServer;
import org.apache.ignite.InitParameters;
@@ -70,8 +65,6 @@ import
org.apache.ignite.internal.testframework.TestIgnitionManager;
import org.gradle.tooling.GradleConnector;
import org.gradle.tooling.ProjectConnection;
import org.gradle.tooling.model.build.BuildEnvironment;
-import org.jetbrains.annotations.Nullable;
-import org.junit.jupiter.api.TestInfo;
/**
* Cluster of nodes. Can be started with nodes of previous Ignite versions
running in the external processes or in the embedded mode
@@ -121,15 +114,6 @@ public class IgniteCluster {
* @param nodesCount Number of nodes in the cluster.
*/
public void startEmbedded(int nodesCount, boolean initCluster) {
- startEmbedded(null, nodesCount, initCluster);
- }
-
- /**
- * Starts cluster in embedded mode with nodes of current version.
- *
- * @param nodesCount Number of nodes in the cluster.
- */
- public void startEmbedded(@Nullable TestInfo testInfo, int nodesCount,
boolean initCluster) {
if (started) {
throw new IllegalStateException("The cluster is already started");
}
@@ -139,7 +123,7 @@ public class IgniteCluster {
List<ServerRegistration> nodeRegistrations = new ArrayList<>();
for (int nodeIndex = 0; nodeIndex < nodesCount; nodeIndex++) {
- nodeRegistrations.add(startEmbeddedNode(testInfo, nodeIndex,
nodesCount));
+ nodeRegistrations.add(startEmbeddedNode(nodeIndex));
}
if (initCluster) {
@@ -285,27 +269,14 @@ public class IgniteCluster {
return
clusterConfiguration.nodeNamingStrategy().nodeName(clusterConfiguration,
nodeIndex);
}
- private ServerRegistration startEmbeddedNode(
- @Nullable TestInfo testInfo,
- int nodeIndex,
- int nodesCount
- ) {
+ private ServerRegistration startEmbeddedNode(int nodeIndex) {
String nodeName = nodeName(nodeIndex);
- String config = formatConfig(clusterConfiguration, nodeName,
nodeIndex, nodesCount);
- if (testInfo != null && containsOverrides(testInfo, nodeIndex)) {
- config = TestIgnitionManager.applyOverridesToConfig(config,
configOverrides(testInfo, nodeIndex));
- }
-
- IgniteServer node =
clusterConfiguration.usePreConfiguredStorageProfiles()
- ? TestIgnitionManager.start(
+ IgniteServer node = TestIgnitionManager.start(
nodeName,
- config,
-
clusterConfiguration.workDir().resolve(clusterConfiguration.clusterName()).resolve(nodeName))
- : TestIgnitionManager.startWithoutPreConfiguredStorageProfiles(
- nodeName,
- config,
-
clusterConfiguration.workDir().resolve(clusterConfiguration.clusterName()).resolve(nodeName));
+ null,
+
clusterConfiguration.workDir().resolve(clusterConfiguration.clusterName()).resolve(nodeName)
+ );
synchronized (igniteServers) {
setListAtIndex(igniteServers, nodeIndex, node);
@@ -340,16 +311,13 @@ public class IgniteCluster {
String dependenciesListNotation = dependencyIds.stream()
.map(dependency -> dependency + ":" + igniteVersion)
- .collect(joining(","));
+ .collect(Collectors.joining(","));
File argFile = constructArgFile(connection,
dependenciesListNotation, false);
List<RunnerNode> result = new ArrayList<>();
for (int nodeIndex = 0; nodeIndex < nodesCount; nodeIndex++) {
- String nodeName =
clusterConfiguration.nodeNamingStrategy().nodeName(clusterConfiguration,
nodeIndex);
- String nodeConfig = formatConfig(clusterConfiguration,
nodeName, nodeIndex, nodesCount);
-
- result.add(RunnerNode.startNode(javaHome, argFile,
igniteVersion, clusterConfiguration, nodeConfig, nodesCount, nodeName));
+ result.add(RunnerNode.startNode(javaHome, argFile,
igniteVersion, clusterConfiguration, nodesCount, nodeIndex));
}
return result;
@@ -385,45 +353,4 @@ public class IgniteCluster {
public String clusterName() {
return clusterConfiguration.clusterName();
}
-
- /** Returns list of runner nodes. */
- public List<RunnerNode> getRunnerNodes() {
- return runnerNodes;
- }
-
- /** Returns embedded node's work directory. */
- public Path embeddedNodeWorkDir(int nodeIndex) {
- return workDir(nodeIndex, true);
- }
-
- /** Returns runner node's work directory. */
- public Path runnerNodeWorkDir(int nodeIndex) {
- return workDir(nodeIndex, false);
- }
-
- private Path workDir(int nodeIndex, boolean embedded) {
- String nodeName = embedded ? igniteServers.get(nodeIndex).name() :
runnerNodes.get(nodeIndex).nodeName();
-
- return
clusterConfiguration.workDir().resolve(clusterConfiguration.clusterName()).resolve(nodeName);
- }
-
- private static String seedAddressesString(ClusterConfiguration
clusterConfiguration, int seedsCount) {
- return IntStream.range(0, seedsCount)
- .map(nodeIndex -> clusterConfiguration.basePort() + nodeIndex)
- .mapToObj(port -> "\"localhost:" + port + '\"')
- .collect(joining(", "));
- }
-
- private static String formatConfig(ClusterConfiguration
clusterConfiguration, String nodeName, int nodeIndex, int nodesCount) {
- return format(
- clusterConfiguration.defaultNodeBootstrapConfigTemplate(),
- clusterConfiguration.basePort() + nodeIndex,
- seedAddressesString(clusterConfiguration, nodesCount),
- clusterConfiguration.baseClientPort() + nodeIndex,
- clusterConfiguration.baseHttpPort() + nodeIndex,
- clusterConfiguration.baseHttpsPort() + nodeIndex,
- nodeName,
- nodeIndex
- );
- }
}
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java
index e8935c05d2b..6efa40e8541 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java
@@ -67,7 +67,7 @@ public class RunnerNode {
* @param igniteVersion Version of the Ignite. Used to get the
configuration defaults.
* @param clusterConfiguration Test cluster configuration.
* @param nodesCount Overall number of nodes.
- * @param nodeName Node name.
+ * @param nodeIndex Current node index.
* @return Instance of the control object.
* @throws IOException If an I/O exception occurs.
*/
@@ -76,11 +76,12 @@ public class RunnerNode {
File argFile,
String igniteVersion,
ClusterConfiguration clusterConfiguration,
- String nodeConfig,
int nodesCount,
- String nodeName
+ int nodeIndex
) throws IOException {
+ String nodeName =
clusterConfiguration.nodeNamingStrategy().nodeName(clusterConfiguration,
nodeIndex);
Path workDir =
clusterConfiguration.workDir().resolve(clusterConfiguration.clusterName()).resolve(nodeName);
+ String configStr = formatConfig(clusterConfiguration, nodeName,
nodeIndex, nodesCount);
Files.createDirectories(workDir);
Path configPath = workDir.resolve(DEFAULT_CONFIG_NAME);
@@ -90,13 +91,13 @@ public class RunnerNode {
Map<String, String> defaultsPerVersion =
DEFAULTS_PER_VERSION.get(igniteVersion);
Map<String, String> storageProfilesPerVersion =
STORAGE_PROFILES_PER_VERSION.get(igniteVersion);
writeConfigurationFileApplyingTestDefaults(
- nodeConfig,
+ configStr,
configPath,
defaultsPerVersion != null ? defaultsPerVersion : DEFAULTS,
storageProfilesPerVersion != null ?
storageProfilesPerVersion : STORAGE_PROFILES
);
} else {
- writeConfigurationFile(nodeConfig, configPath);
+ writeConfigurationFile(configStr, configPath);
}
Process process = executeRunner(javaHome, argFile, configPath,
workDir, nodeName);