Search in sources :

Example 21 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class TestOrderInterceptor method testOrder2.

@Test
public void testOrder2() throws Exception {
    final Member[] dest = channels[0].getMembers();
    final AtomicInteger value = new AtomicInteger(0);
    final Queue<Exception> exceptionQueue = new ConcurrentLinkedQueue<>();
    Runnable run = new Runnable() {

        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                try {
                    synchronized (channels[0]) {
                        channels[0].send(dest, Integer.valueOf(value.getAndAdd(1)), 0);
                    }
                } catch (Exception x) {
                    exceptionQueue.add(x);
                }
            }
        }
    };
    Thread[] threads = new Thread[5];
    for (int i = 0; i < threads.length; i++) {
        threads[i] = new Thread(run);
    }
    for (Thread thread : threads) {
        thread.start();
    }
    for (Thread thread : threads) {
        thread.join();
    }
    if (!exceptionQueue.isEmpty()) {
        Assert.fail("Exception while sending in threads: " + exceptionQueue.remove().toString());
    }
    Thread.sleep(5000);
    for (TestListener testListener : test) {
        Assert.assertFalse(testListener.fail);
    }
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Member(org.apache.catalina.tribes.Member) ChannelException(org.apache.catalina.tribes.ChannelException) Test(org.junit.Test)

Example 22 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class TestMemberImplSerialization method testUdpPort.

@Test
public void testUdpPort() throws Exception {
    byte[] md1 = m1.getData();
    byte[] md2 = m2.getData();
    Member a1 = MemberImpl.getMember(md1);
    Member a2 = MemberImpl.getMember(md2);
    Assert.assertTrue(a1.getUdpPort() == a2.getUdpPort());
    Assert.assertTrue(a1.getUdpPort() == udpPort);
}
Also used : Member(org.apache.catalina.tribes.Member) Test(org.junit.Test)

Example 23 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class SocketNioValidateSend method main.

public static void main(String[] args) throws Exception {
    Selector selector = Selector.open();
    Member mbr = new MemberImpl("localhost", 9999, 0);
    byte seq = 0;
    byte[] buf = new byte[50000];
    Arrays.fill(buf, seq);
    int len = buf.length;
    BigDecimal total = new BigDecimal((double) 0);
    BigDecimal bytes = new BigDecimal((double) len);
    NioSender sender = new NioSender();
    sender.setDestination(mbr);
    sender.setDirectBuffer(true);
    sender.setSelector(selector);
    sender.connect();
    sender.setMessage(buf);
    System.out.println("Writing to 9999");
    long start = 0;
    double mb = 0;
    boolean first = true;
    int count = 0;
    DecimalFormat df = new DecimalFormat("##.00");
    while (count < 100000) {
        if (first) {
            first = false;
            start = System.currentTimeMillis();
        }
        sender.setMessage(buf);
        int selectedKeys = 0;
        try {
            selectedKeys = selector.select(0);
        } catch (Exception e) {
            e.printStackTrace();
            continue;
        }
        if (selectedKeys == 0) {
            continue;
        }
        Iterator<SelectionKey> it = selector.selectedKeys().iterator();
        while (it.hasNext()) {
            SelectionKey sk = it.next();
            it.remove();
            try {
                int readyOps = sk.readyOps();
                sk.interestOps(sk.interestOps() & ~readyOps);
                if (sender.process(sk, false)) {
                    total = total.add(bytes);
                    sender.reset();
                    seq++;
                    Arrays.fill(buf, seq);
                    sender.setMessage(buf);
                    mb += ((double) len) / 1024 / 1024;
                    if (((++count) % 10000) == 0) {
                        long time = System.currentTimeMillis();
                        double seconds = ((double) (time - start)) / 1000;
                        System.out.println("Throughput " + df.format(mb / seconds) + " MB/seconds, total " + mb + " MB, total " + total + " bytes.");
                    }
                }
            } catch (Throwable t) {
                t.printStackTrace();
                return;
            }
        }
    }
    System.out.println("Complete, sleeping 15 seconds");
    Thread.sleep(15000);
}
Also used : SelectionKey(java.nio.channels.SelectionKey) NioSender(org.apache.catalina.tribes.transport.nio.NioSender) MemberImpl(org.apache.catalina.tribes.membership.MemberImpl) DecimalFormat(java.text.DecimalFormat) BigDecimal(java.math.BigDecimal) Member(org.apache.catalina.tribes.Member) Selector(java.nio.channels.Selector)

Example 24 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class SocketSend method main.

