You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2008/09/16 13:56:09 UTC
svn commit: r695821 - in /jackrabbit/trunk/jackrabbit-core/src:
main/java/org/apache/jackrabbit/core/
main/java/org/apache/jackrabbit/core/cluster/
main/java/org/apache/jackrabbit/core/config/
test/java/org/apache/jackrabbit/core/cluster/
Author: dpfister
Date: Tue Sep 16 04:56:08 2008
New Revision: 695821
URL: http://svn.apache.org/viewvc?rev=695821&view=rev
Log:
JCR-1734 - Generated cluster node id should be persisted
Added:
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java (with props)
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java (with props)
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java (with props)
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java (with props)
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java (with props)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterContext.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=695821&r1=695820&r2=695821&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Tue Sep 16 04:56:08 2008
@@ -381,6 +381,16 @@
}
/**
+ * Get the cluster node. Returns <code>null</code> if this repository
+ * is not running clustered.
+ *
+ * @return cluster node
+ */
+ public ClusterNode getClusterNode() {
+ return clusterNode;
+ }
+
+ /**
* Returns the {@link org.apache.jackrabbit.core.security.JackrabbitSecurityManager SecurityManager}
* of this <code>Repository</code>
*
@@ -2148,6 +2158,13 @@
/**
* {@inheritDoc}
*/
+ public File getRepositoryHome() {
+ return new File(getConfig().getHomeDir());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public NamespaceResolver getNamespaceResolver() {
return new RegistryNamespaceResolver(getNamespaceRegistry());
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterContext.java?rev=695821&r1=695820&r2=695821&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterContext.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterContext.java Tue Sep 16 04:56:08 2008
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.core.cluster;
+import java.io.File;
+
import org.apache.jackrabbit.core.config.ClusterConfig;
import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
@@ -34,6 +36,13 @@
ClusterConfig getClusterConfig();
/**
+ * Return the repository home directory.
+ *
+ * @return repository home directory
+ */
+ File getRepositoryHome();
+
+ /**
* Return a namespace resolver to map prefixes to URIs and vice-versa
*
* @return namespace resolver
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java?rev=695821&r1=695820&r2=695821&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java Tue Sep 16 04:56:08 2008
@@ -37,11 +37,19 @@
import org.apache.jackrabbit.core.state.PropertyState;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.uuid.UUID;
+
import EDU.oswego.cs.dl.util.concurrent.Mutex;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.observation.Event;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
@@ -62,6 +70,9 @@
*/
public static final String SYSTEM_PROPERTY_NODE_ID = "org.apache.jackrabbit.core.cluster.node_id";
+ /** Cluster node id file. */
+ private static final String CLUSTER_NODE_ID_FILE = "cluster_node.id";
+
/**
* Used for padding short string representations.
*/
@@ -304,7 +315,7 @@
journal.close();
instanceRevision.close();
-
+
notifyAll();
}
}
@@ -331,7 +342,7 @@
/**
* Return the journal created by this cluster node.
- *
+ *
* @return journal
*/
public Journal getJournal() {
@@ -340,19 +351,61 @@
/**
* Return the instance id to be used for this node in the cluster.
- * @param id configured id, <code>null</code> to take random id
+ * @param id configured id, <code>null</code> to generate a unique id
*/
- private String getClusterNodeId(String id) {
+ private String getClusterNodeId(String id) throws ClusterException {
if (id == null) {
id = System.getProperty(SYSTEM_PROPERTY_NODE_ID);
if (id == null) {
- id = toHexString((short) (Math.random() * (Short.MAX_VALUE - Short.MIN_VALUE)));
+ try {
+ id = getClusterNodeIdFromFile();
+ } catch (IOException e) {
+ throw new ClusterException(e.getMessage(), e.getCause());
+ }
}
}
return id;
}
/**
+ * Return a cluster node from a file, creating it if necessary.
+ *
+ * @return stored or generated cluster id
+ * @throws IOException if an I/O error occurs
+ */
+ protected String getClusterNodeIdFromFile() throws IOException {
+ String filename = clusterContext.getRepositoryHome() + File.separator + CLUSTER_NODE_ID_FILE;
+ File f = new File(filename);
+
+ if (f.exists() && f.canRead()) {
+ BufferedReader reader = null;
+
+ try {
+ reader = new BufferedReader(new FileReader(f));
+ return reader.readLine();
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+ }
+
+ FileWriter writer = null;
+ String id = UUID.randomUUID().toString();
+
+ try {
+ writer = new FileWriter(f);
+ writer.write(id);
+ } finally {
+ if (writer != null) {
+ writer.close();
+ }
+ }
+ return id;
+
+ }
+
+ /**
* Return a zero-padded short string representation.
*
* @param n short
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java?rev=695821&r1=695820&r2=695821&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java Tue Sep 16 04:56:08 2008
@@ -628,8 +628,12 @@
&& CLUSTER_ELEMENT.equals(child.getNodeName())) {
Element element = (Element) child;
+ String id = null;
+
String value = getAttribute(element, ID_ATTRIBUTE, null);
- String id = replaceVariables(value);
+ if (value != null) {
+ id = replaceVariables(value);
+ }
value = getAttribute(element, SYNC_DELAY_ATTRIBUTE, DEFAULT_SYNC_DELAY);
long syncDelay = Long.parseLong(replaceVariables(value));
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java?rev=695821&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java Tue Sep 16 04:56:08 2008
@@ -0,0 +1,82 @@
+/*
+ * 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.jackrabbit.core.cluster;
+
+import java.io.File;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.config.BeanConfig;
+import org.apache.jackrabbit.core.config.ClusterConfig;
+import org.apache.jackrabbit.core.config.JournalConfig;
+import org.apache.jackrabbit.test.JUnitTest;
+
+/**
+ * Test cases for cluster mode.
+ */
+public class ClusterTest extends JUnitTest {
+
+ /** Repository home value. */
+ private static final String REPOSITORY_HOME = "target/repository_for_test";
+
+ /** Repository home. */
+ private File repositoryHome;
+
+ /**
+ * {@inheritDoc}
+ */
+ protected void setUp() throws Exception {
+ repositoryHome = new File(REPOSITORY_HOME);
+ repositoryHome.mkdirs();
+ FileUtils.cleanDirectory(repositoryHome);
+
+ super.setUp();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected void tearDown() throws Exception {
+ if (repositoryHome != null) {
+ FileUtils.deleteDirectory(repositoryHome);
+ }
+ super.tearDown();
+ }
+
+ /**
+ * Create a cluster with no configured id. Verify that the generated id
+ * will be persisted.
+ *
+ * @throws Exception
+ */
+ public void testClusterIdGeneration() throws Exception {
+ BeanConfig bc = new BeanConfig(MemoryJournal.class.getName(), new Properties());
+ JournalConfig jc = new JournalConfig(bc);
+ ClusterConfig cc = new ClusterConfig(null, 0, jc);
+ SimpleClusterContext context = new SimpleClusterContext(cc, repositoryHome);
+
+ ClusterNode clusterNode = new ClusterNode();
+ clusterNode.init(context);
+
+ String id = ((MemoryJournal) clusterNode.getJournal()).getId();
+
+ clusterNode = new ClusterNode();
+ clusterNode.init(context);
+
+ assertEquals(id, ((MemoryJournal) clusterNode.getJournal()).getId());
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/ClusterTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java?rev=695821&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java Tue Sep 16 04:56:08 2008
@@ -0,0 +1,92 @@
+/*
+ * 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.jackrabbit.core.cluster;
+
+import org.apache.jackrabbit.core.journal.InstanceRevision;
+import org.apache.jackrabbit.core.journal.Journal;
+import org.apache.jackrabbit.core.journal.JournalException;
+import org.apache.jackrabbit.core.journal.RecordConsumer;
+import org.apache.jackrabbit.core.journal.RecordProducer;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
+
+/**
+ * Memory-based journal, useful for testing purposes only.
+ */
+public class MemoryJournal implements Journal {
+
+ /** Revision. */
+ private InstanceRevision revision = new MemoryRevision();
+
+ /** Journal id. */
+ private String id;
+
+ /**
+ * Return this journal's id.
+ *
+ * @return id
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public InstanceRevision getInstanceRevision() throws JournalException {
+ return revision;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public RecordProducer getProducer(String identifier)
+ throws JournalException {
+
+ throw new JournalException("Not implemented");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void init(String id, NamespaceResolver resolver)
+ throws JournalException {
+
+ this.id = id;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void register(RecordConsumer consumer) throws JournalException {}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void sync() throws JournalException {}
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean unregister(RecordConsumer consumer) {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() {}
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryJournal.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java?rev=695821&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java Tue Sep 16 04:56:08 2008
@@ -0,0 +1,48 @@
+/*
+ * 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.jackrabbit.core.cluster;
+
+import org.apache.jackrabbit.core.journal.InstanceRevision;
+import org.apache.jackrabbit.core.journal.JournalException;
+
+/**
+ * Memory-based revision, useful for testing purposes only.
+ */
+public class MemoryRevision implements InstanceRevision {
+
+ /** Revision. */
+ private long revision;
+
+ /**
+ * {@inheritDoc}
+ */
+ public long get() throws JournalException {
+ return revision;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void set(long value) throws JournalException {
+ this.revision = value;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() {}
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/MemoryRevision.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java?rev=695821&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java Tue Sep 16 04:56:08 2008
@@ -0,0 +1,78 @@
+/*
+ * 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.jackrabbit.core.cluster;
+
+import java.io.File;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.config.ClusterConfig;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
+
+/**
+ * Simple cluster context, providing only limited functionality.
+ */
+public class SimpleClusterContext implements ClusterContext {
+
+ /** Cluster config. */
+ private ClusterConfig cc;
+
+ /** Repository home. */
+ private File repositoryHome;
+
+ /**
+ * Create a new instance of this class.
+ *
+ * @param cc cluster config
+ * @param repHome repository home
+ */
+ public SimpleClusterContext(ClusterConfig cc, File repositoryHome) {
+ this.cc = cc;
+ this.repositoryHome = repositoryHome;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ClusterConfig getClusterConfig() {
+ return cc;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public NamespaceResolver getNamespaceResolver() {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public File getRepositoryHome() {
+ return repositoryHome;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void lockEventsReady(String workspace) throws RepositoryException {}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void updateEventsReady(String workspace) throws RepositoryException {}
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/SimpleClusterContext.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url
Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java?rev=695821&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java Tue Sep 16 04:56:08 2008
@@ -0,0 +1,44 @@
+/*
+ * 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.jackrabbit.core.cluster;
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Collects all test classes setting up test data in the workspace. This test
+ * data is specific to Jackrabbit and will probably not work in other
+ * implementations.
+ */
+public class TestAll extends TestCase {
+
+ /**
+ * Returns a <code>Test</code> suite that executes all tests inside this
+ * package.
+ *
+ * @return a <code>Test</code> suite that executes all tests inside this
+ * package.
+ */
+ public static Test suite() {
+ TestSuite suite = new TestSuite();
+
+ suite.addTestSuite(ClusterTest.class);
+
+ return suite;
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/cluster/TestAll.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url