首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用reactor-test断言指标发布

如何使用reactor-test断言指标发布
EN

Stack Overflow用户
提问于 2021-12-01 09:40:06
回答 1查看 35关注 0票数 0

我想断言一个反应式流是否发布了某些metrics。我无法使用StepVerifier触发指标发布,它也没有方法来断言任何与指标相关的内容。

订阅流确实会触发指标,但这需要管理更多的测试代码;您对使用StepVerifier打开指标发布有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-01 21:01:28

Project reactor检测micrometer是否存在,并使用micrometer提供的全局注册表。您可以通过修改globalRegistry来测试您的代码,请确保在每次测试之前(如果您愿意,也可以在之后)清除注册表。

然后,您可以通过提供SimpleMeterRegistry来测试指标生成。

这并不完美,因为它摆弄了静态注册表

代码语言:javascript
复制
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.MockClock;
import io.micrometer.core.instrument.simple.SimpleConfig;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import java.util.Set;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;

class ReactorTest {

  @Test
  void happyPathSuccess() {
    Set<MeterRegistry> registries = Metrics.globalRegistry.getRegistries();
    registries.forEach(Metrics.globalRegistry::remove);

    SimpleMeterRegistry simple = new SimpleMeterRegistry(SimpleConfig.DEFAULT, new MockClock());
    Metrics.addRegistry(simple);

    Mono.defer(() -> Mono.just("moooep moeeeep")).name("demo").metrics()
        .as(StepVerifier::create)
        .expectNext("moooep moeeeep")
        .expectComplete()
        .verify();

    long count = simple.get("demo.flow.duration")
        .tag("status", "completed")
        .tag("type", "Mono")
        .timer()
        .count();
    Assertions.assertEquals(1, count);
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70181958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档