You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2014/03/05 13:24:29 UTC
[14/21] git commit: started working on remote cluster test
started working on remote cluster test
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/1497768a
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/1497768a
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/1497768a
Branch: refs/heads/MARMOTTA-450
Commit: 1497768a27506d6d5cd0aec0b0754b055a7f8e8d
Parents: 89763d1
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Tue Mar 4 19:13:17 2014 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Tue Mar 4 19:13:17 2014 +0100
----------------------------------------------------------------------
libraries/kiwi/kiwi-caching-infinispan/pom.xml | 5 +
.../remote/InfinispanRemoteCacheManager.java | 61 +++++--
.../marmotta/kiwi/test/RemoteClusterTest.java | 158 +++++++++++++++++++
.../kiwi/test/cluster/BaseClusterTest.java | 29 +++-
parent/pom.xml | 5 +
5 files changed, 239 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1497768a/libraries/kiwi/kiwi-caching-infinispan/pom.xml
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-caching-infinispan/pom.xml b/libraries/kiwi/kiwi-caching-infinispan/pom.xml
index ddbbab0..5bd3416 100644
--- a/libraries/kiwi/kiwi-caching-infinispan/pom.xml
+++ b/libraries/kiwi/kiwi-caching-infinispan/pom.xml
@@ -112,6 +112,11 @@
<artifactId>sesame-rio-rdfxml</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.infinispan</groupId>
+ <artifactId>infinispan-server-hotrod</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1497768a/libraries/kiwi/kiwi-caching-infinispan/src/main/java/org/apache/marmotta/kiwi/infinispan/remote/InfinispanRemoteCacheManager.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-caching-infinispan/src/main/java/org/apache/marmotta/kiwi/infinispan/remote/InfinispanRemoteCacheManager.java b/libraries/kiwi/kiwi-caching-infinispan/src/main/java/org/apache/marmotta/kiwi/infinispan/remote/InfinispanRemoteCacheManager.java
index 0090387..39a20b6 100644
--- a/libraries/kiwi/kiwi-caching-infinispan/src/main/java/org/apache/marmotta/kiwi/infinispan/remote/InfinispanRemoteCacheManager.java
+++ b/libraries/kiwi/kiwi-caching-infinispan/src/main/java/org/apache/marmotta/kiwi/infinispan/remote/InfinispanRemoteCacheManager.java
@@ -19,10 +19,14 @@ package org.apache.marmotta.kiwi.infinispan.remote;
import org.apache.marmotta.kiwi.caching.CacheManager;
import org.apache.marmotta.kiwi.config.KiWiConfiguration;
+import org.apache.marmotta.kiwi.infinispan.util.AsyncMap;
import org.apache.marmotta.kiwi.model.rdf.*;
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.configuration.Configuration;
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
+import org.infinispan.commons.CacheException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.Map;
@@ -33,6 +37,8 @@ import java.util.Map;
*/
public class InfinispanRemoteCacheManager implements CacheManager {
+ private static Logger log = LoggerFactory.getLogger(InfinispanRemoteCacheManager.class);
+
private KiWiConfiguration configuration;
private RemoteCacheManager cacheManager;
@@ -44,11 +50,15 @@ public class InfinispanRemoteCacheManager implements CacheManager {
this.configuration = configuration;
Configuration remoteCfg = new ConfigurationBuilder()
- .addServers(configuration.getClusterAddress())
+ .addServer()
+ .host(configuration.getClusterAddress())
+ .port(configuration.getClusterPort())
.marshaller(new CustomJBossMarshaller())
.build();
cacheManager = new RemoteCacheManager(remoteCfg);
+
+ log.info("initialised Infinispan remote cache manager (servers: {})", configuration.getClusterAddress());
}
@@ -60,7 +70,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<Long, KiWiNode> getNodeCache() {
- return null;
+ if(nodeCache == null) {
+ nodeCache = new AsyncMap(cacheManager.getCache(NODE_CACHE));
+ }
+ return nodeCache;
}
/**
@@ -71,7 +84,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<Long, KiWiTriple> getTripleCache() {
- return null;
+ if(tripleCache == null) {
+ tripleCache = new AsyncMap(cacheManager.getCache(TRIPLE_CACHE));
+ }
+ return tripleCache;
}
/**
@@ -82,7 +98,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<String, KiWiUriResource> getUriCache() {
- return null;
+ if(uriCache == null) {
+ uriCache = new AsyncMap(cacheManager.getCache(URI_CACHE));
+ }
+ return uriCache;
}
/**
@@ -93,7 +112,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<String, KiWiAnonResource> getBNodeCache() {
- return null;
+ if(bnodeCache == null) {
+ bnodeCache = new AsyncMap(cacheManager.getCache(BNODE_CACHE));
+ }
+ return bnodeCache;
}
/**
@@ -105,7 +127,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<String, KiWiLiteral> getLiteralCache() {
- return null;
+ if(literalCache == null) {
+ literalCache = new AsyncMap(cacheManager.getCache(LITERAL_CACHE));
+ }
+ return literalCache;
}
/**
@@ -115,7 +140,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<String, KiWiNamespace> getNamespaceUriCache() {
- return null;
+ if(nsUriCache == null) {
+ nsUriCache = new AsyncMap(cacheManager.getCache(NS_URI_CACHE));
+ }
+ return nsUriCache;
}
/**
@@ -125,7 +153,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<String, KiWiNamespace> getNamespacePrefixCache() {
- return null;
+ if(nsPrefixCache == null) {
+ nsPrefixCache = new AsyncMap(cacheManager.getCache(NS_PREFIX_CACHE));
+ }
+ return nsPrefixCache;
}
/**
@@ -136,7 +167,10 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map<Long, Long> getRegistryCache() {
- return null;
+ if(registryCache == null) {
+ registryCache = cacheManager.getCache(REGISTRY_CACHE);
+ }
+ return registryCache;
}
/**
@@ -148,7 +182,7 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public Map getCacheByName(String name) {
- return null;
+ return cacheManager.getCache(name);
}
/**
@@ -164,6 +198,11 @@ public class InfinispanRemoteCacheManager implements CacheManager {
*/
@Override
public void shutdown() {
-
+ try {
+ log.info("shutting down cache manager ...");
+ cacheManager.stop();
+ } catch (CacheException ex) {
+ log.warn("error shutting down cache: {}", ex.getMessage());
+ }
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1497768a/libraries/kiwi/kiwi-caching-infinispan/src/test/java/org/apache/marmotta/kiwi/test/RemoteClusterTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-caching-infinispan/src/test/java/org/apache/marmotta/kiwi/test/RemoteClusterTest.java b/libraries/kiwi/kiwi-caching-infinispan/src/test/java/org/apache/marmotta/kiwi/test/RemoteClusterTest.java
new file mode 100644
index 0000000..630f64e
--- /dev/null
+++ b/libraries/kiwi/kiwi-caching-infinispan/src/test/java/org/apache/marmotta/kiwi/test/RemoteClusterTest.java
@@ -0,0 +1,158 @@
+/*
+ * 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.marmotta.kiwi.test;
+
+import org.apache.marmotta.commons.vocabulary.XSD;
+import org.apache.marmotta.kiwi.caching.CacheManager;
+import org.apache.marmotta.kiwi.config.CacheManagerType;
+import org.apache.marmotta.kiwi.config.KiWiConfiguration;
+import org.apache.marmotta.kiwi.infinispan.embedded.InfinispanEmbeddedCacheManager;
+import org.apache.marmotta.kiwi.infinispan.remote.CustomJBossMarshaller;
+import org.apache.marmotta.kiwi.test.cluster.BaseClusterTest;
+import org.infinispan.client.hotrod.RemoteCache;
+import org.infinispan.client.hotrod.RemoteCacheManager;
+import org.infinispan.configuration.cache.CacheMode;
+import org.infinispan.configuration.cache.Configuration;
+import org.infinispan.configuration.cache.ConfigurationBuilder;
+import org.infinispan.configuration.global.GlobalConfiguration;
+import org.infinispan.configuration.global.GlobalConfigurationBuilder;
+import org.infinispan.eviction.EvictionStrategy;
+import org.infinispan.manager.DefaultCacheManager;
+import org.infinispan.manager.EmbeddedCacheManager;
+import org.infinispan.server.hotrod.HotRodServer;
+import org.infinispan.server.hotrod.configuration.HotRodServerConfiguration;
+import org.infinispan.server.hotrod.configuration.HotRodServerConfigurationBuilder;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Add file description here!
+ *
+ * @author Sebastian Schaffert (sschaffert@apache.org)
+ */
+public class RemoteClusterTest extends BaseClusterTest {
+
+ private static Logger log = LoggerFactory.getLogger(RemoteClusterTest.class);
+
+ private static HotRodServer hotRodServer1, hotRodServer2, hotRodServer3;
+
+ @BeforeClass
+ public static void setup() {
+ hotRodServer1 = buildServer(61222);
+ hotRodServer2 = buildServer(61223);
+ hotRodServer3 = buildServer(61224);
+
+ ClusterTestSupport s = new ClusterTestSupport(CacheManagerType.INFINISPAN_HOTROD);
+
+ KiWiConfiguration base = s.buildBaseConfiguration();
+ base.setClusterAddress("127.0.0.1");
+ s.setup(base);
+ }
+
+
+
+ private static HotRodServer buildServer(int port) {
+ HotRodServer hotRodServer = new HotRodServer() {
+ @Override
+ public ConfigurationBuilder createTopologyCacheConfig(long distSyncTimeout) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ }
+
+ ConfigurationBuilder c = super.createTopologyCacheConfig(distSyncTimeout);
+ c.transaction().syncCommitPhase(false).syncRollbackPhase(false);
+ return c;
+ }
+ };
+
+ HotRodServerConfiguration hotrodConfig = new HotRodServerConfigurationBuilder()
+ .host("127.0.0.1")
+ .port(port)
+ .proxyHost("127.0.0.1")
+ .proxyPort(port)
+ .topologyStateTransfer(false)
+ .workerThreads(2)
+ .build(true);
+
+
+ GlobalConfiguration globalConfiguration = new GlobalConfigurationBuilder()
+ .classLoader(InfinispanEmbeddedCacheManager.class.getClassLoader())
+ .globalJmxStatistics()
+ .jmxDomain("org.apache.marmotta.kiwi")
+ .allowDuplicateDomains(true)
+ .build();
+
+ Configuration defaultConfiguration = new ConfigurationBuilder()
+ .clustering()
+ .cacheMode(CacheMode.LOCAL)
+ .eviction()
+ .strategy(EvictionStrategy.LIRS)
+ .maxEntries(100000)
+ .expiration()
+ .lifespan(5, TimeUnit.MINUTES)
+ .maxIdle(1, TimeUnit.MINUTES)
+ .build();
+
+ EmbeddedCacheManager cacheManager = new DefaultCacheManager(globalConfiguration, defaultConfiguration, true);
+ cacheManager.defineConfiguration(CacheManager.NODE_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.TRIPLE_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.URI_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.BNODE_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.LITERAL_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.NS_PREFIX_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.NS_URI_CACHE, defaultConfiguration);
+ cacheManager.defineConfiguration(CacheManager.REGISTRY_CACHE, defaultConfiguration);
+ cacheManager.getCache(CacheManager.NODE_CACHE, true);
+ cacheManager.getCache(CacheManager.TRIPLE_CACHE, true);
+ cacheManager.getCache(CacheManager.URI_CACHE, true);
+ cacheManager.getCache(CacheManager.BNODE_CACHE, true);
+ cacheManager.getCache(CacheManager.LITERAL_CACHE, true);
+ cacheManager.getCache(CacheManager.NS_PREFIX_CACHE, true);
+ cacheManager.getCache(CacheManager.NS_URI_CACHE, true);
+ cacheManager.getCache(CacheManager.REGISTRY_CACHE,true);
+
+ hotRodServer.start(hotrodConfig, cacheManager);
+
+ // test if cache is available
+ org.infinispan.client.hotrod.configuration.Configuration remoteCfg = new org.infinispan.client.hotrod.configuration.ConfigurationBuilder()
+ .addServer()
+ .host("127.0.0.1")
+ .port(port)
+ .marshaller(new CustomJBossMarshaller())
+ .pingOnStartup(true)
+ .build(true);
+
+
+ RemoteCacheManager remoteCacheManager = new RemoteCacheManager(remoteCfg);
+ Assert.assertTrue(remoteCacheManager.isStarted());
+
+ RemoteCache<String, String> m = remoteCacheManager.getCache();
+
+ m.put(XSD.AnyURI.stringValue(), XSD.AnyURI.stringValue());
+ String n = m.get(XSD.AnyURI.stringValue());
+
+ Assert.assertNotNull(n);
+
+ return hotRodServer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1497768a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/cluster/BaseClusterTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/cluster/BaseClusterTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/cluster/BaseClusterTest.java
index 12a57b0..d2e12ef 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/cluster/BaseClusterTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/cluster/BaseClusterTest.java
@@ -44,7 +44,7 @@ public abstract class BaseClusterTest {
private static int datacenterIds = 1;
- private static Repository repositorySync1, repositorySync2, repositoryAsync1, repositoryAsync2;
+ protected static Repository repositorySync1, repositorySync2, repositoryAsync1, repositoryAsync2;
private static CacheManager cacheManagerSync1, cacheManagerSync2, cacheManagerAsync1, cacheManagerAsync2;
@@ -133,11 +133,15 @@ public abstract class BaseClusterTest {
}
public void setup() {
+ setup(null);
+ }
+
+ public void setup(KiWiConfiguration base) {
try {
- repositorySync1 = createConfiguration(61222);
- repositorySync2 = createConfiguration(61222);
- repositoryAsync1 = createConfiguration(61223);
- repositoryAsync2 = createConfiguration(61224);
+ repositorySync1 = createConfiguration(base,61222);
+ repositorySync2 = createConfiguration(base,61222);
+ repositoryAsync1 = createConfiguration(base,61223);
+ repositoryAsync2 = createConfiguration(base,61224);
cacheManagerSync1 = getCacheManager(repositorySync1);
cacheManagerSync2 = getCacheManager(repositorySync2);
@@ -150,13 +154,22 @@ public abstract class BaseClusterTest {
}
}
-
- private Repository createConfiguration(int port) throws RepositoryException {
- KiWiConfiguration config = new KiWiConfiguration(
+ public KiWiConfiguration buildBaseConfiguration() {
+ return new KiWiConfiguration(
"default-H2",
"jdbc:h2:mem:kiwitest;MVCC=true;DB_CLOSE_ON_EXIT=TRUE;DB_CLOSE_DELAY=-1",
"kiwi", "kiwi",
new H2Dialect());
+ }
+
+ private Repository createConfiguration(KiWiConfiguration base, int port) throws RepositoryException {
+ KiWiConfiguration config;
+
+ if(base != null) {
+ config = base;
+ } else {
+ config = buildBaseConfiguration();
+ }
config.setDatacenterId(datacenterIds++);
config.setClustered(true);
config.setCacheManager(type);
http://git-wip-us.apache.org/repos/asf/marmotta/blob/1497768a/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 2190cbe..8abc2b2 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1045,6 +1045,11 @@
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
+ <artifactId>infinispan-server-hotrod</artifactId>
+ <version>6.0.1.Final</version>
+ </dependency>
+ <dependency>
+ <groupId>org.infinispan</groupId>
<artifactId>infinispan-cdi</artifactId>
<version>6.0.1.Final</version>
</dependency>