package com.constellio.data.test;
import java.io.IOException;
import java.util.Random;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.util.NamedList;
import com.constellio.data.dao.services.solr.SolrServerFactory;
import com.constellio.data.io.concurrent.filesystem.AtomicFileSystem;
public class FaultInjectorSolrServerFactory implements SolrServerFactory {
SolrServerFactory nestedSolrServerFactory;
public FaultInjectorSolrServerFactory(SolrServerFactory nestedSolrServerFactory) {
this.nestedSolrServerFactory = nestedSolrServerFactory;
}
@Override
public SolrClient newSolrServer(String core) {
SolrClient nestedSolrServer = nestedSolrServerFactory.newSolrServer(core);
return nestedSolrServer;
//return new FaultInjectionSolrServer(nestedSolrServer);
}
@Override
public void clear() {
nestedSolrServerFactory.clear();
}
public static class FaultInjectionSolrServer extends SolrClient {
SolrClient nestedSolrServer;
private Random random = new Random();
public FaultInjectionSolrServer(SolrClient nestedSolrServer) {
this.nestedSolrServer = nestedSolrServer;
}
@Override
public NamedList<Object> request(SolrRequest request, String collection)
throws SolrServerException, IOException {
//if (random.nextInt(10) == 0) {
// throw new RemoteSolrException(404, "Random injected fault", new RuntimeException());
//}
return nestedSolrServer.request(request);
}
@Override
public void close() throws IOException {
nestedSolrServer.close();
}
}
@Override
public AtomicFileSystem getConfigFileSystem(String core) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Not implemented yet");
}
@Override
public AtomicFileSystem getConfigFileSystem() {
throw new UnsupportedOperationException("TODO");
}
@Override
public void reloadSolrServer(String core) {
throw new UnsupportedOperationException("TODO");
}
}