Here are the examples of the java api class org.apache.activemq.artemis.core.paging.cursor.PageCursorProvider taken from open source projects.
1. PageCursorStressTest#testReadNextPage()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testReadNextPage() throws Exception { final int NUM_MESSAGES = 1; int numberOfPages = addMessages(NUM_MESSAGES, 1024); System.out.println("NumberOfPages = " + numberOfPages); PageCursorProvider cursorProvider = lookupCursorProvider(); PageCache cache = cursorProvider.getPageCache(2); assertNull(cache); }
2. PagingTest#testMissingTXEverythingAcked()
Project: activemq-artemis
File: PagingTest.java
File: PagingTest.java
@Test public void testMissingTXEverythingAcked() throws Exception { clearDataRecreateServerDirs(); Configuration config = createDefaultInVMConfig().setJournalSyncNonTransactional(false); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX, new HashMap<String, AddressSettings>()); server.start(); final int numberOfMessages = 5000; final int numberOfTX = 10; final int messagesPerTX = numberOfMessages / numberOfTX; try { locator = createInVMNonHALocator().setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true); sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, false, false); session.createQueue(ADDRESS.toString(), "q1", true); session.createQueue(ADDRESS.toString(), "q2", true); ClientProducer producer = session.createProducer(PagingTest.ADDRESS); ClientMessage message = null; byte[] body = new byte[MESSAGE_SIZE]; ByteBuffer bb = ByteBuffer.wrap(body); for (int j = 1; j <= MESSAGE_SIZE; j++) { bb.put(getSamplebyte(j)); } for (int i = 0; i < numberOfMessages; i++) { message = session.createMessage(true); ActiveMQBuffer bodyLocal = message.getBodyBuffer(); bodyLocal.writeBytes(body); message.putIntProperty(new SimpleString("id"), i); producer.send(message); if (i % messagesPerTX == 0) { session.commit(); } } session.commit(); session.close(); } finally { try { server.stop(); } catch (Throwable ignored) { } } ArrayList<RecordInfo> records = new ArrayList<>(); List<PreparedTransactionInfo> list = new ArrayList<>(); JournalImpl jrn = new JournalImpl(config.getJournalFileSize(), 2, 2, 0, 0, new NIOSequentialFileFactory(server.getConfiguration().getJournalLocation(), 1), "activemq-data", "amq", 1); jrn.start(); jrn.load(records, list, null); // Delete everything from the journal for (RecordInfo info : records) { if (!info.isUpdate && info.getUserRecordType() != JournalRecordIds.PAGE_CURSOR_COUNTER_VALUE && info.getUserRecordType() != JournalRecordIds.PAGE_CURSOR_COUNTER_INC && info.getUserRecordType() != JournalRecordIds.PAGE_CURSOR_COMPLETE) { jrn.appendDeleteRecord(info.id, false); } } jrn.stop(); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX, new HashMap<String, AddressSettings>()); server.start(); ClientSessionFactory csf = createSessionFactory(locator); ClientSession sess = csf.createSession(); sess.start(); ClientConsumer cons = sess.createConsumer("q1"); assertNull(cons.receiveImmediate()); ClientConsumer cons2 = sess.createConsumer("q2"); assertNull(cons2.receiveImmediate()); Queue q1 = server.locateQueue(new SimpleString("q1")); Queue q2 = server.locateQueue(new SimpleString("q2")); q1.getPageSubscription().cleanupEntries(false); q2.getPageSubscription().cleanupEntries(false); PageCursorProvider provider = q1.getPageSubscription().getPagingStore().getCursorProvider(); provider.cleanup(); waitForNotPaging(q1); sess.close(); }
3. PageCursorStressTest#testMultipleIterators()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testMultipleIterators() throws Exception { final int NUM_MESSAGES = 10; int numberOfPages = addMessages(NUM_MESSAGES, 1024 * 1024); System.out.println("NumberOfPages = " + numberOfPages); PageCursorProvider cursorProvider = lookupCursorProvider(); PageSubscription cursor = cursorProvider.getSubscription(queue.getID()); LinkedListIterator<PagedReference> iter = cursor.iterator(); LinkedListIterator<PagedReference> iter2 = cursor.iterator(); assertTrue(iter.hasNext()); PagedReference msg1 = iter.next(); PagedReference msg2 = iter2.next(); assertEquals(tstProperty(msg1.getMessage()), tstProperty(msg2.getMessage())); System.out.println("property = " + tstProperty(msg1.getMessage())); msg1 = iter.next(); assertEquals(1, tstProperty(msg1.getMessage())); iter.remove(); msg2 = iter2.next(); assertEquals(2, tstProperty(msg2.getMessage())); iter2.repeat(); msg2 = iter2.next(); assertEquals(2, tstProperty(msg2.getMessage())); iter2.repeat(); assertEquals(2, tstProperty(msg2.getMessage())); msg1 = iter.next(); assertEquals(2, tstProperty(msg1.getMessage())); iter.repeat(); msg1 = iter.next(); assertEquals(2, tstProperty(msg1.getMessage())); assertTrue(iter2.hasNext()); }
4. PageCursorStressTest#testLazyCommit()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testLazyCommit() throws Exception { PagingStoreImpl pageStore = lookupPageStore(ADDRESS); pageStore.startPaging(); final int NUM_MESSAGES = 100; final int messageSize = 100 * 1024; PageCursorProvider cursorProvider = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider(); System.out.println("cursorProvider = " + cursorProvider); PageSubscription cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); LinkedListIterator<PagedReference> iterator = cursor.iterator(); System.out.println("Cursor: " + cursor); StorageManager storage = this.server.getStorageManager(); long pgtxLazy = storage.generateID(); Transaction txLazy = pgMessages(storage, pageStore, pgtxLazy, 0, NUM_MESSAGES, messageSize); addMessages(100, NUM_MESSAGES, messageSize); System.out.println("Number of pages - " + pageStore.getNumberOfPages()); // First consume what's already there without any tx as nothing was committed for (int i = 100; i < 200; i++) { PagedReference pos = iterator.next(); assertNotNull("Null at position " + i, pos); assertEquals(i, pos.getMessage().getIntProperty("key").intValue()); cursor.ack(pos); } assertNull(iterator.next()); txLazy.commit(); storage.waitOnOperations(); for (int i = 0; i < 100; i++) { PagedReference pos = iterator.next(); assertNotNull("Null at position " + i, pos); assertEquals(i, pos.getMessage().getIntProperty("key").intValue()); cursor.ack(pos); } assertNull(iterator.next()); waitCleanup(); server.stop(); createServer(); waitCleanup(); assertEquals(1, lookupPageStore(ADDRESS).getNumberOfPages()); }
5. PageCursorStressTest#testConsumeLivePageMultiThread()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testConsumeLivePageMultiThread() throws Exception { final PagingStoreImpl pageStore = lookupPageStore(ADDRESS); pageStore.startPaging(); final int NUM_TX = 100; final int MSGS_TX = 100; final int TOTAL_MSG = NUM_TX * MSGS_TX; final int messageSize = 1024; PageCursorProvider cursorProvider = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider(); System.out.println("cursorProvider = " + cursorProvider); PageSubscription cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); System.out.println("Cursor: " + cursor); final StorageManager storage = this.server.getStorageManager(); final AtomicInteger exceptions = new AtomicInteger(0); Thread t1 = new Thread() { @Override public void run() { try { int count = 0; for (int txCount = 0; txCount < NUM_TX; txCount++) { Transaction tx = null; if (txCount % 2 == 0) { tx = new TransactionImpl(storage); } RoutingContext ctx = generateCTX(tx); for (int i = 0; i < MSGS_TX; i++) { //System.out.println("Sending " + count); ActiveMQBuffer buffer = RandomUtil.randomBuffer(messageSize, count); ServerMessage msg = new ServerMessageImpl(i, buffer.writerIndex()); msg.putIntProperty("key", count++); msg.getBodyBuffer().writeBytes(buffer, 0, buffer.writerIndex()); Assert.assertTrue(pageStore.page(msg, ctx.getTransaction(), ctx.getContextListing(ADDRESS), lock)); } if (tx != null) { tx.commit(); } } } catch (Throwable e) { e.printStackTrace(); exceptions.incrementAndGet(); } } }; t1.start(); LinkedListIterator<PagedReference> iterator = cursor.iterator(); for (int i = 0; i < TOTAL_MSG; i++) { assertEquals(0, exceptions.get()); PagedReference ref = null; for (int repeat = 0; repeat < 5; repeat++) { ref = iterator.next(); if (ref == null) { Thread.sleep(1000); } else { break; } } assertNotNull(ref); ref.acknowledge(); assertNotNull(ref); System.out.println("Consuming " + ref.getMessage().getIntProperty("key")); //assertEquals(i, ref.getMessage().getIntProperty("key").intValue()); } assertEquals(0, exceptions.get()); }
6. PageCursorStressTest#testConsumeLivePage()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testConsumeLivePage() throws Exception { PagingStoreImpl pageStore = lookupPageStore(ADDRESS); pageStore.startPaging(); final int NUM_MESSAGES = 100; final int messageSize = 1024 * 1024; PageCursorProvider cursorProvider = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider(); System.out.println("cursorProvider = " + cursorProvider); PageSubscription cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); System.out.println("Cursor: " + cursor); RoutingContextImpl ctx = generateCTX(); LinkedListIterator<PagedReference> iterator = cursor.iterator(); for (int i = 0; i < NUM_MESSAGES; i++) { // if (i % 100 == 0) System.out.println("read/written " + i); ActiveMQBuffer buffer = RandomUtil.randomBuffer(messageSize, i + 1L); ServerMessage msg = new ServerMessageImpl(i, buffer.writerIndex()); msg.putIntProperty("key", i); msg.getBodyBuffer().writeBytes(buffer, 0, buffer.writerIndex()); Assert.assertTrue(pageStore.page(msg, ctx.getTransaction(), ctx.getContextListing(ADDRESS), lock)); PagedReference readMessage = iterator.next(); assertNotNull(readMessage); assertEquals(i, readMessage.getMessage().getIntProperty("key").intValue()); assertNull(iterator.next()); } OperationContextImpl.clearContext(); ctx = generateCTX(); pageStore = lookupPageStore(ADDRESS); cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); iterator = cursor.iterator(); for (int i = 0; i < NUM_MESSAGES * 2; i++) { if (i % 100 == 0) System.out.println("Paged " + i); if (i >= NUM_MESSAGES) { ActiveMQBuffer buffer = RandomUtil.randomBuffer(messageSize, i + 1L); ServerMessage msg = new ServerMessageImpl(i, buffer.writerIndex()); msg.putIntProperty("key", i); msg.getBodyBuffer().writeBytes(buffer, 0, buffer.writerIndex()); Assert.assertTrue(pageStore.page(msg, ctx.getTransaction(), ctx.getContextListing(ADDRESS), lock)); } PagedReference readMessage = iterator.next(); assertNotNull(readMessage); assertEquals(i, readMessage.getMessage().getIntProperty("key").intValue()); } OperationContextImpl.clearContext(); pageStore = lookupPageStore(ADDRESS); cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); iterator = cursor.iterator(); for (int i = 0; i < NUM_MESSAGES * 3; i++) { if (i % 100 == 0) System.out.println("Paged " + i); if (i >= NUM_MESSAGES * 2 - 1) { ActiveMQBuffer buffer = RandomUtil.randomBuffer(messageSize, i + 1L); ServerMessage msg = new ServerMessageImpl(i, buffer.writerIndex()); msg.putIntProperty("key", i + 1); msg.getBodyBuffer().writeBytes(buffer, 0, buffer.writerIndex()); Assert.assertTrue(pageStore.page(msg, ctx.getTransaction(), ctx.getContextListing(ADDRESS), lock)); } PagedReference readMessage = iterator.next(); assertNotNull(readMessage); cursor.ack(readMessage); assertEquals(i, readMessage.getMessage().getIntProperty("key").intValue()); } PagedReference readMessage = iterator.next(); assertEquals(NUM_MESSAGES * 3, readMessage.getMessage().getIntProperty("key").intValue()); cursor.ack(readMessage); server.getStorageManager().waitOnOperations(); pageStore.flushExecutors(); assertFalse(pageStore.isPaging()); server.stop(); createServer(); assertFalse(pageStore.isPaging()); waitCleanup(); assertFalse(lookupPageStore(ADDRESS).isPaging()); }
7. PageCursorStressTest#testRestartWithHoleOnAckAndTransaction()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testRestartWithHoleOnAckAndTransaction() throws Exception { final int NUM_MESSAGES = 1000; int numberOfPages = addMessages(NUM_MESSAGES, 10 * 1024); System.out.println("Number of pages = " + numberOfPages); PageCursorProvider cursorProvider = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider(); System.out.println("cursorProvider = " + cursorProvider); PageSubscription cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); System.out.println("Cursor: " + cursor); Transaction tx = new TransactionImpl(server.getStorageManager(), 60 * 1000); LinkedListIterator<PagedReference> iterator = cursor.iterator(); for (int i = 0; i < 100; i++) { PagedReference msg = iterator.next(); assertEquals(i, msg.getMessage().getIntProperty("key").intValue()); if (i < 10 || i > 20) { cursor.ackTx(tx, msg); } } tx.commit(); server.stop(); OperationContextImpl.clearContext(); server.start(); cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); tx = new TransactionImpl(server.getStorageManager(), 60 * 1000); iterator = cursor.iterator(); for (int i = 10; i <= 20; i++) { PagedReference msg = iterator.next(); assertEquals(i, msg.getMessage().getIntProperty("key").intValue()); cursor.ackTx(tx, msg); } for (int i = 100; i < NUM_MESSAGES; i++) { PagedReference msg = iterator.next(); assertEquals(i, msg.getMessage().getIntProperty("key").intValue()); cursor.ackTx(tx, msg); } tx.commit(); server.stop(); createServer(); waitCleanup(); assertEquals(1, lookupPageStore(ADDRESS).getNumberOfPages()); }
8. PageCursorStressTest#testRestartWithHoleOnAck()
Project: activemq-artemis
File: PageCursorStressTest.java
File: PageCursorStressTest.java
@Test public void testRestartWithHoleOnAck() throws Exception { final int NUM_MESSAGES = 1000; int numberOfPages = addMessages(NUM_MESSAGES, 10 * 1024); System.out.println("Number of pages = " + numberOfPages); PageCursorProvider cursorProvider = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider(); System.out.println("cursorProvider = " + cursorProvider); PageSubscription cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); System.out.println("Cursor: " + cursor); LinkedListIterator<PagedReference> iterator = cursor.iterator(); for (int i = 0; i < 100; i++) { PagedReference msg = iterator.next(); assertEquals(i, msg.getMessage().getIntProperty("key").intValue()); if (i < 10 || i > 20) { cursor.ack(msg); } } server.getStorageManager().waitOnOperations(); server.stop(); OperationContextImpl.clearContext(); server.start(); cursor = this.server.getPagingManager().getPageStore(ADDRESS).getCursorProvider().getSubscription(queue.getID()); iterator = cursor.iterator(); for (int i = 10; i <= 20; i++) { PagedReference msg = iterator.next(); assertEquals(i, msg.getMessage().getIntProperty("key").intValue()); cursor.ack(msg); } for (int i = 100; i < NUM_MESSAGES; i++) { PagedReference msg = iterator.next(); assertEquals(i, msg.getMessage().getIntProperty("key").intValue()); cursor.ack(msg); } server.stop(); createServer(); waitCleanup(); assertEquals(1, lookupPageStore(ADDRESS).getNumberOfPages()); }