package com.limegroup.gnutella.performance;
/**
* Used to store config options for {@link KeywordIndexTestPerformance}
*
*/
public class KeywordIndexPerformanceConfig {
static final int DEFAULT_NUMBER_FILES_INDEXED = 1000;
static final int DEFAULT_NUMBER_OF_SEARCHES_PER_SEARCH_TERM = 10000;
static final String[] DEFAULT_SEARCH_TERMS = {"failure swjdfg", "an to do", "an", "ac se fi gu"};
static final String DEFAULT_SHARED_FILES_DIRECTORY = "/tmp";
static final String DEFAULT_RAW_DATA_FILENAME = DEFAULT_SHARED_FILES_DIRECTORY + "/rawData.txt";
static final int DEFAULT_NUMBER_TO_DISCARD_DUE_TO_JIT = 20000;
private SearchConfig searchConfig;
private AnalyzeConfig analyzeConfig;
// TODO: leave open other ways of generating this config - such as thru ant properties, xml (dom nodes), etc
KeywordIndexPerformanceConfig() {
this.searchConfig = new SearchConfig();
searchConfig.setNumberOfFilesIndexed(DEFAULT_NUMBER_FILES_INDEXED);
searchConfig.setNumberOfSearchesToPerform(DEFAULT_NUMBER_OF_SEARCHES_PER_SEARCH_TERM);
searchConfig.setRawDataFileName(DEFAULT_RAW_DATA_FILENAME);
searchConfig.setSearchTerms(DEFAULT_SEARCH_TERMS);
searchConfig.setSharedFilesDirectory(DEFAULT_SHARED_FILES_DIRECTORY);
this.analyzeConfig = new AnalyzeConfig();
analyzeConfig.setNumberOfQueriesToThrowAwayDueToJit(DEFAULT_NUMBER_TO_DISCARD_DUE_TO_JIT);
analyzeConfig.setRawDataFileName(DEFAULT_RAW_DATA_FILENAME);
}
SearchConfig getSearchConfig() {
return searchConfig;
}
AnalyzeConfig getAnalyzeConfig() {
return analyzeConfig;
}
// convenience get and set methods that delegate
int getNumberOfFilesIndexed() {
return searchConfig.getNumberOfFilesIndexed();
}
void setNumberOfFilesIndexed(int numberOfFilesIndexed) {
searchConfig.setNumberOfFilesIndexed(numberOfFilesIndexed);
}
void setRawDataOutputFileName(String rawDataFileName) {
// TODO: duplication! can we get rid of it?
this.searchConfig.setRawDataFileName(rawDataFileName);
this.analyzeConfig.setRawDataFileName(rawDataFileName);
}
int getNumberOfSearchesToPerform() {
return searchConfig.getNumberOfSearchesToPerform();
}
void setNumberOfSearchesToPerform(int numberOfSearchesToPerform) {
searchConfig.setNumberOfSearchesToPerform(numberOfSearchesToPerform);
}
String[] getSearchTerms() {
return searchConfig.getSearchTerms();
}
void setSearchTerms(String[] searchTerms) {
searchConfig.setSearchTerms(searchTerms);
}
int getNumberOfQueriesToThrowAwayDueToJit() {
return analyzeConfig.getNumberOfQueriesToThrowAwayDueToJit();
}
void setNumberOfQueriesToThrowAwayDueToJit(int numberOfQueriesToThrowAwayDueToJit) {
analyzeConfig.setNumberOfQueriesToThrowAwayDueToJit(numberOfQueriesToThrowAwayDueToJit);
}
String getSharedFilesDirectory() {
return searchConfig.getSharedFilesDirectory();
}
void setSharedFilesDirectory(String sharedFilesDirectory) {
searchConfig.setSharedFilesDirectory(sharedFilesDirectory);
}
}
class SearchConfig {
private int numberOfFilesIndexed;
private String rawDataFileName;
private String sharedFilesDirectory;
private int numberOfSearchesToPerform;
private String[] searchTerms;
int getNumberOfFilesIndexed() {
return numberOfFilesIndexed;
}
void setNumberOfFilesIndexed(int numberOfFilesIndexed) {
this.numberOfFilesIndexed = numberOfFilesIndexed;
}
String getRawDataFileName() {
return rawDataFileName;
}
void setRawDataFileName(String rawDataOutputFileName) {
this.rawDataFileName = rawDataOutputFileName;
}
int getNumberOfSearchesToPerform() {
return numberOfSearchesToPerform;
}
void setNumberOfSearchesToPerform(int numberOfSearchesToPerform) {
this.numberOfSearchesToPerform = numberOfSearchesToPerform;
}
String[] getSearchTerms() {
return searchTerms;
}
void setSearchTerms(String[] searchTerms) {
this.searchTerms = searchTerms;
}
String getSharedFilesDirectory() {
return sharedFilesDirectory;
}
void setSharedFilesDirectory(String sharedFilesDirectory) {
this.sharedFilesDirectory = sharedFilesDirectory;
}
}
class AnalyzeConfig {
// performance test will throw away the first X number of query results
private int numberOfQueriesToThrowAwayDueToJit;
private String rawDataFileName;
int getNumberOfQueriesToThrowAwayDueToJit() {
return numberOfQueriesToThrowAwayDueToJit;
}
void setNumberOfQueriesToThrowAwayDueToJit(int numberOfQueriesToThrowAwayDueToJit) {
this.numberOfQueriesToThrowAwayDueToJit = numberOfQueriesToThrowAwayDueToJit;
}
String getRawDataFileName() {
return rawDataFileName;
}
void setRawDataFileName(String rawDataFileName) {
this.rawDataFileName = rawDataFileName;
}
}