Skip to content

Commit

Permalink
JBQA-8324 server tests for cache-container element
Browse files Browse the repository at this point in the history
  • Loading branch information
jmarkos authored and mgencur committed Jan 9, 2014
1 parent a28caf6 commit 326ad6f
Show file tree
Hide file tree
Showing 8 changed files with 202 additions and 0 deletions.
9 changes: 9 additions & 0 deletions server/integration/testsuite/build-testsuite.xml
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,11 @@
filtering="true"/>
<transform in="clustered.xml" out="testsuite/clustered-expiration.xml"
modifyInfinispan="${infinispan.parts}/expiration.xml"/>
<transform in="standalone.xml" out="testsuite/standalone-cachecontainer.xml"
modifyInfinispan="${infinispan.parts}/cachecontainer.xml"
modifyThreads="${other.parts}/cachecontainer-thread-pools.xml"
infinispanServerEndpoint="${other.parts}/cachecontainer-endpoints.xml"
addHotrodSocketBinding="${other.parts}/cachecontainer-hotrod-binding.xml"/>
</target>

<macrodef name="transform">
Expand All @@ -234,11 +239,13 @@
<attribute name="in"/>
<attribute name="out"/>
<attribute name="modifyInfinispan" default="false"/>
<attribute name="modifyThreads" default="false"/>
<attribute name="modifyStack" default="false"/>
<attribute name="modifyRelay" default="false"/>
<attribute name="modifyMulticastAddress" default="false"/>
<attribute name="modifyRemoteDestination" default="false"/>
<attribute name="modifyOutboundSocketBindingHotRod" default="false"/>
<attribute name="addHotrodSocketBinding" default="false"/>
<attribute name="removeRestSecurity" default="true"/>
<attribute name="infinispanServerEndpoint" default="false"/>
<attribute name="infinispanFile" default="false"/>
Expand All @@ -250,13 +257,15 @@
<sequential>
<xslt in="@{transformDir}/@{in}" out="@{transformDir}/@{in}-transformed" style="@{templateFile}">
<param name="modifyInfinispan" expression="@{modifyInfinispan}"/>
<param name="modifyThreads" expression="@{modifyThreads}"/>
<param name="modifyStack" expression="@{modifyStack}"/>
<param name="modifyRelay" expression="@{modifyRelay}"/>
<param name="addAuth" expression="@{addAuth}"/>
<param name="addEncrypt" expression="@{addEncrypt}"/>
<param name="modifyMulticastAddress" expression="@{modifyMulticastAddress}"/>
<param name="modifyRemoteDestination" expression="@{modifyRemoteDestination}"/>
<param name="modifyOutboundSocketBindingHotRod" expression="@{modifyOutboundSocketBindingHotRod}"/>
<param name="addHotrodSocketBinding" expression="@{addHotrodSocketBinding}"/>
<param name="removeRestSecurity" expression="@{removeRestSecurity}"/>
<param name="infinispanServerEndpoint" expression="@{infinispanServerEndpoint}"/>
<param name="infinispanFile" expression="@{infinispanFile}"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package org.infinispan.server.test.cachecontainer;

import java.util.Scanner;

import javax.management.ObjectName;

import org.infinispan.arquillian.core.InfinispanResource;
import org.infinispan.arquillian.core.RemoteInfinispanServer;
import org.infinispan.arquillian.core.WithRunningServer;
import org.infinispan.arquillian.utils.MBeanServerConnectionProvider;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.configuration.Configuration;
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
import org.jboss.arquillian.junit.Arquillian;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.assertTrue;

