Package com.higherfrequencytrading.chronicle.impl

Examples of com.higherfrequencytrading.chronicle.impl.IndexedChronicle


        ChronicleTools.deleteOnExit(name2);

        long start = System.nanoTime();
        int PORT = 12347;

        InProcessChronicleSource chronicle = new InProcessChronicleSource(new IndexedChronicle(name), PORT);
        DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER);
        MapWrapper<String, String> strings = new MapWrapper<String, String>(dataStore, "strings", String.class, String.class, new LinkedHashMap<String, String>(), 16);
        MapWrapper<Integer, Integer> ints = new MapWrapper<Integer, Integer>(dataStore, "ints", Integer.class, Integer.class, new LinkedHashMap<Integer, Integer>(), 16);
        dataStore.start();
        ints.clear();
        strings.clear();

        InProcessChronicleSink chronicle2 = new InProcessChronicleSink(new IndexedChronicle(name2), "localhost", PORT);
        DataStore dataStore2 = new DataStore(chronicle2, ModelMode.READ_ONLY);
        MapWrapper<String, String> strings2 = new MapWrapper<String, String>(dataStore2, "strings", String.class, String.class, new LinkedHashMap<String, String>(), 16);
        MapWrapper<Integer, Integer> ints2 = new MapWrapper<Integer, Integer>(dataStore2, "ints", Integer.class, Integer.class, new LinkedHashMap<Integer, Integer>(), 16);

        final AtomicInteger sai = new AtomicInteger();
View Full Code Here


        ChronicleTools.deleteOnExit(name2);

        long start = System.nanoTime();
        int PORT = 12348;

        InProcessChronicleSource chronicle = new InProcessChronicleSource(new IndexedChronicle(name), PORT);
        DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER);
        MapWrapper<String, String> strings = new MapWrapper<String, String>(dataStore, "strings", String.class, String.class, new LinkedHashMap<String, String>(), 16);
        MapWrapper<Integer, Integer> ints = new MapWrapper<Integer, Integer>(dataStore, "ints", Integer.class, Integer.class, new LinkedHashMap<Integer, Integer>(), 16);
        dataStore.start();
        ints.clear();
        strings.clear();

        InProcessChronicleSink chronicle2 = new InProcessChronicleSink(new IndexedChronicle(name2), "localhost", PORT);
        DataStore dataStore2 = new DataStore(chronicle2, ModelMode.READ_ONLY);
        MapWrapper<String, String> strings2 = new MapWrapper<String, String>(dataStore2, "strings", String.class, String.class, new LinkedHashMap<String, String>(), 16);
        MapWrapper<Integer, Integer> ints2 = new MapWrapper<Integer, Integer>(dataStore2, "ints", Integer.class, Integer.class, new LinkedHashMap<Integer, Integer>(), 16);

        final AtomicInteger sai = new AtomicInteger();
View Full Code Here

            intListener.inSync();

            replay(stringsListener);
            replay(intListener);

            Chronicle chronicle = new IndexedChronicle(name);
            DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER);
            SetWrapper<String> strings = new SetWrapper<String>(dataStore, "strings", String.class, new LinkedHashSet<String>(), 8);
            strings.addListener(stringsListener);
            SetWrapper<Integer> ints = new SetWrapper<Integer>(dataStore, "ints", Integer.class, new LinkedHashSet<Integer>(), 6);
            ints.addListener(intListener);

            dataStore.start();

            ints.add(0);
            strings.add("Hello");
            ints.add(1);
            strings.add("World");
            ints.add(2);

            strings.publishEvent("bye");
            ints.publishEvent("now");

            verify(stringsListener);
            verify(intListener);

            assertEquals("[Hello, World]", strings.toString());
            assertEquals("[0, 1, 2]", ints.toString());
            assertEquals(String[].class, strings.toArray().getClass());

            chronicle.close();
        }
        {
            SetListener stringsListener = createMock("strings", SetListener.class);
            stringsListener.eventStart(7, "strings");
            stringsListener.add("!");
            stringsListener.eventEnd(true);

            SetListener intListener = createMock("ints", SetListener.class);

            intListener.eventStart(8, "ints");
            intListener.add(3);
            intListener.eventEnd(true);

            stringsListener.inSync();
            intListener.inSync();

            replay(stringsListener);
            replay(intListener);
            Chronicle chronicle = new IndexedChronicle(name);
            DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER);
            SetWrapper<String> strings = new SetWrapper<String>(dataStore, "strings", String.class, new LinkedHashSet<String>(), 8);
            strings.addListener(stringsListener);
            SetWrapper<Integer> ints = new SetWrapper<Integer>(dataStore, "ints", Integer.class, new LinkedHashSet<Integer>(), 6);
            ints.addListener(intListener);
            // assume we have  all the events written so far
            dataStore.start(chronicle.size() - 1);

            strings.add("!");
            ints.add(3);

            verify(stringsListener);
            verify(intListener);

            assertEquals("[Hello, World, !]", strings.toString());
            assertEquals("[0, 1, 2, 3]", ints.toString());
            chronicle.close();
        }
    }
