Skip to content

Commit 30fd965

Browse files
committed
Add system tests for PullOption.returnImmediately(false)
1 parent 142caaf commit 30fd965

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/BaseSystemTest.java

+40
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,20 @@
2121
import static org.junit.Assert.assertNotNull;
2222
import static org.junit.Assert.assertNull;
2323
import static org.junit.Assert.assertTrue;
24+
import static org.junit.Assert.fail;
2425

2526
import com.google.cloud.AsyncPage;
2627
import com.google.cloud.Page;
2728
import com.google.cloud.pubsub.PubSub.MessageConsumer;
2829
import com.google.cloud.pubsub.PubSub.MessageProcessor;
30+
import com.google.cloud.pubsub.PubSub.PullOption;
2931
import com.google.common.collect.ImmutableList;
3032
import com.google.common.collect.Iterators;
3133
import com.google.common.collect.Lists;
3234
import com.google.common.collect.Sets;
3335

36+
import io.grpc.Status;
37+
3438
import org.junit.Ignore;
3539
import org.junit.Rule;
3640
import org.junit.Test;
@@ -545,6 +549,42 @@ public void testPullMessagesAsync() throws ExecutionException, InterruptedExcept
545549
assertTrue(pubsub().deleteTopic(topic));
546550
}
547551

552+
@Test
553+
public void testPullMessagesAsyncNotImmediately()
554+
throws ExecutionException, InterruptedException {
555+
String topic = formatForTest("test-pull-messages-not-immediately-topic");
556+
pubsub().create(TopicInfo.of(topic));
557+
String subscription = formatForTest("test-pull-messages-not-immediately-subscription");
558+
pubsub().create(SubscriptionInfo.of(topic, subscription));
559+
Future<Iterator<ReceivedMessage>> future =
560+
pubsub().pullAsync(subscription, 2, PullOption.returnImmediately(false));
561+
Message message1 = Message.of("payload1");
562+
Message message2 = Message.of("payload2");
563+
List<String> messageIds = pubsub().publish(topic, ImmutableList.of(message1, message2));
564+
assertEquals(2, messageIds.size());
565+
Iterator<ReceivedMessage> iterator = future.get();
566+
assertEquals(message1.payloadAsString(), iterator.next().payloadAsString());
567+
assertEquals(message2.payloadAsString(), iterator.next().payloadAsString());
568+
assertTrue(pubsub().deleteSubscription(subscription));
569+
assertTrue(pubsub().deleteTopic(topic));
570+
}
571+
572+
@Test
573+
public void testPullMessagesAsyncNotImmediately_NoMessages()
574+
throws ExecutionException, InterruptedException {
575+
String topic = formatForTest("test-pull-messages-not-immediately-topic");
576+
pubsub().create(TopicInfo.of(topic));
577+
String subscription = formatForTest("test-pull-messages-not-immediately-subscription");
578+
pubsub().create(SubscriptionInfo.of(topic, subscription));
579+
try {
580+
pubsub().pullAsync(subscription, 2, PullOption.returnImmediately(false)).get();
581+
fail("Expected timeout exception");
582+
} catch (ExecutionException ex) {
583+
PubSubException cause = (PubSubException) ex.getCause();
584+
assertEquals(Status.Code.DEADLINE_EXCEEDED.value(), cause.code());
585+
}
586+
}
587+
548588
@Test
549589
public void testPullAsyncNonExistingSubscription()
550590
throws ExecutionException, InterruptedException {

0 commit comments

Comments
 (0)