Package org.fluentd.logger.util

Examples of org.fluentd.logger.util.MockFluentd


        msgpack.register(Event.class, Event.EventTemplate.INSTANCE);
        BufferPacker packer = msgpack.createBufferPacker();
        long timestamp = System.currentTimeMillis();

        // start mock server
        MockFluentd server = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                System.out.println("server closing");
                socket.close();
                System.out.println("server closed");
            }
        });
        server.start();

        // start senders
        RawSocketSender sender = new RawSocketSender("localhost", port);

        // server close
        server.close();

        // sleep a little bit
        Thread.sleep(1000);

        Map<String, Object> data = new HashMap<String, Object>();
View Full Code Here


        String host = "localhost";
        final List[] elists = new List[loggerCount];
        elists[0] = new ArrayList<Event>();
        elists[1] = new ArrayList<Event>();
        elists[2] = new ArrayList<Event>();
        MockFluentd fluentd = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        if (e.tag.startsWith("noprefix")) {
                            elists[2].add(e); // no tag prefix
                        } else if (e.tag.startsWith("testtag00")) {
                            elists[0].add(e); // testtag00
                        } else {
                            elists[1].add(e); // testtag01
                        }
                    }
                    //socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });
        FixedThreadManager threadManager = new FixedThreadManager(1);
        threadManager.submit(fluentd);

        // start loggers
        FluentLogger[] loggers = new FluentLogger[loggerCount];
        int[] counts = new int[] { 50, 100, 75 };
        loggers[0] = FluentLogger.getLogger("testtag00", host, port);
        {
            for (int i = 0; i < counts[0]; i++) {
                Map<String, Object> data = new HashMap<String, Object>();
                data.put("k1", "v1");
                data.put("k2", "v2");
                loggers[0].log("test00", data);
            }
        }
        loggers[1] = FluentLogger.getLogger("testtag01", host, port);
        {
            for (int i = 0; i < counts[1]; i++) {
                Map<String, Object> data = new HashMap<String, Object>();
                data.put("k3", "v3");
                data.put("k4", "v4");
                loggers[1].log("test01", data);
            }
        }
        loggers[2] = FluentLogger.getLogger(null, host, port);
        {
            for (int i = 0; i < counts[2]; i++) {
                Map<String, Object> data = new HashMap<String, Object>();
                data.put("k5", 5555);
                data.put("k6", 6666);
                loggers[2].log("noprefix01", data);
            }
        }

        // close loggers
        FluentLogger.closeAll();
        Thread.sleep(2000);

        // close mock fluentd
        fluentd.close();

        // wait for unpacking event data on fluentd
        threadManager.join();

        // check data
View Full Code Here

        final AtomicReference<Exception> lastError = new AtomicReference<Exception>();

        FixedThreadManager threadManager = new FixedThreadManager(2);

        // run a fluentd
        MockFluentd fluentd1 = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elist1.add(e);

                        if (elist1.size() >= 1)
                            break;
                    }
                    socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });
        threadManager.submit(fluentd1);

        // start a logger
        final FluentLogger logger = FluentLogger.getLogger("testtag", host, port);
        final ErrorHandler errorHandler = new ErrorHandler() {
            @Override
            public void handleNetworkError(IOException ex) {
                lastError.set(ex);
            }
        };
        logger.setErrorHandler(errorHandler);

        assertFalse(logger.isConnected());
        {
            Map<String, Object> data = new HashMap<String, Object>();
            data.put("k1", "v1");
            data.put("k2", "v2");
            logger.log("test01", data);
        }
        assertTrue(logger.isConnected());

        // close the fluentd to make the situation that the fluentd gets down
        TimeUnit.MILLISECONDS.sleep(500);
        _logger.info("Closing the current fluentd instance");
        fluentd1.closeClientSockets();
        fluentd1.close();

        // the logger should fail to send an event
        TimeUnit.MILLISECONDS.sleep(500);
        assertTrue(logger.isConnected());
        for (int i = 0; i < 2; i++) {
            // repeat twice to test both behaviors on socket write error and connection error
            assertNull(lastError.get());
            {
                // writing to the closed socket
                Map<String, Object> data = new HashMap<String, Object>();
                data.put("k3", "v3");
                data.put("k4", "v4");
                logger.log("test01", data);
            }
            assertTrue(lastError.get() instanceof IOException);
            lastError.set(null);    // Clear the last error
            assertFalse(logger.isConnected());
            TimeUnit.MILLISECONDS.sleep(100);
        }

        // the logger shouldn't call the error handler after calling removeErrorHandler()
        logger.removeErrorHandler();
        {
            // writing to the closed socket
            Map<String, Object> data = new HashMap<String, Object>();
            data.put("k3", "v3");
            data.put("k4", "v4");
            logger.log("test01", data);
        }
        assertNull(lastError.get());
        lastError.set(null);    // Clear the last error

        logger.setErrorHandler(errorHandler);

        // run the fluentd again
        final List<Event> elist2 = new ArrayList<Event>();
        MockFluentd fluentd2 = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elist2.add(e);
                    }
                    // socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });
        threadManager.submit(fluentd2);

        // the logger should send an event successfully
        TimeUnit.MILLISECONDS.sleep(500);
        {
            Map<String, Object> data = new HashMap<String, Object>();
            data.put("k5", "v5");
            data.put("k6", "v6");
            logger.log("test01", data);
        }
        assertNull(lastError.get());
        assertTrue(logger.isConnected());

        // close loggers
        FluentLogger.closeAll();
        Thread.sleep(2000);

        fluentd2.close();

        // wait for unpacking event data on fluentd
        TimeUnit.MILLISECONDS.sleep(2000);
        threadManager.join();
        assertNull(lastError.get());
