You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2005/08/05 01:30:47 UTC

cvs commit: jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler TCPSampler.java

sebb        2005/08/04 16:30:47

  Modified:    src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler
                        TCPSampler.java
  Log:
  Use ThreadListener rather than TestListener to close socket at end
  
  Revision  Changes    Path
  1.13      +20 -75    jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java
  
  Index: TCPSampler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- TCPSampler.java	12 Jul 2005 20:50:55 -0000	1.12
  +++ TCPSampler.java	4 Aug 2005 23:30:47 -0000	1.13
  @@ -1,5 +1,5 @@
   /*
  - * Copyright 2003-2004 The Apache Software Foundation.
  + * Copyright 2003-2005 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.
  @@ -26,19 +26,15 @@
   import java.net.Socket;
   import java.net.UnknownHostException;
   import java.util.HashMap;
  -import java.util.HashSet;
  -import java.util.Iterator;
   import java.util.Map;
   import java.util.Properties;
  -import java.util.Set;
   
   import org.apache.jmeter.config.ConfigTestElement;
   import org.apache.jmeter.util.JMeterUtils;
  -import org.apache.jmeter.engine.event.LoopIterationEvent;
   import org.apache.jmeter.samplers.AbstractSampler;
   import org.apache.jmeter.samplers.Entry;
   import org.apache.jmeter.samplers.SampleResult;
  -import org.apache.jmeter.testelement.TestListener;
  +import org.apache.jmeter.testelement.ThreadListener;
   import org.apache.jorphan.logging.LoggingManager;
   import org.apache.log.Logger;
   
  @@ -46,7 +42,7 @@
    * A sampler which understands Tcp requests.
    * 
    */
  -public class TCPSampler extends AbstractSampler implements TestListener {
  +public class TCPSampler extends AbstractSampler implements ThreadListener {
   	private static final Logger log = LoggingManager.getLoggerForClass();
   
   	public final static String SERVER = "TCPSampler.server"; //$NON-NLS-1$
  @@ -67,9 +63,6 @@
   
   	private final static String ERRKEY = "ERR"; //$NON-NLS-1$ key for HashMap
   
  -	private static Set allSockets = new HashSet();// Keep track of connections
  -													// to allow close
  -
   	// If set, this is the regex that is used to extract the status from the
   	// response
   	// NOT implemented yet private final static String STATUS_REGEX =
  @@ -142,7 +135,6 @@
   			log.debug(this + "  Timeout " + getTimeout() + " NoDelay " + getNoDelay()); //$NON-NLS-1$
   			log.debug("Created new connection " + con); //$NON-NLS-1$
   			cp.put(TCPKEY, con);
  -			allSockets.add(con);// Save so can be closed
   		} catch (UnknownHostException e) {
   			log.warn("Unknown host for " + getLabel(), e);//$NON-NLS-1$
   			cp.put(ERRKEY, e.toString());
  @@ -332,69 +324,22 @@
   		return true;
   	}
   
  -	private void disconnectAll() {
  -		synchronized (allSockets) {
  -			Iterator i = allSockets.iterator();
  -			while (i.hasNext()) {
  -				Socket socket = (Socket) i.next();
  -				try {
  -					socket.close();
  -				} catch (IOException e) {
  -					log.warn("Error closing socket ", e);
  -				} finally {
  -					i.remove();
  -				}
  -			}
  -		}
  -	}
  -
  -	/*
  -	 * (non-Javadoc)
  -	 * 
  -	 * @see org.apache.jmeter.testelement.TestListener#testStarted()
  -	 */
  -	public void testStarted() // Only called once per class?
  -	{
  -		log.debug(this + " test started");
  -	}
  +    public void threadStarted() {
  +        log.debug("Thread Started");
  +    }
  +
  +    public void threadFinished() {
  +        log.debug("Thread Finished");
  +        Map cp = (Map) tp.get();
  +        Socket con = (Socket) cp.remove(TCPKEY);
  +        if (con != null) {
  +            log.debug(this + " Closing connection " + con); //$NON-NLS-1$
  +            try {
  +                con.close();
  +            } catch (IOException e) {
  +                log.warn("Error closing socket "+e);
  +            }
  +        }
   
  -	/*
  -	 * (non-Javadoc)
  -	 * 
  -	 * @see org.apache.jmeter.testelement.TestListener#testEnded()
  -	 */
  -	public void testEnded() // Only called once per class?
  -	{
  -		log.debug(this + " test ended");
  -		disconnectAll();
  -	}
  -
  -	/*
  -	 * (non-Javadoc)
  -	 * 
  -	 * @see org.apache.jmeter.testelement.TestListener#testStarted(java.lang.String)
  -	 */
  -	public void testStarted(String host) {
  -		log.debug(this + " test started on " + host);
  -	}
  -
  -	/*
  -	 * (non-Javadoc)
  -	 * 
  -	 * @see org.apache.jmeter.testelement.TestListener#testEnded(java.lang.String)
  -	 */
  -	public void testEnded(String host) {
  -		log.debug(this + " test ended on " + host);
  -		disconnectAll();
  -
  -	}
  -
  -	/*
  -	 * (non-Javadoc)
  -	 * 
  -	 * @see org.apache.jmeter.testelement.TestListener#testIterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
  -	 */
  -	public void testIterationStart(LoopIterationEvent event) {
  -		log.debug(this + " test iteration start on " + event.getIteration());
  -	}
  +    }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org