View Full Code Here

        String name = TMP + "/testSetPerformance";
        ChronicleTools.deleteOnExit(name);
        long start = System.nanoTime();
        int size;
        {
            Chronicle chronicle = new IndexedChronicle(name);
            DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER);
            SetWrapper<String> strings = new SetWrapper<String>(dataStore, "test", String.class, new LinkedHashSet<String>(), 9);
            SetWrapper<Integer> ints = new SetWrapper<Integer>(dataStore, "ints", Integer.class, new LinkedHashSet<Integer>(), 9);
            dataStore.start();
            ints.clear();
            strings.clear();
            for (int i = 0; i < 1000000; i++) {
                ints.add(i);
                strings.add(Integer.toString(i));
            }
            size = Math.min(strings.size(), ints.size());
            for (int i = 0; i < 1000000; i++) {
                ints.remove(i);
                strings.remove(Integer.toString(i));
            }

            chronicle.close();
        }
        long mid = System.nanoTime();
        {
            Chronicle chronicle = new IndexedChronicle(name);
            DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER);
            SetWrapper<String> strings = new SetWrapper<String>(dataStore, "test", String.class, new LinkedHashSet<String>(), 9);
            SetWrapper<Integer> ints = new SetWrapper<Integer>(dataStore, "ints", Integer.class, new LinkedHashSet<Integer>(), 9);
            dataStore.start();
            chronicle.close();
        }
        long end = System.nanoTime();
        System.out.printf("Took %.1f seconds avg to add&remove %,d elements and %.1f seconds avg to reload them%n",
                (mid - start) / 2e9, size, (end - mid) / 2e9);
    }
View Full Code Here

    @Test
    public void testReadMessages() throws Exception {
        String path = TMP + "/testReadMessages";
        ChronicleTools.deleteOnExit(path);
        IndexedChronicle chronicle = new IndexedChronicle(path);
        Excerpt excerpt = chronicle.createExcerpt();

        FixSocketReader fsr = new FixSocketReader(null, excerpt) {
            final byte[] bytes = S.getBytes("US-ASCII");
            int start = 0;

            @Override
            protected void readMoreData(@NotNull ByteBuffer buffer) throws IOException {
                int end = Math.min(bytes.length, start + 256);
                buffer.put(bytes, start, end - start);
                start = end;
                if (end == bytes.length)
                    close();
            }
        };

        FixDecoder fd = new FixDecoder(fsr);
        FixDecodeListener listener = new FixDecodeListener() {
            @Override
            public void onField(int fid, @NotNull Excerpt value) {
                String text = value.parseUTF(StopCharTesters.FIX_TEXT);
                System.out.println("\t" + fid + "=" + text);
            }

            @Override
            public void onEndOfMessage() {
                System.out.println("EOM");
            }

            @Override
            public void onEndOfBatch() {
                System.out.println("EOB");
            }
        };
        while (!fsr.isClosed()) {
            fd.readMessages(listener);
        }
        excerpt.index(-1);
        int count = 0;
        while (excerpt.nextIndex()) {
            int length = (int) excerpt.readStopBit();
            String fix = ChronicleTools.asString(excerpt, excerpt.position(), length);
            assertTrue(fix.startsWith("8=FIX"));
            assertTrue(fix.endsWith(".")); // ^A is replaced with .
            assertEquals(8, fix.length() - fix.lastIndexOf(".10="));
            int pos = -1;
            while ((pos = fix.indexOf(".10=", pos + 1)) > 0)
                count++;
        }
        assertEquals(86, count);
        chronicle.close();
    }
View Full Code Here

    @Test
    public void testReadMessagesPerf() throws Exception {
        String path = TMP + "/testReadMessages";
        ChronicleTools.deleteOnExit(path);
        IndexedChronicle chronicle = new IndexedChronicle(path);
        Excerpt excerpt = chronicle.createExcerpt();
        final int[] count = {0};
        FixSocketReader fsr = new FixSocketReader(null, excerpt) {
            final byte[] bytes = S.getBytes("US-ASCII");
            int start = 0;

            @Override
            protected void readMoreData(@NotNull ByteBuffer buffer) throws IOException {
                int end = Math.min(bytes.length, start + 256);
                buffer.put(bytes, start, end - start);
                start = end;
                if (end == bytes.length)
                    start = 0;
            }
        };

        FixDecoder fd = new FixDecoder(fsr);
        FixDecodeListener listener = new FixDecodeListener() {
            @Override
            public void onField(int fid, Excerpt value) {
//                String text = value.parseUTF(StopCharTesters.FIX_TEXT);
//                System.out.println("\t" + fid + "=" + text);
            }

            @Override
            public void onEndOfMessage() {
                count[0]++;
            }

            @Override
            public void onEndOfBatch() {
//                System.out.println("EOB");
            }
        };
        long start = 0;
        while (!fsr.isClosed() && count[0] < 1000000) {
            if (start == 0 && count[0] > 20000)
                start = System.nanoTime();
            fd.readMessages(listener);
        }
        long rate = (count[0] - 20000) * 1000000000L / (System.nanoTime() - start);
        System.out.println("The decode rate was " + rate / 1000 + "Kmsg/s");
        chronicle.close();
    }
