package org.deephacks.confit;
import org.deephacks.confit.model.Bean;
import org.deephacks.confit.test.JUnitUtils;
import org.deephacks.confit.test.JUnitUtils.ConfigClass;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;
public class BigBeans {
public static final File generatedDir = new File("/tmp/"+ UUID.randomUUID().toString());
public static List<Bean> createBeans(TestSize size, ConfigContext ctx) {
List<Bean> beans = new ArrayList<>();
Set<ConfigClass> generatedClasses = JUnitUtils.generate(size.getMinilang(), size.getNumprops(), size.getNumvalues());
Set<Class<?>> classes = JUnitUtils.compile(generatedClasses, generatedDir);
ctx.register(classes.toArray(new Class[0]));
for (ConfigClass cls : generatedClasses) {
beans.addAll(cls.getBeans());
}
return beans;
}
public static enum TestSize {
/**
* - creates 1000 A, 2000 B and 300 C instances.
* - Assign 200 random A instances to 10 random B references
* - Assign 3 random A instances to 300 random C references
* - Assign 200 random B instances to 10 random C references
*/
SMALL("A=1000, B=200$10, C=3$300; B=2000, C=200$10; C=30", 10, 10),
MEDIM("A=100000, B=200$10, C=3$300; B=20000, C=200$10; C=300", 10, 10),
BIG("A=1000000, B=200$10, C=3$300; B=200000, C=200$10; C=3000", 10, 10);
private final String minilang;
private final int numprops;
private final int numvalues;
private TestSize(String minilang, int numprops, int numvalues) {
this.minilang = minilang;
this.numprops = numprops;
this.numvalues = numvalues;
}
public String getMinilang() {
return minilang;
}
public int getNumprops() {
return numprops;
}
public int getNumvalues() {
return numvalues;
}
}
}