You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.6 KiB
Java
67 lines
2.6 KiB
Java
package org.gcube.application.cms.usecases;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.gcube.application.cms.tests.TokenSetter;
|
|
import org.gcube.application.cms.tests.model.TestModel;
|
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
|
import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest;
|
|
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
|
import org.gcube.application.geoportal.common.utils.FileSets;
|
|
import org.gcube.application.geoportal.common.utils.StorageUtils;
|
|
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
|
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni;
|
|
|
|
@Slf4j
|
|
public class StressTest {
|
|
|
|
|
|
private static ExecutorService service = Executors.newFixedThreadPool(5);
|
|
|
|
public static void main(String[] args) throws FileNotFoundException {
|
|
TokenSetter.set("/gcube/devsec/devVRE");
|
|
AtomicLong executed=new AtomicLong(0);
|
|
|
|
AddSectionToConcessioneRequest request= FileSets.prepareRequest(
|
|
new StorageUtils(), Concessione.Paths.RELAZIONE,new File(TestModel.getBaseFolder(),"relazione.pdf"));
|
|
|
|
int numRequests=100000;
|
|
for(int i=0;i<numRequests;i++){
|
|
service.submit(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
try{
|
|
MongoConcessioni client=mongoConcessioni().build();
|
|
Concessione c =TestModel.prepareConcessione(1,1);
|
|
c.setNome("Stress test");
|
|
c.setDefaults();
|
|
c=client.createNew(c);
|
|
client.registerFileSet(c.getMongo_id(),request);
|
|
}catch(Throwable t){
|
|
System.err.println(t);
|
|
try {Thread.sleep(1000);} catch (InterruptedException i) {}
|
|
}finally {
|
|
log.info("Executed "+executed.incrementAndGet());
|
|
try {Thread.sleep(1000);} catch (InterruptedException i) {}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
try{
|
|
while(!service.awaitTermination(1, TimeUnit.MINUTES)){
|
|
log.info("Waiting termination, executed {} out of {}",executed.get(),numRequests);
|
|
}
|
|
}catch (InterruptedException e){
|
|
|
|
}
|
|
System.out.println("DONE");
|
|
}
|
|
}
|