View Full Code Here

//        String tmp = System.getProperty("user.home");
        String gw2pePath = tmp + "/demo/gw2pe" + gwId;
        String pePath = tmp + "/demo/pe";

        // setup
        IndexedChronicle gw2pe = new IndexedChronicle(gw2pePath);
        gw2pe.useUnsafe(true);
        Gw2PeWriter gw2PeWriter = new Gw2PeWriter(gw2pe.createExcerpt());

        IndexedChronicle pe2gw = new IndexedChronicle(pePath);
        pe2gw.useUnsafe(true);
        final Histogram times = new Histogram(10000, 100);
        final AtomicInteger reportCount = new AtomicInteger();
        Pe2GwEvents listener = new Pe2GwEvents() {
            @Override
            public void report(@NotNull MetaData metaData, SmallReport smallReport) {
                if (metaData.sourceId != gwId) return;

                if (!throughputTest)
                    times.sample(metaData.inReadTimestamp7Delta * 100);
                reportCount.getAndIncrement();
            }
        };
        Pe2GwReader pe2GwReader = new Pe2GwReader(gwId, pe2gw.createExcerpt(), listener);

        // synchronize the start.
        if (gwId > 1) {
            int startTime = (int) ((System.currentTimeMillis() / 1000 - 5) % 10) + 5;
            System.out.println("Count down");
            for (int i = startTime; i > 0; i--) {
                System.out.print(i + " ");
                System.out.flush();
                Thread.sleep(1000);
            }
        }
        System.out.println("Started");
        long start = System.nanoTime();
        // run loop
        SmallCommand command = new SmallCommand();
        @SuppressWarnings("MismatchedQueryAndUpdateOfStringBuilder")
        StringBuilder clientOrderId = command.clientOrderId;
        for (int i = 0; i < orders; i++) {
            clientOrderId.setLength(0);
            clientOrderId.append("clientOrderId-");
            clientOrderId.append(gwId);
            clientOrderId.append('-');
            clientOrderId.append(i);
            command.instrument = "XAU/EUR";
            command.price = 1209.41;
            command.quantity = 1000;
            command.side = (i & 1) == 0 ? Side.BUY : Side.SELL;
            gw2PeWriter.small(null, command);

            if (throughputTest) {
                do {
                    /* read another */
                } while (pe2GwReader.readOne());
            } else {
                do {
                    /* read another */
                } while (pe2GwReader.readOne() || reportCount.get() < i - 1);
            }
        }

        while (reportCount.get() < orders) {
            pe2GwReader.readOne();
        }
        long time = System.nanoTime() - start;
        System.out.printf("Processed %,d events in and out in %.1f seconds%n", orders, time / 1e9);
        if (!throughputTest) {
            System.out.printf("The latency distribution was %.1f, %.1f/%.1f/%.1f us for the 1, 90/99/99.9 %%tile%n",
                    times.percentile(0.01) / 1e3,
                    times.percentile(0.90) / 1e3,
                    times.percentile(0.99) / 1e3,
                    times.percentile(0.999) / 1e3
            );
        }
        gw2pe.close();
        pe2gw.close();
    }
View Full Code Here

    @Test
    public void testSerailization() throws IOException, ClassNotFoundException {
        final String basePath = BASE_DIR + "objects";
        deleteOnExit(basePath);

        IndexedChronicle tsc = new IndexedChronicle(basePath);
        tsc.useUnsafe(false /*USE_UNSAFE*/);

        Excerpt excerpt = tsc.createExcerpt();

        List objects = Arrays.asList(1, 1L, "one", new Date(1));

        excerpt.startExcerpt(293);
        // a new ObjectOutputStream is required for each record as they are not reusable :(
View Full Code Here

    @NotNull
    final IndexedChronicle tsc;
    final Excerpt excerpt;

    public DirectMemoryWriter() throws IOException {
        tsc = new IndexedChronicle(basePath, DirectMemoryReader.DATA_BIT_SIZE_HINT);
        tsc.useUnsafe(DirectMemoryReader.USE_UNSAFE);

        excerpt = tsc.createExcerpt();
    }
View Full Code Here

    final Excerpt excerpt;
    int currentExcerptIndex = 0;


    public DirectMemoryReader() throws IOException {
        tsc = new IndexedChronicle(basePath, DATA_BIT_SIZE_HINT);
        tsc.useUnsafe(USE_UNSAFE);

        excerpt = tsc.createExcerpt();
        excerpt.startExcerpt(100);
    }
View Full Code Here

TOP

Related Classes of com.higherfrequencytrading.chronicle.impl.IndexedChronicle

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.