pekko/project/SigarLoader.scala
Andrea Peruffo da70e0ccd4
Scala 3 cross compatible akka-actor / akka-testkit / akka-actor-tests (#29956)
* Remove @switch when it doesn't take effect
* Use ActorRef.noSender
* Minor tweaks to SchedulerSpec
* Disambiguate TypedActor for Scala 3
* Bump ScalaTest to a version compatible with Scala 3
* Bump ScalaCheck
* Disambiguate Event in SupervisorHierarchySpec
* Scala 3 compatible EventBusSpec
* Prevent private unused variables to be erased by Scala 3
* Bump mockito
* Explicit actorRef2Scala import
* restore original .scalafix.conf
* Scala 3 compatible tailrec
* Reminder to re add switch annotation in case
* Move to nowarn instead of silencer
* Bump to Scala 2.12.13
* Cross compatible annotations
* fix docs generation
* adapt the build for Scala 3
* fix errors but bus
* remove more SerialVersion from trait
* scalacheck only from scalatest
* cross-compile akka-actor-tests
* restore cross-compilation
* early initializers workaround
* scalacheck switch
* cross compatible FSM.State class
* cross compatible LARS spec
* Change results to pass LineNumberSpec
* fix stackoverflow in AsyncDnsResolverIntegrationSpec
* FSM.State unapply
* fix Scala 2.13 mima
* SerialVersionRemover compiler plugin
* removed unused nowarns
2021-02-01 16:38:29 +01:00

49 lines
1.7 KiB
Scala

/*
* Copyright (C) 2009-2021 Lightbend Inc. <https://www.lightbend.com>
*/
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.
sigarArtifact := {
val report = update.value
val artifactList =
report.matching(moduleFilter(organization = sigarLoader.organization, name = sigarLoader.name))
require(artifactList.size == 1, "Expecting single artifact, while found: " + artifactList)
artifactList.head
},
sigarFolder := target.value / "native",
sigarOptions := "-javaagent:" + sigarArtifact.value + "=" + sigarFolderProperty + "=" + sigarFolder.value,
//
fork in Test := true) ++ (// Invoke Sigar agent at JVM init time, to extract and load native Sigar library.
if (sigarTestEnabled) Seq(javaOptions in Test += sigarOptions.value)
else Seq())
}
}