private List<DRPCQueryResultPubscriber> getPubscribers(int n) { if (commonPool.isEmpty()) { createPubscribers(n); } int size = commonPool.size(); if (size != n) { log.warn("DRPCPubSub in QUERY_SUBMISSION MUST have the same publishers and subscribers. You asked for {} " + "publishers or subscribers but had already created {} publishers or subscribers. Giving you the " + "{} instances that you had already created.", n, size, size); } return commonPool; }
@Override public Subscriber getSubscriber() { return context == QUERY_SUBMISSION ? getPubscriber() : new DRPCQuerySubscriber(config, maxUncommittedMessages); }
private DRPCQueryResultPubscriber getPubscriber() { return getPubscribers(1).get(0); }
@Test public void testQuerySubmissionOneInstanceIsTheSameInstance() throws Exception { config.set(DRPCConfig.PUBSUB_CONTEXT_NAME, PubSub.Context.QUERY_SUBMISSION.name()); DRPCPubSub pubSub = new DRPCPubSub(config); Publisher publisher = pubSub.getPublisher(); Subscriber subscriber = pubSub.getSubscriber(); Assert.assertTrue(publisher == subscriber); // All future calls just return the same instance Assert.assertTrue(publisher == pubSub.getPublisher()); Assert.assertTrue(subscriber == pubSub.getSubscriber()); Assert.assertTrue(pubSub.getPublisher() == pubSub.getSubscriber()); // So do calls to get multiples after List<Publisher> publishers = pubSub.getPublishers(42); List<Subscriber> subscribers = pubSub.getSubscribers(20); Assert.assertEquals(publishers.size(), 1); Assert.assertEquals(subscribers.size(), 1); Assert.assertEquals(publishers.get(0), publisher); Assert.assertEquals(subscribers.get(0), subscriber); }
@Test public void testQuerySubmissionSingleInstanceTypes() throws Exception { config.set(DRPCConfig.PUBSUB_CONTEXT_NAME, PubSub.Context.QUERY_SUBMISSION.name()); DRPCPubSub pubSub = new DRPCPubSub(config); Publisher publisher = pubSub.getPublisher(); Subscriber subscriber = pubSub.getSubscriber(); Assert.assertTrue(publisher instanceof DRPCQueryResultPubscriber); Assert.assertTrue(subscriber instanceof DRPCQueryResultPubscriber); }
@Test public void testQueryProcessingMultipleInstancesTypes() throws Exception { config.set(DRPCConfig.PUBSUB_CONTEXT_NAME, PubSub.Context.QUERY_PROCESSING.name()); DRPCPubSub pubSub = new DRPCPubSub(config); List<Publisher> publishers = pubSub.getPublishers(2); List<Subscriber> subscribers = pubSub.getSubscribers(4); Assert.assertNotNull(publishers); Assert.assertNotNull(subscribers); Assert.assertEquals(publishers.size(), 2); publishers.stream().forEach(p -> Assert.assertTrue(p instanceof DRPCResultPublisher)); Assert.assertEquals(subscribers.size(), 4); subscribers.stream().forEach(s -> Assert.assertTrue(s instanceof DRPCQuerySubscriber)); }
/** * Create a DRPCPubSub using a {@link BulletConfig}. * * @param config The BulletConfig containing settings to create a new DRPCPubSub. * @throws PubSubException if there were errors in creating an instance. */ public DRPCPubSub(BulletConfig config) throws PubSubException { super(config); this.config = new DRPCConfig(config); maxUncommittedMessages = getRequiredConfig(Number.class, DRPCConfig.DRPC_MAX_UNCOMMITED_MESSAGES).intValue(); }
@Test public void testCreation() throws Exception { DRPCPubSub pubSub = new DRPCPubSub(config); Assert.assertNotNull(pubSub); }
@Test public void testQuerySubmissionMultipleInstancesAreTheSameInstances() throws Exception { config.set(DRPCConfig.PUBSUB_CONTEXT_NAME, PubSub.Context.QUERY_SUBMISSION.name()); DRPCPubSub pubSub = new DRPCPubSub(config); List<Publisher> publishers = pubSub.getPublishers(10); List<Subscriber> subscribers = pubSub.getSubscribers(20); Assert.assertEquals(publishers.size(), 10); // If we ask for more, the size is the same as the first call Assert.assertEquals(subscribers.size(), 10); // If we ask for less, the size is the same as the first call Assert.assertEquals(pubSub.getSubscribers(1).size(), 10); // If we ask for the same, the size is the same as the first call Assert.assertEquals(pubSub.getSubscribers(10).size(), 10); // The corresponding items are the same IntStream.range(0, 9).forEach(i -> Assert.assertTrue(publishers.get(i) == subscribers.get(i))); Publisher publisher = pubSub.getPublisher(); Subscriber subscriber = pubSub.getSubscriber(); // If you ask for one, it's the first one in the list Assert.assertTrue(publisher == subscriber); Assert.assertTrue(publishers.get(0) == publisher); } }
@Test public void testQueryProcessingSingleInstanceTypes() throws Exception { config.set(DRPCConfig.PUBSUB_CONTEXT_NAME, PubSub.Context.QUERY_PROCESSING.name()); DRPCPubSub pubSub = new DRPCPubSub(config); Publisher publisher = pubSub.getPublisher(); Subscriber subscriber = pubSub.getSubscriber(); Assert.assertTrue(publisher instanceof DRPCResultPublisher); Assert.assertTrue(subscriber instanceof DRPCQuerySubscriber); }
/** * Create a DRPCPubSub using a {@link BulletConfig}. * * @param config The BulletConfig containing settings to create a new DRPCPubSub. * @throws PubSubException if there were errors in creating an instance. */ public DRPCPubSub(BulletConfig config) throws PubSubException { super(config); this.config = new DRPCConfig(config); maxUncommittedMessages = getRequiredConfig(Number.class, DRPCConfig.DRPC_MAX_UNCOMMITED_MESSAGES).intValue(); }
private DRPCQueryResultPubscriber getPubscriber() { return getPubscribers(1).get(0); }
@Override public Publisher getPublisher() { return context == QUERY_SUBMISSION ? getPubscriber() : new DRPCResultPublisher(config); }
private List<DRPCQueryResultPubscriber> getPubscribers(int n) { if (commonPool.isEmpty()) { createPubscribers(n); } int size = commonPool.size(); if (size != n) { log.warn("DRPCPubSub in QUERY_SUBMISSION MUST have the same publishers and subscribers. You asked for {} " + "publishers or subscribers but had already created {} publishers or subscribers. Giving you the " + "{} instances that you had already created.", n, size, size); } return commonPool; }
@Override public List<Subscriber> getSubscribers(int n) { if (context == QUERY_SUBMISSION) { return getPubscribers(n).stream().map(p -> (Subscriber) p).collect(Collectors.toList()); } return IntStream.range(0, n).mapToObj(i -> new DRPCQuerySubscriber(config, maxUncommittedMessages)) .collect(Collectors.toList()); }
@Override public Publisher getPublisher() { return context == QUERY_SUBMISSION ? getPubscriber() : new DRPCResultPublisher(config); }
@Override public List<Subscriber> getSubscribers(int n) { if (context == QUERY_SUBMISSION) { return getPubscribers(n).stream().map(p -> (Subscriber) p).collect(Collectors.toList()); } return IntStream.range(0, n).mapToObj(i -> new DRPCQuerySubscriber(config, maxUncommittedMessages)) .collect(Collectors.toList()); }
@Override public Subscriber getSubscriber() { return context == QUERY_SUBMISSION ? getPubscriber() : new DRPCQuerySubscriber(config, maxUncommittedMessages); }
@Override public List<Publisher> getPublishers(int n) { if (context == QUERY_SUBMISSION) { return getPubscribers(n).stream().map(p -> (Publisher) p).collect(Collectors.toList()); } return IntStream.range(0, n).mapToObj(i -> new DRPCResultPublisher(config)).collect(Collectors.toList()); }
@Override public List<Publisher> getPublishers(int n) { if (context == QUERY_SUBMISSION) { return getPubscribers(n).stream().map(p -> (Publisher) p).collect(Collectors.toList()); } return IntStream.range(0, n).mapToObj(i -> new DRPCResultPublisher(config)).collect(Collectors.toList()); }