blob: 0b29031824868af43e0c24842c63abf62f54be9c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.samplers;
import java.rmi.RemoteException;
import java.util.List;
import org.apache.jmeter.testelement.TestStateListener;
import org.apache.jmeter.util.JMeterUtils;
/**
* Implementation of remote sampler listener, also supports TestStateListener
*/
public class RemoteSampleListenerImpl extends java.rmi.server.UnicastRemoteObject
implements RemoteSampleListener, SampleListener, TestStateListener {
private static final long serialVersionUID = 240L;
private final TestStateListener testListener;
private final SampleListener sampleListener;
private static final int DEFAULT_LOCAL_PORT =
JMeterUtils.getPropDefault("client.rmi.localport", 0); // $NON-NLS-1$
public RemoteSampleListenerImpl(Object listener) throws RemoteException {
super(DEFAULT_LOCAL_PORT);
if (listener instanceof TestStateListener) {
testListener = (TestStateListener) listener;
} else {
testListener = null;
}
if (listener instanceof SampleListener) {
sampleListener = (SampleListener) listener;
} else {
sampleListener = null;
}
}
@Override
public void testStarted() {
if (testListener != null) {
testListener.testStarted();
}
}
@Override
public void testStarted(String host) {
if (testListener != null) {
testListener.testStarted(host);
}
}
@Override
public void testEnded() {
if (testListener != null) {
testListener.testEnded();
}
}
@Override
public void testEnded(String host) {
if (testListener != null) {
testListener.testEnded(host);
}
}
/**
* This method is called remotely and fires a list of samples events
* received locally. The function is to reduce network load when using
* remote testing.
*
* @param samples
* the list of sample events to be fired locally
*/
@Override
public void processBatch(List<SampleEvent> samples) {
if (samples != null && sampleListener != null) {
for (SampleEvent e : samples) {
sampleListener.sampleOccurred(e);
}
}
}
@Override
public void sampleOccurred(SampleEvent e) {
if (sampleListener != null) {
sampleListener.sampleOccurred(e);
}
}
/**
* A sample has started.
*/
@Override
public void sampleStarted(SampleEvent e) {
if (sampleListener != null) {
sampleListener.sampleStarted(e);
}
}
/**
* A sample has stopped.
*/
@Override
public void sampleStopped(SampleEvent e) {
if (sampleListener != null) {
sampleListener.sampleStopped(e);
}
}
}