Package pushy

Source Code of pushy.SocketOptionsTest

package pushy;

import pushy.modules.SocketModule;

import junit.framework.TestCase;
import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;

/**
* Tests for RemoteSocket socket options.
*
* Admittedly, these tests are a bit weak. They don't really verify that the
* option is being set on the Python object.
*/
public class SocketOptionsTest extends TestCase
{
    private Client       client;
    private SocketModule module;
    private PushyObject  object;
    private Socket       socket;

    public void setUp() throws IOException {
        client = new Client("local:");
        module = (SocketModule)client.getModule("socket");
        PushyObject socketMethod = (PushyObject)module.__getattr__("socket");
        object = (PushyObject)socketMethod.__call__();
        socket = new pushy.net.RemoteSocket(client, object);
    }

    public void tearDown() {
        try {
            socket.close();
        } catch (IOException e) {}
        client.close();
    }

    public void testSoLinger() throws IOException
    {
        socket.setSoLinger(false, 0);
        assertEquals(-1, socket.getSoLinger()); // off
        socket.setSoLinger(true, 0);
        assertEquals(0, socket.getSoLinger()); // on, linger=0
        socket.setSoLinger(true, 1);
        assertEquals(1, socket.getSoLinger()); // on, linger=1
    }

    public void testTcpNoDelay() throws IOException
    {
        socket.setTcpNoDelay(false);
        assertEquals(false, socket.getTcpNoDelay());
        socket.setTcpNoDelay(true);
        assertEquals(true, socket.getTcpNoDelay());
    }

    public void testTrafficClass() throws IOException
    {
        SocketModule module = (SocketModule)client.getModule("socket");
        int iptos_throughput = 0xe0; // IPTOS_CLASS_CS7
        socket.setTrafficClass(iptos_throughput);
        assertEquals(iptos_throughput, socket.getTrafficClass());
    }

    public void testSoTimeout() throws IOException
    {
        socket.setSoTimeout(0);
        assertEquals(0, socket.getSoTimeout());
        socket.setSoTimeout(10);
        assertEquals(10, socket.getSoTimeout());

        boolean threwSocketException = false;
        try {
            socket.setSoTimeout(-1);
        } catch (SocketException e) {
            threwSocketException = true;
        }
        assertTrue(threwSocketException);
    }

    // On Linux, the kernel will automagically double the buffer size for
    // you. Rather than checking Linux specifically, let's be a little more
    // rigorous and compare to the Python object.
    public void testSendBufferSize() throws IOException
    {
        socket.setSendBufferSize(4096);
        Object SOL_SOCKET = module.__getattr__("SOL_SOCKET");
        Object SO_SNDBUF = module.__getattr__("SO_SNDBUF");
        PushyObject getsockopt = (PushyObject)object.__getattr__("getsockopt");
        Object res = getsockopt.__call__(new Object[]{SOL_SOCKET, SO_SNDBUF});
        assertEquals(((Number)res).intValue(), socket.getSendBufferSize());
    }

    public void testReceiveBufferSize() throws IOException
    {
        socket.setReceiveBufferSize(4096);
        Object SOL_SOCKET = module.__getattr__("SOL_SOCKET");
        Object SO_RCVBUF = module.__getattr__("SO_RCVBUF");
        PushyObject getsockopt = (PushyObject)object.__getattr__("getsockopt");
        Object res = getsockopt.__call__(new Object[]{SOL_SOCKET, SO_RCVBUF});
        assertEquals(((Number)res).intValue(), socket.getReceiveBufferSize());
    }

    public void testOOBInline() throws IOException
    {
        socket.setOOBInline(false);
        assertFalse(socket.getOOBInline());
        socket.setOOBInline(true);
        assertTrue(socket.getOOBInline());
    }

    public void testKeepAlive() throws IOException
    {
        socket.setKeepAlive(false);
        assertFalse(socket.getKeepAlive());
        socket.setKeepAlive(true);
        assertTrue(socket.getKeepAlive());
    }

    public void testReuseAddress() throws IOException
    {
        socket.setReuseAddress(false);
        assertFalse(socket.getReuseAddress());
        socket.setReuseAddress(true);
        assertTrue(socket.getReuseAddress());
    }
}
TOP

Related Classes of pushy.SocketOptionsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.