Package byd.wms.loader.weaving

Source Code of byd.wms.loader.weaving.WmsTransformerNGTest

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package byd.wms.loader.weaving;

import cn.com.bricks.dynamic.weaving.utils.WeavingConfigUtil;
import cn.com.bricks.dynamic.weaving.UnitTestTransformer;
import cn.com.bricks.custom.loader.WmsClassLoader;
import java.io.PrintWriter;
import java.lang.instrument.Instrumentation;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.objectweb.asm.util.ASMifier;
import org.objectweb.asm.util.TraceClassVisitor;
import static org.testng.Assert.*;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

/**
*
* @author kete
*/
public class WmsTransformerNGTest {

    public WmsTransformerNGTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @BeforeMethod
    public void setUpMethod() throws Exception {
    }

    @AfterMethod
    public void tearDownMethod() throws Exception {
    }

    /**
     * premain方法的测试 (属于类WmsTransformer)。
     */
//    @Test
    public void testPremain() {
        System.out.println("premain");
        String agentArgs = "";
        Instrumentation inst = null;
        UnitTestTransformer.premain(agentArgs, inst);
        // TODO 检查生成的测试代码并删除失败的默认调用。
        fail("\u6d4b\u8bd5\u7528\u4f8b\u4e3a\u539f\u578b\u3002");
    }

    /**
     * transform方法的测试 (属于类WmsTransformer)。
     */
    @Test(invocationCount=1000,threadPoolSize=2)
    @SuppressWarnings("unchecked")
    public void testTransform() throws Exception {
        System.out.println("transform");
        WmsClassLoader loader = new WmsClassLoader(this.getClass().getClassLoader());
        String className = t.TU.class.getName().replace(".", "/");
        Class<?> classBeingRedefined = null;
        Class c = Class.forName(className.replace("/", "."));
        byte[] classfileBuffer = loader.loadClassData(className);
        UnitTestTransformer instance = new UnitTestTransformer();
        byte[] expResult = null;
        byte[] result = instance.transform(c.getClassLoader(), className, classBeingRedefined, null, classfileBuffer);
        Class r = loader.getInstance(className.replace("/", "."), result);
//        r.getConstructor(new Class[]{String.class});
//        System.out.println(r.getMethods()[0].toString());
        r.getMethod("test", new Class[]{String.class}).invoke(r.newInstance(), new Object[]{"teeeee"});
//        r.getMethod("test1", new Class[]{String.class, boolean.class}).invoke(r.newInstance(), new Object[]{className + "test1", true});
//        r.getMethod("test3", new Class[]{String.class, String.class}).invoke(r.newInstance(), new Object[]{className, "test222"});
//
//        r.getMethod("test4", new Class[]{String.class, String.class, String[].class}).invoke(r.newInstance(), new Object[]{className, "test222", new String[]{"teeeee"}});
//
//        r.getMethod("getOperaction", new Class[]{IWeavingChecker.class}).invoke(r.newInstance(), new Object[]{IWeavingChecker.class});
//        Class kk = loader.findClass(TestXMLOutput.class.getName());
//        kk.getMethod("output").invoke(kk.newInstance());
        //        assertEquals(result, expResult);
        // TODO 检查生成的测试代码并删除失败的默认调用。
//        fail("\u6d4b\u8bd5\u7528\u4f8b\u4e3a\u539f\u578b\u3002");
    }

//    @Test
    public void test() {
//        System.out.println(Pattern.matches("(([\\w-_]*[/]+)*wms_[^(util)][.]jar)", "wms_stock.jar"));
//        System.out.println(Pattern.matches("(get[\\w]*\\[/]+)", "getMacd(Ljava/lang/String;)"));
        System.out.println(WeavingConfigUtil.INSTANCE.isWeavingJar("/media/WinD/softdev/kopnew/sourcecodes/wms-trunk/lib/wms_util.jar"));
//        System.out.println(WeavingConfigUtil.INSTANCE.isNoWeavingClassAndPkgs("byd/wms/cms/service/AutoCompleteInputServiceNG$2"));
//        System.out.println(WeavingConfigUtil.INSTANCE.isNoWeavingMethod("get"));
//        System.out.println((33 & org.springframework.asm.Opcodes.ACC_STATIC));
    }

//    @Test
    public void writeByte() {
        try {
//            ClassReader r = new ClassReader("byd/wms/loader/weaving/TestXMLOutput");
//            System.out.println(new String(r.b));
            System.out.println(
            ClassLoader.getSystemClassLoader());
            ASMifier mifier = new ASMifier();
//            TraceClassVisitor visitor = new TraceClassVisitor(new PrintWriter(System.out));
//            visitor.visitSource(t.TU.class.getName(), "debug");
           
            String[] args = new String[]{"-debug",t.TU.class.getName()};
            mifier.main(args);
        } catch (Exception ex) {
            Logger.getLogger(WmsTransformerNGTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
TOP

Related Classes of byd.wms.loader.weaving.WmsTransformerNGTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.