org.testng.internal.remote.SlavePool Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testng Show documentation
Show all versions of testng Show documentation
Testing framework for Java
package org.testng.internal.remote;
import org.testng.collections.Maps;
import org.testng.remote.ConnectionInfo;
import java.io.IOException;
import java.net.Socket;
import java.util.Map;
/**
* This class maintains a pool of slaves (represented by sockets).
*
* @author cbeust
*/
public class SlavePool {
private static SocketLinkedBlockingQueue m_hosts = new SocketLinkedBlockingQueue();
private static Map m_connectionInfos = Maps.newHashMap();
public void addSlaves(Socket[] slaves) throws IOException {
for (Socket s : slaves) {
addSlave(s);
}
}
public void addSlave(Socket s) {
if( s==null)
return;
ConnectionInfo ci = new ConnectionInfo();
ci.setSocket(s);
addSlave(s, ci);
}
private void addSlave(Socket s, ConnectionInfo ci) {
m_hosts.add(s);
m_connectionInfos.put(s, ci);
}
public ConnectionInfo getSlave() {
ConnectionInfo result = null;
Socket host = null;
try {
host = m_hosts.take();
result = m_connectionInfos.get(host);
}
catch (InterruptedException e) {
e.printStackTrace();
}
return result;
}
public void returnSlave(ConnectionInfo slave) throws IOException {
m_hosts.add(slave.getSocket());
// ConnectionInfo ci = m_connectionInfos.remove(slave.socket);
// ci.oos.close();
// ci.ois.close();
// addSlave(slave.socket);
}
}