2016-03-22 19 views

答えて

2

私は最終的には自分でこれを考え出した、との答えには2つのコンポーネントがあります。

悪いパフォーマンス

私は、パフォーマンスの低下は、非同期のAPIの同期テストの口座にあったことに気づきました。私はScalacheckプロパティベースのテストと一緒にScalatestを使用して、非同期要求にブロッキングfutureValueアプローチを使用しています。何らかの理由で、私は500ミリ秒にPatienceConfigurationintervalを設定していた、などあらゆるfutureValueコールは、データベース自体は通常、ほとんどの20msの時で実行され、通常は< 10msの照会にもかかわらず、少なくとも半秒取っていました。私は最終的に2msに間隔を落とし、パフォーマンスが大幅に向上しました。

Scalatest 3は適切な非同期テストをサポートしていますが、現在3.0.0-M15ではGeneratorDrivenPropertyChecksはasyncをサポートしていません。これはmight changeです。

診断ログは、私が"org.slf4j" % "slf4j-simple" % "1.7.12"のSBT libraryDependenciesエントリとSLF4Jシンプルなログのバックエンドをインストールしました。私はそれがapplication.confを通じてsimple logger propertiesを設定することにより、適切に動作させることができませんでした。

私はSLF4J-simpleにデバッグモードでログインするためにorg.slf4j.simpleLogger.defaultLogLevel=debugとし、その後SBTプロンプトでtestを実行するようにJavaシステムプロパティを設定しました。これはSlickクエリーコンパイラの出力が不合理になったため、そのコンパイラのロガーのデバッグ出力をinfoに戻しました。これは、余分な出力を大きく縮めました。プロパティーはorg.slf4j.simpleLogger.log.slick.compiler=infoです。この方法で接頭辞に一致するロガーレベルを変更することができます。

実際にプロパティを設定することは、ささいな問題ではないことが判明しました。 org.slf4j.simpleLogger.defaultLogLevel=debugない仕事をした追加することにより、タイプセーフの設定(test/resources/application.conf)を経由してプロパティを設定

  • :私はいくつかのアプローチを試してみました。通常、これは設定が解析される前に、システムプロパティで設定されているものの場合であるので、私は、これはロガーの場合であると仮定します。

  • sbt -Dorg.slf4j.simpleLogger.defaultLogLevel=debugでSBTを開始することにより、SBTが働いていた起動時にコマンドラインからプロパティを設定

    が、のみ SBTがfork in test := falseを設定すると非フォークJVMでテストを実行している場合。 javaOptions += "org.slf4j.simpleLogger.defaultLogLevel=debug"を使用してSBTからプロパティを設定する

  • ない仕事、フォークJVMかどうかをしました。

  • org.slf4j.simpleLogger.defaultLogLevel=debugtest/resources/simplelogger.propertiesを追加することでプロパティを設定すると、forked JVMとunforkedの両方で機能します。

関連する問題