/**
* - test start, default-cache, eviction-executor, listener-executor and replication-queue-executor attributes of cache-container element
* - test the cache-container attribute of hotrod-connector, so that we can have different hotrod endpoints for different containers
*
* @author <a href="mailto:[email protected]">Martin Gencur</a>
* @author <a href="mailto:[email protected]">Jakub Markos</a>
*/
@RunWith(Arquillian.class)
@WithRunningServer("cachecontainer")
public class CacheContainerTest {

@InfinispanResource("cachecontainer")
RemoteInfinispanServer server1;

final int managementPort = 9999;

final String dumpServicesBean = "jboss.msc:type=container,name=jboss-as";
final String dumpServicesOp = "dumpServicesToString";

RemoteCacheManager rcm1; // connects to 'default' cache container
RemoteCacheManager rcm2; // connects to 'special-cache-container' cache container
MBeanServerConnectionProvider provider;

@Before
public void setUp() {
if (rcm1 == null) {
provider = new MBeanServerConnectionProvider(server1.getHotrodEndpoint().getInetAddress().getHostName(), managementPort);

Configuration conf = new ConfigurationBuilder().addServer().host(server1.getHotrodEndpoint().getInetAddress().getHostName()).port(server1
.getHotrodEndpoint().getPort()).build();
Configuration conf2 = new ConfigurationBuilder().addServer()
.host(server1.getHotrodEndpoint("hotrodconnector2").getInetAddress().getHostName())
.port(server1.getHotrodEndpoint("hotrodconnector2").getPort()).build();
rcm1 = new RemoteCacheManager(conf);
rcm2 = new RemoteCacheManager(conf2);
}
}

@Test
public void testEndpointConfiguration() throws Exception {
RemoteCache<String, String> cache1 = rcm1.getCache("default");
RemoteCache<String, String> cache2 = rcm2.getCache("default");
cache1.put("key", "value");
cache2.put("key2", "value2");
assertTrue(1 == server1.getCacheManager("default").getCache("default").getNumberOfEntries());
assertTrue(1 == server1.getCacheManager("special-cache-container").getCache("default").getNumberOfEntries());
cache1.remove("key");
cache2.remove("key2");
}

@Test
public void testDefaultCacheAttribute() throws Exception {
RemoteCache<String, String> cache = rcm2.getCache();
cache.put("key", "value");
assertTrue(1 == server1.getCacheManager("special-cache-container").getCache("special-cache").getNumberOfEntries());
assertTrue(0 == server1.getCacheManager("special-cache-container").getCache("default").getNumberOfEntries());
cache.remove("key");
}

/*
* test that eviction-executor, listener-executor and replication-queue-executor attributes have been picked up by
* infinispan-subsystem and jboss.infinispan.default service should depend on these executors
* also test the start attribute:
* 'default' cache container has default start mode (=LAZY) (mode of service - ACTIVE)
* 'special-cache-container' has EAGER start mode (mode of service - ON_DEMAND)
*/
@Test
public void testExecutorAttributesAndStartMode() throws Exception {
String services = provider.getConnection().invoke(new ObjectName(dumpServicesBean), dumpServicesOp, null, null)
.toString();
boolean b1 = false, b2 = false, b3 = false;
final String executorPrefix = "jboss.thread.executor.";
Scanner s = new Scanner(services).useDelimiter("\n");
while (true) {
try {
String line = s.nextLine();
if (line.contains("Service \"jboss.infinispan.default.config\"") && line.contains("dependencies:")) {
String dependencies = line.substring(line.indexOf("dependencies:"));
if (dependencies.contains(executorPrefix + "test-infinispan-repl-queue")
&& dependencies.contains(executorPrefix + "test-infinispan-listener")
&& dependencies.contains(executorPrefix + "test-infinispan-eviction")) {
b1 = true;
}
}
if (line.contains("Service \"jboss.infinispan.special-cache-container\"") &&
line.contains("mode ACTIVE state UP")) {
b2 = true;
}
if (line.contains("Service \"jboss.infinispan.default\"") &&
line.contains("mode ON_DEMAND state UP")) {
b3 = true;
}

} catch (Exception e) {
break;
}
}
assertTrue(b1 && b2 && b3);
}
}
10 changes: 10 additions & 0 deletions server/integration/testsuite/src/test/resources/arquillian.xml
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,16 @@
<property name="waitForPorts">11311 11322 8180</property>
</configuration>
</container>
<container qualifier="cachecontainer" mode="manual">
<configuration>
<property name="javaHome">${server.jvm}</property>
<property name="jbossHome">${server1.dist}</property>
<property name="serverConfig">testsuite/standalone-cachecontainer.xml</property>
<property name="javaVmArguments">${server.jvm.args} -Djboss.node.name=node0</property>
<property name="managementPort">9999</property>
<property name="waitForPorts">11222 11223 8080</property>
</configuration>
</container>
</group>
<group qualifier="suite-client-local">
<container qualifier="container1" mode="suite">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<subsystem xmlns="urn:infinispan:server:core:6.0">
<cache-container name="default" default-cache="default" listener-executor="test-infinispan-listener" eviction-executor="test-infinispan-eviction" replication-queue-executor="test-infinispan-repl-queue">
<local-cache name="default" batching="false" />
</cache-container>
<cache-container name="special-cache-container" start="EAGER" default-cache="special-cache">
<local-cache name="special-cache" />
<local-cache name="default" />
</cache-container>
</subsystem>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<subsystem xmlns="urn:infinispan:server:endpoint:6.0">
<hotrod-connector socket-binding="hotrod" cache-container="default">
<topology-state-transfer lazy-retrieval="false" lock-timeout="1000" replication-timeout="5000" />
</hotrod-connector>
<hotrod-connector name="hotrodconnector2" socket-binding="hotrod2" cache-container="special-cache-container">
<topology-state-transfer lazy-retrieval="false" lock-timeout="1000" replication-timeout="5000" />
</hotrod-connector>
</subsystem>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<socket-binding name="hotrod2" interface="management" port="11223"/>
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<subsystem xmlns="urn:jboss:domain:threads:1.1">
<thread-factory name="infinispan-factory" group-name="infinispan" priority="5"/>
<unbounded-queue-thread-pool name="infinispan-transport">
<max-threads count="25"/>
<keepalive-time time="0" unit="milliseconds"/>
<thread-factory name="infinispan-factory"/>
</unbounded-queue-thread-pool>

