|
What this is
Other links
The source code// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/util/BeanShellServer.java,v 1.7 2004/03/30 18:08:09 sebb Exp $ /* * Copyright 2003-2004 The Apache Software Foundation. * * 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.apache.jmeter.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import junit.framework.TestCase; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements a BeanShell server to allow access to JMeter variables and methods. * * To enable, define the JMeter property: * beanshell.server.port (see JMeter.java) * beanshell.server.file (optional, startup file) * * @version $Revision: 1.7 $ Last updated: $Date: 2004/03/30 18:08:09 $ */ public class BeanShellServer implements Runnable { transient private static Logger log = LoggingManager.getLoggerForClass(); private final int serverport; private final String serverfile; /** * */ public BeanShellServer(int port,String file) { super(); serverfile=file;// can be the empty string serverport=port; } private BeanShellServer(){// do not use! super(); serverport=0; serverfile=""; } // For use by the server script private static String getprop(String s){ return JMeterUtils.getPropDefault(s,s); } private static void setprop(String s, String v){ JMeterUtils.getJMeterProperties().setProperty(s, v); } public void run(){ ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { Class Interpreter = loader.loadClass("bsh.Interpreter"); Object instance = Interpreter.newInstance(); Class string = String.class; Class object = Object.class; Method eval = Interpreter.getMethod( "eval", new Class[] {string}); Method setObj = Interpreter.getMethod( "set", new Class[] {string,object}); Method setInt = Interpreter.getMethod( "set", new Class[] {string,int.class}); Method source = Interpreter.getMethod( "source", new Class[] {string}); setObj.invoke(instance, new Object[] { "t",this }); setInt.invoke(instance, new Object[] { "portnum",new Integer(serverport) }); if (serverfile.length() > 0 ){ try { source.invoke(instance, new Object[]{serverfile}); } catch (InvocationTargetException e1) { log.warn("Could not source "+serverfile); //JDK1.4: Throwable t= e1.getCause(); //JDK1.4: if (t != null) log.warn(t.toString()); } } eval.invoke(instance, new Object[]{"setAccessibility(true);"}); eval.invoke(instance, new Object[]{"server(portnum);"}); } catch(ClassNotFoundException e ){ log.error("Beanshell Interpreter not found"); } catch (Exception e) { log.error("Problem starting BeanShell server ",e); } } public static class Test extends TestCase { //private static Logger log = LoggingManager.getLoggerForClass(); public Test() { super(); } public void testServer() throws Exception { BeanShellServer bshs = new BeanShellServer(9876,""); assertNotNull(bshs); // Not sure we can test anything else here } public void testProps() throws Exception { if (JMeterUtils.getJMeterProperties() != null){//Can't test standalone assertNotNull("Property user.dir should not be null",getprop("user.dir")); setprop("beanshelltest","xyz"); assertEquals("xyz",getprop("beanshelltest")); } } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.