首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在精巧的测试中查看诊断调试信息以修复性能差的问题?

如何在精巧的测试中查看诊断调试信息以修复性能差的问题?
EN

Stack Overflow用户
提问于 2016-03-22 16:18:48
回答 1查看 171关注 0票数 0

我很难弄清楚在缓慢执行的集成测试中发生了什么,使用巧妙的方法写入数据库。但是,我不知道如何通过SLF4J访问诊断日志记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 16:18:48

我最终自己解决了这个问题,答案有两个部分。

性能差的

我意识到我糟糕的性能是因为异步API的同步测试。我使用Scalatest和基于Scalacheck属性的测试,并使用futureValue方法阻止异步请求。出于某种原因,我已经将PatienceConfigurationPatienceConfiguration设置为500 in,因此每个futureValue调用至少花费半秒时间,尽管数据库查询通常在最多20 in内执行,并且通常小于10 in。我最终把间隔缩短到2ms,性能得到了很大的提高。

Scalatest 3有适当的异步测试支持,尽管从3.0.0到M15,GeneratorDrivenPropertyChecks目前不支持异步。这个可能会改变

诊断测井

我安装了SLF4J简单日志后端和"org.slf4j" % "slf4j-simple" % "1.7.12"的SBT libraryDependencies条目。通过通过简单记录器属性设置application.conf无法使它正常工作。

我设置了一个Java属性,告诉SLF4J--简单地登录调试模式org.slf4j.simpleLogger.defaultLogLevel=debug,然后在SBT提示符下运行test。因为这导致了来自灵活查询编译器的大量输出,所以我将编译器的记录器的调试输出设置为info,这在很大程度上压缩了额外的输出,方法是添加属性org.slf4j.simpleLogger.log.slick.compiler=info。您可以通过这种方式修改与前缀匹配的记录器级别。

实际上,设置属性是一个非平凡的问题。我尝试了几种方法:

  • 通过Typesafe (test/resources/application.conf)添加org.slf4j.simpleLogger.defaultLogLevel=debug设置属性无效。通常,对于在分析配置之前由系统属性设置的东西,情况就是这样,所以我假设这是记录器的情况。
  • 在启动SBT时,通过使用sbt -Dorg.slf4j.simpleLogger.defaultLogLevel=debug启动SBT,但只有在非分叉JVM中运行具有SBT设置fork in test := false的测试时,才能从命令行设置属性。
  • 使用javaOptions += "org.slf4j.simpleLogger.defaultLogLevel=debug"设置SBT中的属性不起作用,分叉JVM与否。
  • 通过将org.slf4j.simpleLogger.defaultLogLevel=debug添加到test/resources/simplelogger.properties来设置属性,既适用于分叉JVM,也适用于取消分叉的JVM。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36159790

复制
相关文章

相似问题

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