You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2013/07/31 00:02:36 UTC
svn commit: r1508662 - in /lucene/dev/branches/branch_4x: ./ dev-tools/
lucene/ lucene/analysis/
lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/
lucene/benchmark/ lucene/classification/ lucene/classification/src/
lucene/code...
Author: hossman
Date: Tue Jul 30 22:02:34 2013
New Revision: 1508662
URL: http://svn.apache.org/r1508662
Log:
SOLR-5094: Fix order of setup in TestJmxIntegration so MBean server is running before Solr init. Also fixes SOLR-4418 (merge r1508661)
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/dev-tools/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/BUILD.txt (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt (props changed)
lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt (props changed)
lucene/dev/branches/branch_4x/lucene/LICENSE.txt (props changed)
lucene/dev/branches/branch_4x/lucene/MIGRATE.txt (props changed)
lucene/dev/branches/branch_4x/lucene/NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/lucene/README.txt (props changed)
lucene/dev/branches/branch_4x/lucene/SYSTEM_REQUIREMENTS.txt (props changed)
lucene/dev/branches/branch_4x/lucene/analysis/ (props changed)
lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java (props changed)
lucene/dev/branches/branch_4x/lucene/backwards/ (props changed)
lucene/dev/branches/branch_4x/lucene/benchmark/ (props changed)
lucene/dev/branches/branch_4x/lucene/build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/classification/ (props changed)
lucene/dev/branches/branch_4x/lucene/classification/build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/classification/ivy.xml (props changed)
lucene/dev/branches/branch_4x/lucene/classification/src/ (props changed)
lucene/dev/branches/branch_4x/lucene/codecs/ (props changed)
lucene/dev/branches/branch_4x/lucene/common-build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.cfs.zip (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.nocfs.zip (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.cfs.zip (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.nocfs.zip (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestSort.java (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestSortDocValues.java (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestSortRandom.java (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/search/TestTotalHitCountCollector.java (props changed)
lucene/dev/branches/branch_4x/lucene/demo/ (props changed)
lucene/dev/branches/branch_4x/lucene/facet/ (props changed)
lucene/dev/branches/branch_4x/lucene/grouping/ (props changed)
lucene/dev/branches/branch_4x/lucene/highlighter/ (props changed)
lucene/dev/branches/branch_4x/lucene/ivy-settings.xml (props changed)
lucene/dev/branches/branch_4x/lucene/join/ (props changed)
lucene/dev/branches/branch_4x/lucene/licenses/ (props changed)
lucene/dev/branches/branch_4x/lucene/memory/ (props changed)
lucene/dev/branches/branch_4x/lucene/misc/ (props changed)
lucene/dev/branches/branch_4x/lucene/module-build.xml (props changed)
lucene/dev/branches/branch_4x/lucene/queries/ (props changed)
lucene/dev/branches/branch_4x/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQuerySort.java (props changed)
lucene/dev/branches/branch_4x/lucene/queryparser/ (props changed)
lucene/dev/branches/branch_4x/lucene/replicator/ (props changed)
lucene/dev/branches/branch_4x/lucene/sandbox/ (props changed)
lucene/dev/branches/branch_4x/lucene/site/ (props changed)
lucene/dev/branches/branch_4x/lucene/spatial/ (props changed)
lucene/dev/branches/branch_4x/lucene/suggest/ (props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_4x/lucene/tools/ (props changed)
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/CHANGES.txt (props changed)
lucene/dev/branches/branch_4x/solr/LICENSE.txt (props changed)
lucene/dev/branches/branch_4x/solr/NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/README.txt (props changed)
lucene/dev/branches/branch_4x/solr/SYSTEM_REQUIREMENTS.txt (props changed)
lucene/dev/branches/branch_4x/solr/build.xml (props changed)
lucene/dev/branches/branch_4x/solr/cloud-dev/ (props changed)
lucene/dev/branches/branch_4x/solr/common-build.xml (props changed)
lucene/dev/branches/branch_4x/solr/contrib/ (props changed)
lucene/dev/branches/branch_4x/solr/core/ (props changed)
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/JmxMonitoredMap.java
lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestConfig.java (props changed)
lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java
lucene/dev/branches/branch_4x/solr/example/ (props changed)
lucene/dev/branches/branch_4x/solr/licenses/ (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt (props changed)
lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt (props changed)
lucene/dev/branches/branch_4x/solr/scripts/ (props changed)
lucene/dev/branches/branch_4x/solr/site/ (props changed)
lucene/dev/branches/branch_4x/solr/solrj/ (props changed)
lucene/dev/branches/branch_4x/solr/test-framework/ (props changed)
lucene/dev/branches/branch_4x/solr/webapp/ (props changed)
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/JmxMonitoredMap.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/JmxMonitoredMap.java?rev=1508662&r1=1508661&r2=1508662&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/JmxMonitoredMap.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/JmxMonitoredMap.java Tue Jul 30 22:02:34 2013
@@ -190,6 +190,11 @@ public class JmxMonitoredMap<K, V> exten
return ObjectName.getInstance(jmxRootName, map);
}
+ /** For test verification */
+ public MBeanServer getServer() {
+ return server;
+ }
+
/**
* DynamicMBean is used to dynamically expose all SolrInfoMBean
* getStatistics() NameList keys as String getters.
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java?rev=1508662&r1=1508661&r2=1508662&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java Tue Jul 30 22:02:34 2013
@@ -23,9 +23,8 @@ import javax.management.*;
import org.apache.lucene.util.Constants;
import org.apache.solr.core.JmxMonitoredMap.SolrDynamicMBean;
import org.apache.solr.util.AbstractSolrTestCase;
-import org.junit.After;
import org.junit.Assume;
-import org.junit.Before;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
@@ -38,34 +37,47 @@ import org.junit.Test;
*/
public class TestJmxIntegration extends AbstractSolrTestCase {
-
+ private static MBeanServer mbeanServer = null;
+
@BeforeClass
public static void beforeClass() throws Exception {
- initCore("solrconfig.xml", "schema.xml");
- }
-
- @Override
- @Before
- public void setUp() throws Exception {
// Make sure that at least one MBeanServer is available
- MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
- super.setUp();
- }
+ // prior to initializing the core
+ //
+ // (test configs are setup to use existing server if any,
+ // otherwise skip JMX)
+ MBeanServer platformServer = ManagementFactory.getPlatformMBeanServer();
- @Override
- @After
- public void tearDown() throws Exception {
- super.tearDown();
+ initCore("solrconfig.xml", "schema.xml");
+
+ // we should be able to se that the core has JmxIntegration enabled
+ assertTrue("JMX not enabled",
+ h.getCore().getSolrConfig().jmxConfig.enabled);
+ // and we should be able to see that the the monitor map found
+ // a JMX server to use, which refers to the server we started
+
+ Map registry = h.getCore().getInfoRegistry();
+ assertTrue("info registry is not a JMX monitored map",
+ registry instanceof JmxMonitoredMap);
+ mbeanServer = ((JmxMonitoredMap)registry).getServer();
+
+ assertNotNull("No JMX server found by monitor map",
+ mbeanServer);
+
+ // NOTE: we can't garuntee that "mbeanServer == platformServer"
+ // the JVM may have mutiple MBean servers funning when the test started
+ // and the contract of not specifying one when configuring solr with
+ // <jmx /> is that it will use whatever the "first" MBean server
+ // returned by the JVM is.
+ }
+
+ @AfterClass
+ public static void afterClass() throws Exception {
+ mbeanServer = null;
}
@Test
public void testJmxRegistration() throws Exception {
- List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
- log.info("Servers in testJmxRegistration: " + servers);
- assertNotNull("MBeanServers were null", servers);
- assertFalse("No MBeanServer was found", servers.isEmpty());
-
- MBeanServer mbeanServer = servers.get(0);
assertTrue("No MBeans found in server", mbeanServer.getMBeanCount() > 0);
Set<ObjectInstance> objects = mbeanServer.queryMBeans(null, null);
@@ -97,14 +109,6 @@ public class TestJmxIntegration extends
@Test
public void testJmxUpdate() throws Exception {
- // Workaround for SOLR-4418 (this test fails with "No
- // mbean found for SolrIndexSearcher" on IBM J9 6.0 and 7.0):
- Assume.assumeTrue(!"IBM Corporation".equals(Constants.JVM_VENDOR));
-
- List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
- log.info("Servers in testJmxUpdate: " + servers);
- log.info(h.getCore().getInfoRegistry().toString());
-
SolrInfoMBean bean = null;
// wait until searcher is registered
for (int i=0; i<100; i++) {
@@ -114,7 +118,7 @@ public class TestJmxIntegration extends
}
if (bean==null) throw new RuntimeException("searcher was never registered");
ObjectName searcher = getObjectName("searcher", bean);
- MBeanServer mbeanServer = servers.get(0);
+
log.info("Mbeans in server: " + mbeanServer.queryNames(null, null));
assertFalse("No mbean found for SolrIndexSearcher", mbeanServer.queryMBeans(searcher, null).isEmpty());
@@ -129,8 +133,6 @@ public class TestJmxIntegration extends
@Test @Ignore("timing problem? https://issues.apache.org/jira/browse/SOLR-2715")
public void testJmxOnCoreReload() throws Exception {
- List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
- MBeanServer mbeanServer = servers.get(0);
String coreName = h.getCore().getName();