/*
* Copyright 2013 VMware and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springsource.loaded.perf.test;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.junit.Ignore;
import org.junit.Test;
import org.springsource.loaded.test.SpringLoadedTests;
import org.springsource.loaded.test.infra.TestClassLoader;
/**
* Check the performance of weaving code.
*
* @author Andy Clement
* @since 1.1.5
*/
public class WeavingPerformanceTests extends SpringLoadedTests {
protected String ExpressionsJar = "../testdata/lib/spring-expression-4.0.0.M3.jar";
/**
* Work in progress...
*
* Process a jar file and pretend that everything in it is reloadable. How long does it take?
*
* Possible approaches here:
* - load all the types through a reloading classloader?
* This will not be testing the agent specifically, just the lower level infrastructure
* - Run this test inside a JVM that has reloading turned on
* This would test the agent.
*
*
*/
@Ignore
@Test
public void jar() throws Exception {
TestClassLoader tcl = new TestClassLoader(toURLs(ExpressionsJar), this.getClass().getClassLoader());
ZipFile zf = new ZipFile(ExpressionsJar);
Enumeration<? extends ZipEntry> entries = zf.entries();
while (entries.hasMoreElements()) {
ZipEntry ze = entries.nextElement();
System.out.println(ze.getName());
String name = ze.getName();
if (name.endsWith(".class")) {
name = name.substring(0,name.length()-6);
tcl.loadClass(name.replaceAll("/","."));
}
}
// URL url = tcl.findResource("data/SimpleClass.class");
// Assert.assertNotNull(url);
// url = tcl.findResource("data/MissingClass.class");
// Assert.assertNull(url);
// TypeRegistry typeRegistry = getTypeRegistry("data.SimpleClass");
// byte[] sc = loadBytesForClass("data.SimpleClass");
// ReloadableType rtype = new ReloadableType("data.SimpleClass", sc, 1, typeRegistry, null);
//
// assertEquals(1, rtype.getId());
// assertEquals("data.SimpleClass", rtype.getName());
// assertEquals("data/SimpleClass", rtype.getSlashedName());
// assertNotNull(rtype.getTypeDescriptor());
// assertEquals(typeRegistry, rtype.getTypeRegistry());
}
}