assertThat(checkpoint.subscriptionPath, equalTo(createdSubscription.getPath())); checkpoint.finalizeCheckpoint(); PubsubCheckpoint deserCheckpoint = CoderUtils.clone(actualSource.getCheckpointMarkCoder(), checkpoint);
checkpoint.finalizeCheckpoint(); assertEquals(1, checkpoint.notYetReadIds.size()); assertEquals("ackid_1", checkpoint.notYetReadIds.get(0)); checkpoint.finalizeCheckpoint(); reader.close();
@Test public void timeoutAckExtensions() throws IOException { setupOneMessage(); PubsubReader reader = primSource.createReader(p.getOptions(), null); PubsubTestClient pubsubClient = (PubsubTestClient) reader.getPubsubClient(); // Pull the first message but don't take a checkpoint for it. assertTrue(reader.start()); assertEquals(DATA, data(reader.getCurrent())); // Extend the ack. now.addAndGet(55 * 1000); pubsubClient.advance(); assertFalse(reader.advance()); // Let the ack expire. for (int i = 0; i < 3; i++) { now.addAndGet(25 * 1000); pubsubClient.advance(); assertFalse(reader.advance()); } // Wait for resend. now.addAndGet(25 * 1000); pubsubClient.advance(); // Reread the same message. assertTrue(reader.advance()); assertEquals(DATA, data(reader.getCurrent())); // Now ACK the message. PubsubCheckpoint checkpoint = reader.getCheckpointMark(); checkpoint.finalizeCheckpoint(); reader.close(); }
@Test public void timeoutAckAndRereadOneMessage() throws IOException { setupOneMessage(); PubsubReader reader = primSource.createReader(p.getOptions(), null); PubsubTestClient pubsubClient = (PubsubTestClient) reader.getPubsubClient(); assertTrue(reader.start()); assertEquals(DATA, data(reader.getCurrent())); // Let the ACK deadline for the above expire. now.addAndGet(65 * 1000); pubsubClient.advance(); // We'll now receive the same message again. assertTrue(reader.advance()); assertEquals(DATA, data(reader.getCurrent())); assertFalse(reader.advance()); // Now ACK the message. PubsubCheckpoint checkpoint = reader.getCheckpointMark(); checkpoint.finalizeCheckpoint(); reader.close(); }
@Test public void extendAck() throws IOException { setupOneMessage(); PubsubReader reader = primSource.createReader(p.getOptions(), null); PubsubTestClient pubsubClient = (PubsubTestClient) reader.getPubsubClient(); // Pull the first message but don't take a checkpoint for it. assertTrue(reader.start()); assertEquals(DATA, data(reader.getCurrent())); // Extend the ack now.addAndGet(55 * 1000); pubsubClient.advance(); assertFalse(reader.advance()); // Extend the ack again now.addAndGet(25 * 1000); pubsubClient.advance(); assertFalse(reader.advance()); // Now ACK the message. PubsubCheckpoint checkpoint = reader.getCheckpointMark(); checkpoint.finalizeCheckpoint(); reader.close(); }
@Test public void readOneMessage() throws IOException { setupOneMessage(); PubsubReader reader = primSource.createReader(p.getOptions(), null); // Read one message. assertTrue(reader.start()); assertEquals(DATA, data(reader.getCurrent())); assertFalse(reader.advance()); // ACK the message. PubsubCheckpoint checkpoint = reader.getCheckpointMark(); checkpoint.finalizeCheckpoint(); reader.close(); }
/** Tests that checkpoints finalized after the reader is closed succeed. */ @Test public void closeWithActiveCheckpoints() throws Exception { setupOneMessage(); PubsubReader reader = primSource.createReader(p.getOptions(), null); reader.start(); PubsubCheckpoint checkpoint = reader.getCheckpointMark(); reader.close(); checkpoint.finalizeCheckpoint(); } }