2019-01-02 18:55:26 +08:00
|
|
|
/*
|
2021-01-08 17:55:38 +01:00
|
|
|
* Copyright (C) 2009-2021 Lightbend Inc. <https://www.lightbend.com>
|
2014-12-12 11:49:32 -06:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package akka
|
|
|
|
|
|
|
|
|
|
import sbt._
|
|
|
|
|
import sbt.Keys._
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sigar java agent injection build settings.
|
|
|
|
|
*/
|
|
|
|
|
object SigarLoader {
|
|
|
|
|
|
|
|
|
|
import Dependencies.Compile.Provided.sigarLoader
|
|
|
|
|
|
|
|
|
|
/** Enable Sigar java agent injection during tests. */
|
|
|
|
|
lazy val sigarTestEnabled = sys.props.get("akka.test.sigar").getOrElse("false").toBoolean
|
|
|
|
|
|
|
|
|
|
lazy val sigarArtifact = TaskKey[File]("sigar-artifact", "Location of Sigar java agent jar.")
|
|
|
|
|
|
|
|
|
|
lazy val sigarOptions = TaskKey[String]("sigar-options", "JVM command line options for Sigar java agent.")
|
|
|
|
|
|
|
|
|
|
lazy val sigarFolder = SettingKey[File]("sigar-folder", "Location of native library extracted by Sigar java agent.")
|
|
|
|
|
|
|
|
|
|
/** Sigar agent command line option property. */
|
|
|
|
|
val sigarFolderProperty = "kamon.sigar.folder"
|
|
|
|
|
|
|
|
|
|
// TODO remove Sigar form test:test* classpath, it is provided by Sigar agent.
|
|
|
|
|
lazy val sigarSettings = {
|
|
|
|
|
Seq(
|
|
|
|
|
//
|
|
|
|
|
// Prepare Sigar agent options.
|
2017-03-15 14:36:25 +01:00
|
|
|
sigarArtifact := {
|
|
|
|
|
val report = update.value
|
2021-02-01 15:38:29 +00:00
|
|
|
val artifactList =
|
|
|
|
|
report.matching(moduleFilter(organization = sigarLoader.organization, name = sigarLoader.name))
|
2017-03-15 14:36:25 +01:00
|
|
|
require(artifactList.size == 1, "Expecting single artifact, while found: " + artifactList)
|
|
|
|
|
artifactList.head
|
|
|
|
|
},
|
2014-12-12 11:49:32 -06:00
|
|
|
sigarFolder := target.value / "native",
|
2017-03-15 14:36:25 +01:00
|
|
|
sigarOptions := "-javaagent:" + sigarArtifact.value + "=" + sigarFolderProperty + "=" + sigarFolder.value,
|
2014-12-12 11:49:32 -06:00
|
|
|
//
|
2021-05-25 12:50:51 +02:00
|
|
|
Test / fork := true) ++ (// Invoke Sigar agent at JVM init time, to extract and load native Sigar library.
|
|
|
|
|
if (sigarTestEnabled) Seq(Test / javaOptions += sigarOptions.value)
|
2021-02-01 15:38:29 +00:00
|
|
|
else Seq())
|
2014-12-12 11:49:32 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|