Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[9.4] ISPN-9748 Default transport for the test suite should be same #6827

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -29,7 +29,6 @@
import org.infinispan.test.MultipleCacheManagersTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.CleanupAfterMethod;
import org.infinispan.test.fwk.TestResourceTracker;
import org.infinispan.transaction.TransactionMode;
import org.infinispan.util.ControlledConsistentHashFactory;
import org.testng.annotations.Test;
Expand Down Expand Up @@ -107,9 +106,10 @@ private void testBeforeTopology(BiFunction<FunctionalMap.ReadWriteMap<String, In
Transaction tx = tm(2).suspend();

chf.setOwnerIndexes(0, 2);

addClusterEnabledCacheManager(cb);
Future<?> future = fork(() -> {
TestResourceTracker.testThreadStarted(this);
addClusterEnabledCacheManager(cb).getCache();
cache(3);
});

bsc2.await();
Expand Down Expand Up @@ -139,9 +139,9 @@ private void testAfterTopology(BiFunction<FunctionalMap.ReadWriteMap<String, Int
BlockingStateConsumer bsc2 = TestingUtil.wrapComponent(cache(2), StateConsumer.class, BlockingStateConsumer::new);

chf.setOwnerIndexes(0, 2);
addClusterEnabledCacheManager(cb);
Future<?> future = fork(() -> {
TestResourceTracker.testThreadStarted(this);
addClusterEnabledCacheManager(cb).getCache();
cache(3);
});

bsc2.await();
Expand Down
107 changes: 46 additions & 61 deletions core/src/test/java/org/infinispan/test/fwk/JGroupsConfigBuilder.java
Expand Up @@ -74,21 +74,14 @@ protected Integer initialValue() {
};

static {
JGROUPS_STACK = LegacyKeySupportSystemProperties.getProperty("infinispan.test.jgroups.protocol", "protocol.stack", "tcp");
JGROUPS_STACK = LegacyKeySupportSystemProperties.getProperty("infinispan.test.jgroups.protocol", "protocol.stack", "udp");
System.out.println("Transport protocol stack used = " + JGROUPS_STACK);
}

public static String getJGroupsConfig(String fullTestName, TransportFlags flags) {
if (JGROUPS_STACK.equalsIgnoreCase("tcp")) return getTcpConfig(fullTestName, flags);
if (JGROUPS_STACK.equalsIgnoreCase("udp")) return getUdpConfig(fullTestName, flags);
throw new IllegalStateException("Unknown protocol stack : " + JGROUPS_STACK);
}

public static String getTcpConfig(String fullTestName, TransportFlags flags) {
// With the XML already parsed, make a safe copy of the
// protocol stack configurator and use that accordingly.
JGroupsProtocolCfg jgroupsCfg =
getJGroupsProtocolCfg(tcpConfigurator.getProtocolStack());
JGroupsProtocolCfg jgroupsCfg = getJGroupsProtocolCfg(getConfigurator().getProtocolStack());

if (!flags.withFD())
removeFailureDetection(jgroupsCfg);
Expand All @@ -105,40 +98,24 @@ public static String getTcpConfig(String fullTestName, TransportFlags flags) {
if (!flags.withMerge())
removeMerge(jgroupsCfg);

if (jgroupsCfg.containsProtocol(TEST_PING)) {
replaceTcpStartPort(jgroupsCfg, flags);
if (fullTestName == null)
return jgroupsCfg.toString(); // IDE run of test
else
return getTestPingDiscovery(fullTestName, jgroupsCfg); // Cmd line test run
} else {
return replaceMCastAddressAndPort(jgroupsCfg);
}
}

private static void removeMerge(JGroupsProtocolCfg jgroupsCfg) {
jgroupsCfg.removeProtocol(MERGE3);
configureTestPing(fullTestName, jgroupsCfg);
replaceTcpStartPort(jgroupsCfg, flags);
replaceMCastAddressAndPort(jgroupsCfg);
return jgroupsCfg.toString();
}

public static String getUdpConfig(String fullTestName, TransportFlags flags) {
JGroupsProtocolCfg jgroupsCfg = getJGroupsProtocolCfg(udpConfigurator.getProtocolStack());

if (!flags.withFD())
removeFailureDetection(jgroupsCfg);

if (!flags.withMerge())
removeMerge(jgroupsCfg);

if (!flags.isRelayRequired()) {
removeRelay2(jgroupsCfg);
public static ProtocolStackConfigurator getConfigurator() {
if (JGROUPS_STACK.equalsIgnoreCase("tcp")) {
return tcpConfigurator;
}

if (jgroupsCfg.containsProtocol(TEST_PING)) {
if (fullTestName != null)
return getTestPingDiscovery(fullTestName, jgroupsCfg); // Cmd line test run
if (JGROUPS_STACK.equalsIgnoreCase("udp")) {
return udpConfigurator;
}
throw new IllegalStateException("Unknown protocol stack : " + JGROUPS_STACK);
}

return replaceMCastAddressAndPort(jgroupsCfg);
private static void removeMerge(JGroupsProtocolCfg jgroupsCfg) {
jgroupsCfg.removeProtocol(MERGE3);
}

/**
Expand All @@ -154,25 +131,31 @@ private static void removeRelay2(JGroupsProtocolCfg jgroupsCfg) {
jgroupsCfg.removeProtocol(TEST_RELAY2);
}

private static String getTestPingDiscovery(String fullTestName, JGroupsProtocolCfg jgroupsCfg) {
ProtocolType type = TEST_PING;
Map<String, String> props = jgroupsCfg.getProtocol(type).getProperties();
private static void configureTestPing(String fullTestName, JGroupsProtocolCfg jgroupsCfg) {
ProtocolConfiguration testPing = jgroupsCfg.getProtocol(TEST_PING);
if (testPing == null || fullTestName == null)
return;

Map<String, String> props = testPing.getProperties();
props.put("testName", fullTestName);
return replaceProperties(jgroupsCfg, props, type);
replaceProperties(jgroupsCfg, props, TEST_PING);
}

private static String replaceMCastAddressAndPort(JGroupsProtocolCfg jgroupsCfg) {
private static void replaceMCastAddressAndPort(JGroupsProtocolCfg jgroupsCfg) {
ProtocolConfiguration udp = jgroupsCfg.getProtocol(UDP);
if (udp == null) return jgroupsCfg.toString();
if (udp == null) return;

Map<String, String> props = udp.getProperties();
props.put("mcast_addr", threadMcastIP.get());
props.put("mcast_port", threadMcastPort.get().toString());
return replaceProperties(jgroupsCfg, props, UDP);
replaceProperties(jgroupsCfg, props, UDP);
}

private static String replaceTcpStartPort(JGroupsProtocolCfg jgroupsCfg, TransportFlags transportFlags) {
ProtocolType transportProtocol = jgroupsCfg.containsProtocol(TCP_NIO2) ? TCP_NIO2 : TCP;
private static void replaceTcpStartPort(JGroupsProtocolCfg jgroupsCfg, TransportFlags transportFlags) {
ProtocolType transportProtocol = jgroupsCfg.transportType;
if (transportProtocol != TCP && transportProtocol != TCP_NIO2)
return;

Map<String, String> props = jgroupsCfg.getProtocol(transportProtocol).getProperties();
Integer startPort = threadTcpStartPort.get();
int portRange = TCP_PORT_RANGE_PER_THREAD;
Expand All @@ -187,16 +170,15 @@ private static String replaceTcpStartPort(JGroupsProtocolCfg jgroupsCfg, Transpo
props.put("bind_port", startPort.toString());
// In JGroups, the port_range is inclusive
props.put("port_range", String.valueOf(portRange - 1));
return replaceProperties(jgroupsCfg, props, transportProtocol);
replaceProperties(jgroupsCfg, props, transportProtocol);
}

private static String replaceProperties(
private static void replaceProperties(
JGroupsProtocolCfg cfg, Map<String, String> newProps, ProtocolType type) {
ProtocolConfiguration protocol = cfg.getProtocol(type);
ProtocolConfiguration newProtocol =
new ProtocolConfiguration(protocol.getProtocolName(), newProps);
cfg.replaceProtocol(type, newProtocol);
return cfg.toString();
}

private static ProtocolStackConfigurator loadTcp() {
Expand All @@ -218,17 +200,18 @@ private static ProtocolStackConfigurator loadUdp() {
private static JGroupsProtocolCfg getJGroupsProtocolCfg(List<ProtocolConfiguration> baseStack) {
JGroupsXmxlConfigurator configurator = new JGroupsXmxlConfigurator(baseStack);
List<ProtocolConfiguration> protoStack = configurator.getProtocolStack();
Map<ProtocolType, ProtocolConfiguration> protoMap = new HashMap<ProtocolType, ProtocolConfiguration>(protoStack.size());
for (ProtocolConfiguration cfg : protoStack)
ProtocolType transportType = getProtocolType(protoStack.get(0).getProtocolName());
Map<ProtocolType, ProtocolConfiguration> protoMap = new HashMap<>(protoStack.size());
for (ProtocolConfiguration cfg : protoStack) {
protoMap.put(getProtocolType(cfg.getProtocolName()), cfg);
}

return new JGroupsProtocolCfg(protoMap, configurator);
return new JGroupsProtocolCfg(protoMap, configurator, transportType);
}

private static ProtocolType getProtocolType(String name) {
int dotIndex = name.lastIndexOf(".");
return ProtocolType.valueOf(
dotIndex == -1 ? name : name.substring(dotIndex + 1, name.length()));
return ProtocolType.valueOf(dotIndex == -1 ? name : name.substring(dotIndex + 1));
}

static class JGroupsXmxlConfigurator extends XmlConfigurator {
Expand All @@ -238,11 +221,10 @@ protected JGroupsXmxlConfigurator(List<ProtocolConfiguration> protocols) {

static List<ProtocolConfiguration> copy(List<ProtocolConfiguration> protocols) {
// Make a safe copy of the protocol stack to avoid concurrent modification issues
List<ProtocolConfiguration> copy =
new ArrayList<ProtocolConfiguration>(protocols.size());
for (ProtocolConfiguration p : protocols)
copy.add(new ProtocolConfiguration(
p.getProtocolName(), immutableMapCopy(p.getProperties())));
List<ProtocolConfiguration> copy = new ArrayList<>(protocols.size());
for (ProtocolConfiguration p : protocols) {
copy.add(new ProtocolConfiguration(p.getProtocolName(), immutableMapCopy(p.getProperties())));
}

return copy;
}
Expand All @@ -251,11 +233,14 @@ static List<ProtocolConfiguration> copy(List<ProtocolConfiguration> protocols) {
static class JGroupsProtocolCfg {
final Map<ProtocolType, ProtocolConfiguration> protoMap;
final XmlConfigurator configurator;
final ProtocolType transportType;

JGroupsProtocolCfg(Map<ProtocolType, ProtocolConfiguration> protoMap,
XmlConfigurator configurator) {
XmlConfigurator configurator,
ProtocolType transportType) {
this.protoMap = protoMap;
this.configurator = configurator;
this.transportType = transportType;
}

JGroupsProtocolCfg addProtocol(ProtocolType type, ProtocolConfiguration cfg, int position) {
Expand Down
1 change: 0 additions & 1 deletion integrationtests/osgi/pom.xml
Expand Up @@ -18,7 +18,6 @@
<defaultTestGroup />
<defaultExcludedTestGroup />
<infinispan.test.parallel.threads>1</infinispan.test.parallel.threads>
<infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
<forkJvmArgs>-Xmx500m -XX:HeapDumpPath=${user.dir}</forkJvmArgs>
<target.tmp.dir>${project.build.directory}/tmp/</target.tmp.dir>
<skipOSGiTests>${skipTests}</skipOSGiTests>
Expand Down
3 changes: 1 addition & 2 deletions integrationtests/wildfly-modules/pom.xml
Expand Up @@ -20,8 +20,7 @@
<resources.dir>${basedir}/src/test/resources</resources.dir>
<serverMemoryJvmArgs>-Xmx300m ${testjvm.commonArgs}</serverMemoryJvmArgs>
<jvm.x64.args />
<default.transport.stack>udp</default.transport.stack>
<transport.stack>-Djboss.default.jgroups.stack=${default.transport.stack}</transport.stack>
<transport.stack>-Djboss.default.jgroups.stack=${infinispan.test.jgroups.protocol}</transport.stack>
<jvm.ip.stack>-Djava.net.preferIPv4Stack=true</jvm.ip.stack>
<mcast.ip>234.99.54.14</mcast.ip>
<jvm.ip.stack>-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false -Djboss.default.multicast.address=${mcast.ip}</jvm.ip.stack>
Expand Down
3 changes: 2 additions & 1 deletion pom.xml
Expand Up @@ -185,7 +185,8 @@
<server.jvm.args>${testjvm.commonArgs} ${testjvm.jigsawArgs}</server.jvm.args>
<infinispan.module-suffix>-${project.artifactId}</infinispan.module-suffix>
<ansi.strip/>
<infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
<default.transport.stack>udp</default.transport.stack>
<infinispan.test.jgroups.protocol>${default.transport.stack}</infinispan.test.jgroups.protocol>
<infinispan.test.parallel.threads>8</infinispan.test.parallel.threads>
<skipArtifactUpload>false</skipArtifactUpload>
<upload.username>infinispan</upload.username>
Expand Down
4 changes: 2 additions & 2 deletions server/integration/testsuite/README.txt
Expand Up @@ -64,8 +64,8 @@ This is controlled by following profile

Running client tests with TCP stack (UDP by default)
----------------------------------------------------
Controlled by property default.transport.stack:
mvn clean verify -Psuite.client -Ddefault.transport.stack=tcp
Controlled by property infinispan.test.jgroups.protocol:
mvn clean verify -Psuite.client -Dinfinispan.test.jgroups.protocol=tcp

Client side logging
-------------------
Expand Down
19 changes: 9 additions & 10 deletions server/integration/testsuite/pom.xml
Expand Up @@ -310,8 +310,7 @@

<serverMemoryJvmArgs>-Xmx300m ${testjvm.commonArgs}</serverMemoryJvmArgs>
<jvm.x64.args />
<default.transport.stack>udp</default.transport.stack>
<transport.stack>-Djboss.default.jgroups.stack=${default.transport.stack}</transport.stack>
<transport.stack>-Djboss.default.jgroups.stack=${infinispan.test.jgroups.protocol}</transport.stack>

<jvm.ip.stack>-Djava.net.preferIPv4Stack=true</jvm.ip.stack>
<node0.ip>127.0.0.1</node0.ip>
Expand Down Expand Up @@ -922,7 +921,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>localmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>localmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>${groups.client.local}</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -939,7 +938,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>localmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>localmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>org.infinispan.server.test.category.MemcachedSingleNode</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -956,7 +955,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>localmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>localmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>${groups.client.local.domain}</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -973,7 +972,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>distmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>distmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>${groups.client.clustered}</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -990,7 +989,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>distmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>distmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>org.infinispan.server.test.category.MemcachedClustered</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -1007,7 +1006,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>distmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>distmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>${groups.client.clustered.domain}</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -1024,7 +1023,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>replmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>replmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>${groups.client.clustered}</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand All @@ -1041,7 +1040,7 @@
<goal>integration-test</goal>
</goals>
<configuration>
<reportNameSuffix>replmode-${default.transport.stack}</reportNameSuffix>
<reportNameSuffix>replmode-${infinispan.test.jgroups.protocol}</reportNameSuffix>
<groups>${groups.client.clustered.domain}</groups>
<excludedGroups>${groups.unstable}</excludedGroups>
<systemPropertyVariables>
Expand Down