public static void main(String[] args) throws Exception {
    Member mbr = new MemberImpl("localhost", 9999, 0);
    ChannelData data = new ChannelData();
    data.setOptions(Channel.SEND_OPTIONS_BYTE_MESSAGE);
    data.setAddress(mbr);
    byte[] buf = new byte[8192 * 4];
    data.setMessage(new XByteBuffer(buf, false));
    buf = XByteBuffer.createDataPackage(data);
    int len = buf.length;
    System.out.println("Message size:" + len + " bytes");
    BigDecimal total = new BigDecimal((double) 0);
    BigDecimal bytes = new BigDecimal((double) len);
    try (Socket socket = new Socket("localhost", 9999)) {
        System.out.println("Writing to 9999");
        OutputStream out = socket.getOutputStream();
        long start = 0;
        double mb = 0;
        boolean first = true;
        int count = 0;
        DecimalFormat df = new DecimalFormat("##.00");
        while (count < 1000000) {
            if (first) {
                first = false;
                start = System.currentTimeMillis();
            }
            out.write(buf, 0, buf.length);
            mb += ((double) buf.length) / 1024 / 1024;
            total = total.add(bytes);
            if (((++count) % 10000) == 0) {
                long time = System.currentTimeMillis();
                double seconds = ((double) (time - start)) / 1000;
                System.out.println("Throughput " + df.format(mb / seconds) + " MB/seconds messages " + count + ", total " + mb + " MB, total " + total + " bytes.");
            }
        }
        out.flush();
        System.out.println("Complete, sleeping 5 seconds");
        Thread.sleep(5000);
    }
}
Also used : XByteBuffer(org.apache.catalina.tribes.io.XByteBuffer) MemberImpl(org.apache.catalina.tribes.membership.MemberImpl) OutputStream(java.io.OutputStream) DecimalFormat(java.text.DecimalFormat) BigDecimal(java.math.BigDecimal) ChannelData(org.apache.catalina.tribes.io.ChannelData) Member(org.apache.catalina.tribes.Member) Socket(java.net.Socket)

Example 25 with Member

use of org.apache.catalina.tribes.Member in project tomcat by apache.

the class DNSMembershipProvider method fetchMembers.

@Override
protected Member[] fetchMembers() {
    List<MemberImpl> members = new ArrayList<>();
    InetAddress[] inetAddresses = null;
    try {
        inetAddresses = InetAddress.getAllByName(dnsServiceName);
    } catch (UnknownHostException exception) {
        log.warn(sm.getString("dnsMembershipProvider.dnsError", dnsServiceName), exception);
    }
    if (inetAddresses != null) {
        for (InetAddress inetAddress : inetAddresses) {
            String ip = inetAddress.getHostAddress();
            byte[] id = md5.digest(ip.getBytes());
            // We found ourselves, ignore
            if (ip.equals(localIp)) {
                // Update the UID on initial lookup
                Member localMember = service.getLocalMember(false);
                if (localMember.getUniqueId() == CloudMembershipService.INITIAL_ID && localMember instanceof MemberImpl) {
                    ((MemberImpl) localMember).setUniqueId(id);
                }
                continue;
            }
            long aliveTime = -1;
            MemberImpl member = null;
            try {
                member = new MemberImpl(ip, port, aliveTime);
            } catch (IOException e) {
                log.error(sm.getString("kubernetesMembershipProvider.memberError"), e);
                continue;
            }
            member.setUniqueId(id);
            members.add(member);
        }
    }
    return members.toArray(new Member[0]);
}
Also used : UnknownHostException(java.net.UnknownHostException) MemberImpl(org.apache.catalina.tribes.membership.MemberImpl) ArrayList(java.util.ArrayList) IOException(java.io.IOException) InetAddress(java.net.InetAddress) Member(org.apache.catalina.tribes.Member)

Aggregations

Member (org.apache.catalina.tribes.Member)93 ChannelException (org.apache.catalina.tribes.ChannelException)28 FaultyMember (org.apache.catalina.tribes.ChannelException.FaultyMember)17 Test (org.junit.Test)17 IOException (java.io.IOException)16 MemberImpl (org.apache.catalina.tribes.membership.MemberImpl)15 ReceiverBase (org.apache.catalina.tribes.transport.ReceiverBase)11 ArrayList (java.util.ArrayList)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)10 UniqueId (org.apache.catalina.tribes.UniqueId)9 Serializable (java.io.Serializable)6 BigDecimal (java.math.BigDecimal)6 DecimalFormat (java.text.DecimalFormat)6 Response (org.apache.catalina.tribes.group.Response)6 ChannelData (org.apache.catalina.tribes.io.ChannelData)6 XByteBuffer (org.apache.catalina.tribes.io.XByteBuffer)6 SelectionKey (java.nio.channels.SelectionKey)4 Selector (java.nio.channels.Selector)4 Membership (org.apache.catalina.tribes.membership.Membership)4 StaticMember (org.apache.catalina.tribes.membership.StaticMember)4