Author: ryan
Date: Thu Jun 5 11:07:35 2008
New Revision: 663687
URL: http://svn.apache.org/viewvc?rev=663687&view=rev
Log:
Adding simple tests to increase code coverage for all SolrInfoMBeans -- this
scans the classpath and calls all the functions (not expecting much)
Added:
lucene/solr/trunk/src/test/org/apache/solr/SolrInfoMBeanTest.java
Modified:
lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java
Modified:
lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java?rev=663687&r1=663686&r2=663687&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java
Thu Jun 5 11:07:35 2008
@@ -267,9 +267,11 @@
public String getDescription() {
StringBuilder sb = new StringBuilder();
sb.append("Search using components: ");
- for(SearchComponent c : components){
- sb.append(c.getName());
- sb.append(",");
+ if( components != null ) {
+ for(SearchComponent c : components){
+ sb.append(c.getName());
+ sb.append(",");
+ }
}
return sb.toString();
}
Added: lucene/solr/trunk/src/test/org/apache/solr/SolrInfoMBeanTest.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/SolrInfoMBeanTest.java?rev=663687&view=auto
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/SolrInfoMBeanTest.java (added)
+++ lucene/solr/trunk/src/test/org/apache/solr/SolrInfoMBeanTest.java Thu Jun
5 11:07:35 2008
@@ -0,0 +1,100 @@
+package org.apache.solr;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.management.Query;
+
+import org.apache.lucene.search.function.FieldCacheSource;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.handler.StandardRequestHandler;
+import org.apache.solr.handler.admin.LukeRequestHandler;
+import org.apache.solr.handler.component.SearchComponent;
+import org.apache.solr.handler.component.SearchHandler;
+import org.apache.solr.highlight.DefaultSolrHighlighter;
+import org.apache.solr.search.LRUCache;
+import org.apache.solr.search.QueryUtils;
+import org.apache.solr.update.UpdateHandler;
+
+import junit.framework.TestCase;
+
+/**
+ * A simple test used to increase code coverage for some standard things...
+ */
+public class SolrInfoMBeanTest extends TestCase
+{
+ /**
+ * Gets a list of everything we can find in the classpath and makes sure it
has
+ * a name, description, etc...
+ */
+ public void testCallMBeanInfo() throws Exception {
+ List<Class> classes = new ArrayList<Class>();
+
classes.addAll(getClassesForPackage(StandardRequestHandler.class.getPackage().getName()));
+
classes.addAll(getClassesForPackage(SearchHandler.class.getPackage().getName()));
+
classes.addAll(getClassesForPackage(SearchComponent.class.getPackage().getName()));
+
classes.addAll(getClassesForPackage(LukeRequestHandler.class.getPackage().getName()));
+
classes.addAll(getClassesForPackage(DefaultSolrHighlighter.class.getPackage().getName()));
+
classes.addAll(getClassesForPackage(LRUCache.class.getPackage().getName()));
+ // System.out.println(classes);
+
+ int checked = 0;
+ for( Class clazz : classes ) {
+ if( SolrInfoMBean.class.isAssignableFrom( clazz ) ) {
+ try {
+ SolrInfoMBean info = (SolrInfoMBean)clazz.newInstance();
+
+ //System.out.println( info.getClass() );
+ assertNotNull( info.getName() );
+ assertNotNull( info.getDescription() );
+ assertNotNull( info.getSource() );
+ assertNotNull( info.getSourceId() );
+ assertNotNull( info.getVersion() );
+ assertNotNull( info.getCategory() );
+
+ if( info instanceof LRUCache ) {
+ continue;
+ }
+
+ assertNotNull( info.toString() );
+ // increase code coverage...
+ assertNotNull( info.getDocs() + "" );
+ assertNotNull( info.getStatistics()+"" );
+ checked++;
+ }
+ catch( InstantiationException ex ) {
+ // expected...
+ //System.out.println( "unable to initalize: "+clazz );
+ }
+ }
+ }
+ assertTrue( "there are at leaset 10 SolrInfoMBean that should be found in
the classpath.", checked > 10 );
+ }
+
+ private static List<Class> getClassesForPackage(String pckgname) throws
Exception {
+ ArrayList<File> directories = new ArrayList<File>();
+ ClassLoader cld = Thread.currentThread().getContextClassLoader();
+ String path = pckgname.replace('.', '/');
+ Enumeration<URL> resources = cld.getResources(path);
+ while (resources.hasMoreElements()) {
+ directories.add(new
File(URLDecoder.decode(resources.nextElement().getPath(), "UTF-8")));
+ }
+
+ ArrayList<Class> classes = new ArrayList<Class>();
+ for (File directory : directories) {
+ if (directory.exists()) {
+ String[] files = directory.list();
+ for (String file : files) {
+ if (file.endsWith(".class")) {
+ classes.add(Class.forName(pckgname + '.' + file.substring(0,
file.length() - 6)));
+ }
+ }
+ }
+ }
+ return classes;
+ }
+}