View Full Code Here

            counters.add(0L);

        // start mock fluentd
        final int port = MockFluentd.randomPort();
        final String host = "localhost";
        MockFluentd fluentd = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    while (true) {
                        Unpacker unpacker = msgpack.createUnpacker(in);
                        Event e = unpacker.read(Event.class);
                        if (e.tag.equals(tag)) {
                            for (Map.Entry<String, Object> entry : e.data.entrySet()) {
                                Integer index = Integer.valueOf(entry.getKey());
                                Long i = counters.get(index);
                                counters.set(index, i + (Long)entry.getValue());
                            }
                        }
                    }
                } catch (EOFException e) {
                }
            }
        });

        FixedThreadManager threadManager = new FixedThreadManager(1);
        threadManager.submit(fluentd);
        Thread.sleep(1000);

        final FluentLogger logger = FluentLogger.getLogger(null, host, port);
        ExecutorService executorService = Executors.newFixedThreadPool(N);
        /*
         * Each thread emits the following events LOOP times
         * Thread#0: {'0' => 0}
         * Thread#1: {'0' => 0, '1' => 1}
         * Thread#2: {'0' => 0, '1' => 1, '2' => 2}
         *    :
         * Thread#(N-1): {'0' => 0, '1' => 1, '2' => 2 ... '(N-1)' => (N-1)}
         */
        for (int i = 0; i < N; i++) {
            final int ii = i;
            executorService.execute(new Runnable() {
                @Override
                public void run() {
                    Map<String, Object> event = new HashMap<String, Object>();
                    for (int j = 0; j <= ii; j++) {
                        event.put(String.valueOf(j), j);
                    }
                    for (int j = 0; j < LOOP; j++) {
                        logger.log(tag, event);

                        if (j % 500 == ii)
                            logger.flush();
                    }
                    logger.flush();
                }
            });
        }
        Thread.sleep(1000);
        executorService.shutdown();
        executorService.awaitTermination(300, TimeUnit.SECONDS);

        logger.close();

        Thread.sleep(2000);

        // close mock fluentd
        fluentd.close();

        // wait for unpacking event data on fluentd
        threadManager.join();

        // check data
View Full Code Here

    @Test
    public void testNormal01() throws Exception {
        // start mock fluentd
        int port = MockFluentd.randomPort();
        final List<Event> elist = new ArrayList<Event>();
        MockFluentd fluentd = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elist.add(e);
                    }
                    //socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });
        fluentd.start();

        // start senders
        Sender sender = new RawSocketSender("localhost", port);
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("t1k1", "t1v1");
        data.put("t1k2", "t1v2");
        sender.emit("tag.label1", data);

        Map<String, Object> data2 = new HashMap<String, Object>();
        data2.put("t2k1", "t2v1");
        data2.put("t2k2", "t2v2");
        sender.emit("tag.label2", data2);

        // close sender sockets
        sender.close();

        // wait for unpacking event data on fluentd
        Thread.sleep(2000);

        // close mock server sockets
        fluentd.close();


        // check data
        assertEquals(2, elist.size());
        {
View Full Code Here

    @Test
    public void testNormal02() throws Exception {
        // start mock fluentd
        int port = MockFluentd.randomPort(); // Use a random port available
        final List<Event> elist = new ArrayList<Event>();
        MockFluentd fluentd = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elist.add(e);
                    }
                    //socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });
        fluentd.start();

        // start senders
        Sender sender = new RawSocketSender("localhost", port);
        int count = 10000;
        for (int i = 0; i < count; i++) {
            String tag = "tag:i";
            Map<String, Object> record = new HashMap<String, Object>();
            record.put("i", i);
            record.put("n", "name:" + i);
            sender.emit(tag, record);
        }

        // close sender sockets
        sender.close();

        // wait for unpacking event data on fluentd
        Thread.sleep(2000);

        // close mock server sockets
        fluentd.close();


        // check data
        assertEquals(count, elist.size());
    }
