### Question:
MicrometerRSocket implements RSocket { @Override public Flux<Payload> requestChannel(Publisher<Payload> payloads) { return delegate.requestChannel(payloads).doFinally(requestChannel); } MicrometerRSocket(RSocket delegate, MeterRegistry meterRegistry, Tag... tags); @Override void dispose(); @Override Mono<Void> fireAndForget(Payload payload); @Override Mono<Void> metadataPush(Payload payload); @Override Mono<Void> onClose(); @Override Flux<Payload> requestChannel(Publisher<Payload> payloads); @Override Mono<Payload> requestResponse(Payload payload); @Override Flux<Payload> requestStream(Payload payload);  }### Answer:
@DisplayName("requestChannel gathers metrics") @Test void requestChannel() { Mono<Payload> payload = Mono.just(DefaultPayload.create("test-metadata", "test-data")); when(delegate.requestChannel(payload)).thenReturn(Flux.empty()); new MicrometerRSocket(delegate, meterRegistry, Tag.of("test-key", "test-value")) .requestChannel(payload) .as(StepVerifier::create) .verifyComplete(); assertThat(findCounter("request.channel", SignalType.ON_COMPLETE).count()).isEqualTo(1); }