fixed test issue, made tests simpler, added default Main
This commit is contained in:
parent
254fef17af
commit
dab266b9e3
18 changed files with 58 additions and 149 deletions
|
|
@ -46,3 +46,6 @@ dependencies{
|
|||
testCompile 'javax.annotation:jsr250-api:1.0'
|
||||
}
|
||||
|
||||
springBoot {
|
||||
mainClass = "yooze.application.YoozeServer"
|
||||
}
|
||||
|
|
@ -10,6 +10,11 @@ import yooze.domain.ClassModel;
|
|||
public class ClassCache {
|
||||
private final Map<String, ClassModel> entries = new ConcurrentHashMap<String, ClassModel>();
|
||||
private InclusionDecider inclusionDecider;
|
||||
private final static ClassCache instance = new ClassCache();
|
||||
|
||||
private ClassCache() {
|
||||
|
||||
}
|
||||
|
||||
public boolean contains(String classname) {
|
||||
return entries.containsKey(classname);
|
||||
|
|
@ -47,4 +52,8 @@ public class ClassCache {
|
|||
this.inclusionDecider = inclusionDecider;
|
||||
}
|
||||
|
||||
public static ClassCache getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,9 +22,15 @@ public class ClassModelBuilder {
|
|||
private static Logger log = LoggerFactory.getLogger(ClassModelBuilder.class);
|
||||
|
||||
private ClassPool pool;
|
||||
private InclusionDecider inclusionDecider;
|
||||
private final InclusionDecider inclusionDecider;
|
||||
private ClassCache classCache;
|
||||
|
||||
public ClassModelBuilder(InclusionDecider inclusionDecider) {
|
||||
this.inclusionDecider = inclusionDecider;
|
||||
classCache = ClassCache.getInstance();
|
||||
classCache.setInclusionDecider(inclusionDecider);
|
||||
}
|
||||
|
||||
public ClassModel scanClassOrSkip(String className) {
|
||||
if (inclusionDecider.shouldSkip(className))
|
||||
return null;
|
||||
|
|
@ -55,6 +61,7 @@ public class ClassModelBuilder {
|
|||
resolveMethodReferences();
|
||||
return model;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
System.out.println(e.getClass().getName() + ":" + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
|
|
@ -110,15 +117,8 @@ public class ClassModelBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
public void setInclusionDecider(InclusionDecider inclusionDecider) {
|
||||
this.inclusionDecider = inclusionDecider;
|
||||
}
|
||||
|
||||
public void setPool(ClassPool pool) {
|
||||
this.pool = pool;
|
||||
}
|
||||
|
||||
public void setClassCache(ClassCache classCache) {
|
||||
this.classCache = classCache;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,12 @@ public class GraphBuilder {
|
|||
|
||||
Graph graph = createClassDependencyGraph(pool, cpList, className, e);
|
||||
graph.setName(archiveFile.getName());
|
||||
|
||||
// leave ClassPool in original state, because getDefault will always
|
||||
// return the same instance
|
||||
for (ClassPath cp : cpList) {
|
||||
pool.removeClassPath(cp);
|
||||
}
|
||||
return graph;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,8 +33,7 @@ public class Yooze {
|
|||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageExcludePatterns(packageExcludePatterns);
|
||||
i.setPackageIncludePatterns(packageIncludePatterns);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
libDirectoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
Graph graph = libDirectoryBuilder.build(archive, startingClass);
|
||||
|
|
|
|||
|
|
@ -109,17 +109,15 @@ public class YoozeServer {
|
|||
|
||||
@PostConstruct
|
||||
public void startup() throws IOException {
|
||||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageExcludePatterns("java\\.");
|
||||
i.setPackageIncludePatterns("org");
|
||||
InclusionDecider inclusionDecider = new InclusionDecider();
|
||||
inclusionDecider.setPackageExcludePatterns("java\\.");
|
||||
inclusionDecider.setPackageIncludePatterns("org");
|
||||
GraphBuilder directoryBuilder = GraphBuilderFactory.getJarBuilder();
|
||||
classCache = new ClassCache();
|
||||
classCache.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setClassCache(classCache);
|
||||
classCache = ClassCache.getInstance();
|
||||
classCache.setInclusionDecider(inclusionDecider);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(inclusionDecider);
|
||||
directoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
raw = directoryBuilder.build("src/test/resources/commons-io-1.4.jar", null);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package yooze.domain;
|
||||
|
||||
import javassist.CtClass;
|
||||
import yooze.ClassCache;
|
||||
|
||||
public class ParameterModel {
|
||||
private ClassModel type;
|
||||
|
|
@ -8,10 +9,10 @@ public class ParameterModel {
|
|||
|
||||
public ParameterModel(CtClass typeAsCtClass) {
|
||||
String classname = typeAsCtClass.getName();
|
||||
// type = ClassCache.get(classname);
|
||||
// if (type == null) {
|
||||
// type = ClassCache.createNewDummyModel(classname);
|
||||
// }
|
||||
type = ClassCache.getInstance().get(classname);
|
||||
if (type == null) {
|
||||
type = ClassCache.getInstance().createNewDummyModel(classname);
|
||||
}
|
||||
name = "";// javassist doesn't give me this (?)
|
||||
}
|
||||
|
||||
|
|
|
|||
2
src/main/resources/META-INF/MANIFEST.MF
Normal file
2
src/main/resources/META-INF/MANIFEST.MF
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Manifest-Version: 1.0
|
||||
Main-Class: yooze.application.YoozeServer
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
package yooze;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class Config {
|
||||
private File earFile;
|
||||
private File tgzFile;
|
||||
|
||||
public void setEarFile(File earFile) {
|
||||
this.earFile = earFile;
|
||||
}
|
||||
|
||||
public File getEarFile() {
|
||||
return earFile;
|
||||
}
|
||||
|
||||
public File getTgzFile() {
|
||||
return tgzFile;
|
||||
}
|
||||
|
||||
public void setTgzFile(File tgzFile) {
|
||||
this.tgzFile = tgzFile;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -7,32 +7,20 @@ import java.io.IOException;
|
|||
import junit.framework.Assert;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import yooze.application.GraphBuilderFactory;
|
||||
import yooze.domain.ClassModel;
|
||||
import yooze.domain.Graph;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:applicationContext-test.xml")
|
||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public class GraphTest {
|
||||
|
||||
@Test
|
||||
public void buildGraph() throws IOException {
|
||||
// new Yooze("/tmp/test").createNeoGraph("target/test-classes",
|
||||
// ".*?.Class.");
|
||||
GraphBuilder libDirectoryBuilder = GraphBuilderFactory.getClassesDirectoryBuilder();
|
||||
|
||||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageIncludePatterns(".*?.Class.");
|
||||
i.setPackageExcludePatterns("");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
libDirectoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
Graph graph = libDirectoryBuilder.build("target/test-classes", "yooze.Class1");
|
||||
|
|
|
|||
|
|
@ -4,25 +4,14 @@ import java.io.FileOutputStream;
|
|||
import java.io.IOException;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.core.io.DefaultResourceLoader;
|
||||
|
||||
import yooze.application.GraphBuilderFactory;
|
||||
import yooze.domain.Graph;
|
||||
import yooze.output.DotPrinter;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:applicationContext-test.xml")
|
||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public class LargePackageTest {
|
||||
|
||||
@Autowired
|
||||
private Config config;
|
||||
|
||||
@Test
|
||||
public void largePackage() throws IOException {
|
||||
GraphBuilder earBuilder = GraphBuilderFactory.getEarBuilder();
|
||||
|
|
@ -30,22 +19,14 @@ public class LargePackageTest {
|
|||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageIncludePatterns("");
|
||||
i.setPackageExcludePatterns("java.*");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
earBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
Graph graph = earBuilder.build(config.getEarFile(), "java.lang.String");
|
||||
Graph graph = earBuilder.build(new DefaultResourceLoader().getResource("classpath:examples.ear").getFile(),
|
||||
"java.lang.String");
|
||||
DotPrinter dotPrinter = new DotPrinter(new FileOutputStream("/tmp/example.dot"));
|
||||
dotPrinter.print(graph);
|
||||
dotPrinter.close();
|
||||
}
|
||||
|
||||
public Config getConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public void setConfig(Config config) {
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,19 +10,11 @@ import org.codehaus.jackson.JsonGenerator;
|
|||
import org.codehaus.jackson.map.ObjectMapper;
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import yooze.application.GraphBuilderFactory;
|
||||
import yooze.domain.MethodModel;
|
||||
import yooze.dto.MethodDto;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:applicationContext-test.xml")
|
||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public class MethodReferencesTest {
|
||||
|
||||
@After
|
||||
|
|
@ -36,8 +28,7 @@ public class MethodReferencesTest {
|
|||
|
||||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageIncludePatterns("yooze.Class.*");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
directoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
directoryBuilder.build("target/test-classes", "yooze.Class1");
|
||||
|
|
|
|||
|
|
@ -6,34 +6,25 @@ import java.io.IOException;
|
|||
import java.util.ArrayList;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.core.io.DefaultResourceLoader;
|
||||
|
||||
import yooze.application.GraphBuilderFactory;
|
||||
import yooze.domain.ClassModel;
|
||||
import yooze.domain.Graph;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:applicationContext-test.xml")
|
||||
public class TgzBuilderTest {
|
||||
|
||||
@Autowired
|
||||
private Config config;
|
||||
|
||||
@Test
|
||||
public void tgzBuilder() throws IOException {
|
||||
GraphBuilder tgzBuilder = GraphBuilderFactory.getDefaultTgzBuilder();
|
||||
|
||||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageIncludePatterns("nl.*");
|
||||
i.setPackageExcludePatterns("");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
i.setPackageIncludePatterns("nl\\.");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
tgzBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
Graph graph = tgzBuilder.build(config.getTgzFile(), "nl.jssl.jas.Main");
|
||||
Graph graph = tgzBuilder.build(new DefaultResourceLoader().getResource("classpath:agent.tar.gz").getFile(),
|
||||
"nl.jssl.jas.Main");
|
||||
|
||||
ArrayList<String> names = new ArrayList<String>();
|
||||
|
||||
|
|
@ -43,7 +34,4 @@ public class TgzBuilderTest {
|
|||
assertTrue(names.contains("nl.jssl.jas.Main"));
|
||||
}
|
||||
|
||||
public void setConfig(Config config) {
|
||||
this.config = config;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@ import java.io.IOException;
|
|||
import junit.framework.Assert;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import yooze.ClassModelBuilder;
|
||||
import yooze.GraphBuilder;
|
||||
|
|
@ -16,8 +13,6 @@ import yooze.InclusionDecider;
|
|||
import yooze.application.GraphBuilderFactory;
|
||||
import yooze.domain.Graph;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:applicationContext-test.xml")
|
||||
public class DotPrinterTest {
|
||||
|
||||
@Test
|
||||
|
|
@ -26,8 +21,7 @@ public class DotPrinterTest {
|
|||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageExcludePatterns(".*?Class4");
|
||||
i.setPackageIncludePatterns(".*?.Class.");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
directoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
Graph graph = directoryBuilder.build("target/test-classes", "yooze.Class1");
|
||||
|
||||
|
|
@ -57,10 +51,8 @@ public class DotPrinterTest {
|
|||
GraphBuilder directoryBuilder = GraphBuilderFactory.getClassesDirectoryBuilder();
|
||||
|
||||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageExcludePatterns("");
|
||||
i.setPackageIncludePatterns("yooze.Class4");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
directoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
Graph graph = directoryBuilder.build("target/test-classes", "yooze.Class4");
|
||||
|
|
|
|||
|
|
@ -22,8 +22,7 @@ public class JsonPrinterTest {
|
|||
InclusionDecider i = new InclusionDecider();
|
||||
i.setPackageExcludePatterns(".*?Class4");
|
||||
i.setPackageIncludePatterns(".*?.Class.");
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder();
|
||||
classModelBuilder.setInclusionDecider(i);
|
||||
ClassModelBuilder classModelBuilder = new ClassModelBuilder(i);
|
||||
directoryBuilder.setClassModelBuilder(classModelBuilder);
|
||||
|
||||
Graph graph = directoryBuilder.build("target/test-classes", "yooze.Class1");
|
||||
|
|
|
|||
|
|
@ -8,24 +8,16 @@ import java.io.IOException;
|
|||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.core.io.DefaultResourceLoader;
|
||||
|
||||
import yooze.Config;
|
||||
import yooze.InspectableClasspath;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:applicationContext-test.xml")
|
||||
public class EarScannerTest {
|
||||
|
||||
@Autowired
|
||||
private Config config;
|
||||
|
||||
@Test
|
||||
public void scanner() throws IOException {
|
||||
List<InspectableClasspath> classpaths = new ArchiveScanner(new WarScanner()).scanArchive(config.getEarFile());
|
||||
List<InspectableClasspath> classpaths = new ArchiveScanner(new WarScanner())
|
||||
.scanArchive(new DefaultResourceLoader().getResource("classpath:examples.ear").getFile());
|
||||
for (InspectableClasspath path : classpaths) {
|
||||
if (path instanceof DirClassPath) {
|
||||
List<String> classes = ((InspectableClasspath) path).getClasses();
|
||||
|
|
@ -40,9 +32,4 @@ public class EarScannerTest {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setConfig(Config config) {
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public class LibScannerTest {
|
|||
@Test
|
||||
public void directoryWithoutJars_isNotAClasspathEntry() throws IOException {
|
||||
LibScanner libScanner = new LibScanner();
|
||||
List<InspectableClasspath> classpathList = libScanner.scanArchive("src");
|
||||
List<InspectableClasspath> classpathList = libScanner.scanArchive("src/main");
|
||||
assertTrue("This should be empty", classpathList.isEmpty());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
<bean id="config" class="yooze.Config">
|
||||
<property name="earFile" value="classpath:examples.ear"></property>
|
||||
<property name="tgzFile" value="classpath:agent.tar.gz"></property>
|
||||
</bean>
|
||||
</beans>
|
||||
Loading…
Add table
Reference in a new issue