<scheduled-thread-pool name="test-infinispan-repl-queue">
<max-threads count="1" />
<thread-factory name="infinispan-factory"/>
</scheduled-thread-pool>
<unbounded-queue-thread-pool name="test-infinispan-listener">
<max-threads count="100" />
<keepalive-time time="1000" unit="MILLISECONDS"/>
<thread-factory name="infinispan-factory"/>
</unbounded-queue-thread-pool>
<scheduled-thread-pool name="test-infinispan-eviction">
<max-threads count="1" />
<thread-factory name="infinispan-factory"/>
</scheduled-thread-pool>
</subsystem>
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@
xmlns:p="urn:jboss:domain:1.4"
xmlns:jgroups="urn:jboss:domain:jgroups:1.2"
xmlns:core="urn:infinispan:server:core:6.0"
xmlns:threads="urn:jboss:domain:threads:1.1"
xmlns:endpoint="urn:infinispan:server:endpoint:6.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

<!-- Parameter declarations with defaults set -->
<xsl:param name="modifyInfinispan">false</xsl:param>
<xsl:param name="modifyThreads">false</xsl:param>
<xsl:param name="modifyStack">false</xsl:param>
<xsl:param name="modifyRelay">false</xsl:param>
<xsl:param name="modifyMulticastAddress">false</xsl:param>
<xsl:param name="modifyRemoteDestination">false</xsl:param>
<xsl:param name="modifyOutboundSocketBindingHotRod">false</xsl:param>
<xsl:param name="addHotrodSocketBinding">false</xsl:param>
<xsl:param name="removeRestSecurity">true</xsl:param>
<xsl:param name="infinispanServerEndpoint">false</xsl:param>
<xsl:param name="infinispanFile">none</xsl:param>
Expand All @@ -38,6 +41,15 @@
</xsl:if>
</xsl:template>

<xsl:template match="threads:subsystem">
<xsl:if test="$modifyThreads = 'false'">
<xsl:call-template name="copynode"/>
</xsl:if>
<xsl:if test="$modifyThreads != 'false'">
<xsl:copy-of select="document($modifyThreads)"/>
</xsl:if>
</xsl:template>

<!-- configure subsystem/logger[@category = 'org.infinispan']/level and subsystem/logger[@category = 'org.jgroups']/level -->
<xsl:template match="logging:subsystem">
<xsl:copy>
Expand Down Expand Up @@ -172,6 +184,16 @@
</xsl:if>
</xsl:template>

<xsl:template match="p:socket-binding[@name='hotrod']">
<xsl:if test="$addHotrodSocketBinding = 'false'">
<xsl:call-template name="copynode"/>
</xsl:if>
<xsl:if test="$addHotrodSocketBinding != 'false'">
<xsl:copy-of select="document($addHotrodSocketBinding)"/>
<xsl:call-template name="copynode"/>
</xsl:if>
</xsl:template>

<xsl:template match="endpoint:subsystem">
<xsl:if test="$infinispanServerEndpoint = 'false'">
<xsl:call-template name="copynode"/>
Expand Down

0 comments on commit 326ad6f

Please sign in to comment.