package com.limegroup.gnutella;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import com.limegroup.gnutella.messages.vendor.CapabilitiesVM;
import junit.framework.Test;
public class ClientSideFirewallStatusTest extends ClientSideTestCase {
public ClientSideFirewallStatusTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(ClientSideFirewallStatusTest.class);
}
@Override
public int getNumberOfPeers() {
return 1;
}
public void testFirewalledNoFWT() throws Exception {
// trigger a capabilities resend
injector.getInstance(ConnectionManager.class).sendUpdatedCapabilities();
CapabilitiesVM cvm = BlockingConnectionUtils.getFirstInstanceOfMessageType(testUP[0], CapabilitiesVM.class);
assertFalse(cvm.canAcceptIncomingTCP());
assertFalse(cvm.canDoFWT());
}
public void testIncomingTriggersStatusUpdate() throws Exception {
// nothing arrives for a while
assertNull(BlockingConnectionUtils.getFirstInstanceOfMessageType(testUP[0], CapabilitiesVM.class));
SocketAddress me = new InetSocketAddress("127.0.0.1",SERVER_PORT);
Socket s = new Socket();
s.connect(me);
OutputStream os = s.getOutputStream();
os.write("CONNECT \n\n".getBytes());
os.flush();
os.close();
Thread.sleep(50);
CapabilitiesVM cvm = BlockingConnectionUtils.getFirstInstanceOfMessageType(testUP[0], CapabilitiesVM.class);
assertTrue(cvm.canAcceptIncomingTCP());
assertFalse(cvm.canDoFWT());
}
}