View Full Code Here

        final List[] elists = new List[2];
        final int[] ports = new int[2];
        ports[0] = MockFluentd.randomPort();
        RawSocketSender rawSocketSender = new RawSocketSender("localhost", ports[0]);   // it should be failed to connect to fluentd
        elists[0] = new ArrayList<Event>();
        fluentds[0] = new MockFluentd(ports[0], new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elists[0].add(e);
                    }
                    //socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });
        fluentds[0].start();
        ports[1] = MockFluentd.randomPort();
        elists[1] = new ArrayList<Event>();
        fluentds[1] = new MockFluentd(ports[1], new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
View Full Code Here

                    // e.printStackTrace();
                }
            }
        };

        MockFluentd fluentd = new MockFluentd(port, mockProcess);
        fluentd.start();

        Sender sender = new RawSocketSender("localhost", port);
        assertFalse(sender.isConnected());
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("key0", "v0");
        sender.emit("tag0", data);
        assertTrue(sender.isConnected());

        // close fluentd to make the next sending failed
        TimeUnit.MILLISECONDS.sleep(500);

        fluentd.closeClientSockets();

        TimeUnit.MILLISECONDS.sleep(500);

        data = new HashMap<String, Object>();
        data.put("key0", "v1");
        sender.emit("tag0", data);
        assertFalse(sender.isConnected());

        // wait to avoid the suppression of reconnection
        TimeUnit.MILLISECONDS.sleep(500);

        data = new HashMap<String, Object>();
        data.put("key0", "v2");
        sender.emit("tag0", data);

        data = new HashMap<String, Object>();
        data.put("key0", "v3");
        sender.emit("tag0", data);

        countDownLatch.await(500, TimeUnit.MILLISECONDS);

        sender.close();

        fluentd.close();

        assertEquals(4, readEvents.size());

        Event event = readEvents.poll();
        assertEquals("tag0", event.tag);
View Full Code Here

        final CountDownLatch bufferFull = new CountDownLatch(1);

        // start mock fluentd
        int port = MockFluentd.randomPort(); // Use a random port available
        final List<Event> elist = new ArrayList<Event>();
        final MockFluentd fluentd = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                try {
                    BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elist.add(e);
                    }
                } catch (EOFException e) {
                    // ignore
                } finally {
                    socket.close();
                }
            }
        });

        ExecutorService executor = Executors.newSingleThreadExecutor();
        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    bufferFull.await(20, TimeUnit.SECONDS);
                    fluentd.start();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        // start senders
        Sender sender = new RawSocketSender("localhost", port);
        String tag = "tag";
        int i;
        for (i = 0; i < 1000000; i++) {     // Enough to fill the sender's buffer
            Map<String, Object> record = new HashMap<String, Object>();
            record.put("num", i);
            record.put("str", "name" + i);

            if (bufferFull.getCount() > 0) {
                // Fill the sender's buffer
                if (!sender.emit(tag, record)) {
                    // Buffer full. Need to recover the fluentd
                    bufferFull.countDown();
                    Thread.sleep(2000);
                }
            }
            else {
                // Flush the sender's buffer after the fluentd starts
                sender.emit(tag, record);
                break;
            }
        }

        // close sender sockets
        sender.close();

        // wait for unpacking event data on fluentd
        Thread.sleep(2000);

        // close mock server sockets
        fluentd.close();

        // check data
        assertEquals(0, bufferFull.getCount());
        assertEquals(i, elist.size());
    }
View Full Code Here

    public void testNormal01() throws Exception {
        // start mock fluentd
        int port = MockFluentd.randomPort();
        String host = "localhost";
        final List<Event> elist = new ArrayList<Event>();
        MockFluentd fluentd = new MockFluentd(port, new MockFluentd.MockProcess() {
            public void process(MessagePack msgpack, Socket socket) throws IOException {
                BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                try {
                    Unpacker unpacker = msgpack.createUnpacker(in);
                    while (true) {
                        Event e = unpacker.read(Event.class);
                        elist.add(e);
                    }
                    //socket.close();
                } catch (EOFException e) {
                    // ignore
                }
            }
        });

        FixedThreadManager threadManager = new FixedThreadManager(1);
        threadManager.submit(fluentd);

        // start loggers
        FluentLogger logger = FluentLogger.getLogger("testtag", host, port);
        {
            Map<String, Object> data = new HashMap<String, Object>();
            data.put("k1", "v1");
            data.put("k2", "v2");
            logger.log("test01", data);
        }
        {
            Map<String, Object> data = new HashMap<String, Object>();
            data.put("k3", "v3");
            data.put("k4", "v4");
            logger.log("test01", data);
        }

        // close loggers
        logger.close();
        Thread.sleep(2000);

        // close mock fluentd
        fluentd.close();

        // wait for unpacking event data on fluentd
        threadManager.join();

        // check data
View Full Code Here

TOP

Related Classes of org.fluentd.logger.util.MockFluentd

Copyright © 2018 www.massapicom. 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.