package org.rhq.enterprise.server.search;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.search.SearchSubsystem;
import org.rhq.core.domain.search.SearchSuggestion;
import org.rhq.enterprise.server.search.execution.SearchAssistManager;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
public class GenericSearchAssistTest extends AbstractEJB3Test {
@Test
public void testGenericAssist() throws Exception {
BufferedReader reader = null;
try {
InputStream stream = getClass().getClassLoader().getResourceAsStream("test-assist-color-number.txt");
reader = new BufferedReader(new InputStreamReader(stream));
String expression = null;
String expected = null;
int count = 0;
while (true) {
expression = reader.readLine();
if (expression == null) {
break;
}
expected = reader.readLine();
if (expected == null) {
break;
}
count++;
List<SearchSuggestion> results = new TestAutoCompletionManager().getAdvancedSuggestions(expression,
expression.length(), null);
List<String> expectedResults = Arrays.asList(expected.split(" "));
System.out.println();
System.out.println("Expression: " + expression);
try {
compare(results, expectedResults);
System.out.println("Assist worked: " + parenthesize(expectedResults.toString()));
} catch (Throwable t) {
t.printStackTrace();
}
}
System.out.println("Tested " + count + " expressions for assist");
} catch (Exception e) {
System.out.println("Error testing GenericSearchAssistTest: " + e);
e.printStackTrace(System.out);
throw e;
} finally {
if (reader != null) {
reader.close();
}
}
}
@Test
public void test2() throws Exception {
Subject overlord = LookupUtil.getSubjectManager().getOverlord();
SearchAssistManager mgr = new SearchAssistManager(overlord, SearchSubsystem.RESOURCE);
List<SearchSuggestion> suggestions = mgr.getSuggestions("category=PLATFORM",0);
System.out.println("Number of suggestions: " + suggestions.size());
for (SearchSuggestion s : suggestions) {
System.out.println(s);
}
}
private void compare(List<SearchSuggestion> results, List<String> expected) {
List<String> rawResults = new ArrayList<String>();
for (SearchSuggestion suggestion : results) {
rawResults.add(suggestion.getValue());
}
Collections.sort(rawResults);
Collections.sort(expected);
assert rawResults.size() == expected.size() : print(expected, rawResults);
for (int i = 0; i < rawResults.size(); i++) {
String nextRaw = rawResults.get(i);
String nextExpected = expected.get(i);
assert nextRaw.equals(nextExpected) : print(expected, rawResults);
}
}
private String print(List<String> expected, List<String> results) {
return "expected" + parenthesize(expected.toString()) + ", results" + parenthesize(results.toString());
}
private String parenthesize(String data) {
return "(" + data.substring(1, data.length() - 1) + ")";
}
public static void main(String[] args) throws Exception {
new GenericSearchAssistTest().testGenericAssist();
}
}