package utils.test;
/**
* Created by ricardolorenzo on 31/07/2014.
*/
public class YCSBTest implements Test {
private Integer phase;
private String binaryFile;
private String workingDirectory;
private String binaryDirectory;
private Integer threads;
private String mongoDbUrl;
private String workloadFilePath;
private Integer bulkSize;
private Integer insertStart = 0;
private Integer insertCount = 0;
public YCSBTest(String binaryDirectory, String binaryFile, Integer phase, String remoteWorloadFilePath, Integer threads,
Integer bulkSize) throws TestException {
setPhase(phase);
setBinaryDirectory(binaryDirectory);
setBinaryFile(binaryFile);
setWorkloadFilePath(remoteWorloadFilePath);
setThreads(threads);
setBulkSize(bulkSize);
}
@Override
public String getSystemCommand() {
StringBuilder sb = new StringBuilder();
sb.append(binaryDirectory);
sb.append("/");
sb.append(binaryFile);
sb.append(" ");
switch(phase) {
case PHASE_LOAD:
sb.append("load");
break;
default:
sb.append("run");
break;
}
sb.append(" mongodb -P ");
sb.append(workloadFilePath);
sb.append(" -p measurementtype=timeseries");
sb.append(" -p measurementoutput=live");
if(insertStart > 0) {
sb.append(" -p insertstart=");
sb.append(insertStart);
}
if(insertCount > 0) {
sb.append(" -p insertcount=");
sb.append(insertCount);
}
if(threads > 1) {
sb.append(" -threads ");
sb.append(threads);
}
sb.append(" -p mongodb.url=");
sb.append(mongoDbUrl);
if(bulkSize > 1) {
sb.append(" -bulk ");
sb.append(bulkSize);
}
return sb.toString();
}
@Override
public String getBinaryDirectory() {
return binaryDirectory;
}
@Override
public String getBinaryFile() {
return binaryFile;
}
@Override
public Integer getInsertStart() {
return insertStart;
}
@Override
public Integer getInsertCount() {
return insertCount;
}
@Override
public String getWorkingDirectory() {
return workingDirectory;
}
@Override
public void setBinaryDirectory(String binaryDirectory) {
this.binaryDirectory = binaryDirectory;
}
@Override
public void setBinaryFile(String binaryFile) {
this.binaryFile = binaryFile;
}
@Override
public void setInsertStart(Integer insertStart) {
this.insertStart = insertStart;
}
@Override
public void setInsertCount(Integer insertCount) {
this.insertCount = insertCount;
}
@Override
public void setWorkingDirectory(String workingDirectory) {
this.workingDirectory = workingDirectory;
}
@Override
public String getDatabaseUrl() {
return mongoDbUrl;
}
@Override
public void setDatabaseUrl(String mongoDbUrl) {
if(mongoDbUrl == null) {
return;
}
if(!mongoDbUrl.startsWith("mongodb://") && !mongoDbUrl.contains("//")) {
mongoDbUrl = "mongodb://".concat(mongoDbUrl);
}
this.mongoDbUrl = mongoDbUrl;
}
@Override
public Integer getPhase() {
return phase;
}
public void setPhase(Integer phase) throws TestException {
switch(phase) {
case PHASE_LOAD:
case PHASE_RUN:
break;
default:
throw new TestException("invalid phase");
}
this.phase = phase;
}
public Integer getThreads() {
return threads;
}
public void setThreads(Integer threads) {
this.threads = threads;
}
public Integer getBulkSize() {
return bulkSize;
}
public void setBulkSize(Integer bulkSize) {
this.bulkSize = bulkSize;
}
public String getWorkloadFilePath() {
return workloadFilePath;
}
public void setWorkloadFilePath(String workloadFilePath) {
this.workloadFilePath = workloadFilePath;
}
}