@Before public void setup() { ConfigFactory config = mock(ConfigFactory.class); when(config.getDoubleProperty(Configs.CONSUMER_RATE_CONVERGENCE_FACTOR)).thenReturn(0.5); when(config.getIntProperty(Configs.CONSUMER_RATE_LIMITER_SLOW_MODE_DELAY)).thenReturn(1); when(config.getIntProperty(Configs.CONSUMER_RATE_LIMITER_HEARTBEAT_MODE_DELAY)).thenReturn(60); subscription = subscription("group.topic", "subscription").withSubscriptionPolicy( SubscriptionPolicy.Builder.subscriptionPolicy().withRate(200).build() ).build(); NegotiatedMaxRateProvider maxRateProvider = mock(NegotiatedMaxRateProvider.class); when(maxRateProvider.get()).thenReturn(100D); calculator = new OutputRateCalculator(config, maxRateProvider); }
@Test public void shouldDelaySendingMessageForHalfSecond() { // given Subscription subscription = subscriptionBuilderWithTestValues() .withSubscriptionPolicy(subscriptionPolicy().applyDefaults() .withSendingDelay(500) .build()) .build(); setUpMetrics(subscription); Message message = message(); when(messageSender.send(message)).thenReturn(success()); ConsumerMessageSender sender = consumerMessageSender(subscription); // when long sendingStartTime = System.currentTimeMillis(); sender.sendAsync(message); verify(successHandler, timeout(1000)).handleSuccess(eq(message), eq(subscription), any(MessageSendingResult.class)); // then long sendingTime = System.currentTimeMillis() - sendingStartTime; assertThat(sendingTime).isGreaterThan(500); }
@Test public void shouldApplyPatchToSubscriptionPolicy() { //given PatchData patch = patchData().set("rate", 8).build(); //when SubscriptionPolicy subscription = subscriptionPolicy() .withRate(1) .applyPatch(patch).build(); //then assertThat(subscription.getRate()).isEqualTo(8); }
public Subscription createSubscription(Topic topic, String subscriptionName, String endpoint, ContentType contentType, SubscriptionMode mode, Subscription.State state) { Subscription subscription = subscription(topic, subscriptionName) .withEndpoint(endpoint) .withContentType(contentType) .withSubscriptionPolicy(subscriptionPolicy().applyDefaults().build()) .withMode(mode) .withState(state) .build(); return createSubscription(topic, subscription); }
public Subscription createSubscription(Topic topic, String subscriptionName, String endpoint, ContentType contentType, SubscriptionMode mode, Subscription.State state) { Subscription subscription = subscription(topic, subscriptionName) .withEndpoint(endpoint) .withContentType(contentType) .withSubscriptionPolicy(subscriptionPolicy().applyDefaults().build()) .withMode(mode) .withState(state) .build(); return createSubscription(topic, subscription); }
public SubscriptionBuilder withRequestTimeout(int timeout) { SubscriptionPolicy policy = this.serialSubscriptionPolicy; this.serialSubscriptionPolicy = SubscriptionPolicy.Builder.subscriptionPolicy().withRate(policy.getRate()) .withMessageTtl(policy.getMessageTtl()).withMessageBackoff(policy.getMessageBackoff()) .withRequestTimeout(timeout).build(); return this; }
public SubscriptionBuilder withRequestTimeout(int timeout) { SubscriptionPolicy policy = this.serialSubscriptionPolicy; this.serialSubscriptionPolicy = SubscriptionPolicy.Builder.subscriptionPolicy().withRate(policy.getRate()) .withMessageTtl(policy.getMessageTtl()).withMessageBackoff(policy.getMessageBackoff()) .withRequestTimeout(timeout).build(); return this; }
private Subscription subscriptionWithBackoff(int backoff) { return subscriptionBuilderWithTestValues() .withSubscriptionPolicy(subscriptionPolicy().applyDefaults() .withMessageBackoff(backoff) .build()) .build(); }
private Subscription subscriptionWithTtl(int ttl) { return subscriptionBuilderWithTestValues() .withSubscriptionPolicy(subscriptionPolicy().applyDefaults() .withMessageTtl(ttl) .build()) .build(); }
@Test public void shouldIgnoreUnknownFields() { //given SubscriptionPolicy policy = subscriptionPolicy().withRate(10).build(); PatchData patch = patchData().set("unknown", 10).set("messageTtl", 30).build(); // when SubscriptionPolicy patched = Patch.apply(policy, patch); // then assertThat(patched.getMessageTtl()).isEqualTo(30); }
private Subscription subscriptionWithTtlAndClientErrorRetry(int ttl) { return subscriptionBuilderWithTestValues() .withSubscriptionPolicy(subscriptionPolicy().applyDefaults() .withMessageTtl(ttl) .withClientErrorRetry() .build()) .build(); }