build.gradle.kts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. plugins {
  2. id("otel.javaagent-instrumentation")
  3. id("org.unbroken-dome.test-sets")
  4. }
  5. // compiling against 1.11.0, but instrumentation should work against 1.10.33 with varying effects,
  6. // depending on the version's implementation. (i.e. DeleteOptionGroup may have less handlerCounts than
  7. // expected in 1.11.84. Testing against 1.11.0 instead of 1.10.33 because the RequestHandler class
  8. // used in testing is abstract in 1.10.33
  9. // keeping base test version on 1.11.0 because RequestHandler2 is abstract in 1.10.33,
  10. // therefore keeping base version as 1.11.0 even though the instrumentation probably
  11. // is able to support up to 1.10.33
  12. muzzle {
  13. pass {
  14. group.set("com.amazonaws")
  15. module.set("aws-java-sdk-core")
  16. versions.set("[1.10.33,)")
  17. assertInverse.set(true)
  18. }
  19. }
  20. testSets {
  21. // Features used in test_1_11_106 (builder) is available since 1.11.84, but
  22. // using 1.11.106 because of previous concerns with byte code differences
  23. // in 1.11.106, also, the DeleteOptionGroup request generates more spans
  24. // in 1.11.106 than 1.11.84.
  25. // We test older version in separate test set to test newer version and latest deps in the 'default'
  26. // test dir. Otherwise we get strange warnings in Idea.
  27. create("test_before_1_11_106")
  28. // We test SQS separately since we have special logic for it and want to make sure the presence of
  29. // SQS on the classpath doesn't conflict with tests for usage of the core SDK. This only affects
  30. // the agent.
  31. create("testSqs")
  32. }
  33. configurations {
  34. named("test_before_1_11_106RuntimeClasspath") {
  35. resolutionStrategy.force("com.amazonaws:aws-java-sdk-s3:1.11.0")
  36. resolutionStrategy.force("com.amazonaws:aws-java-sdk-rds:1.11.0")
  37. resolutionStrategy.force("com.amazonaws:aws-java-sdk-ec2:1.11.0")
  38. resolutionStrategy.force("com.amazonaws:aws-java-sdk-kinesis:1.11.0")
  39. resolutionStrategy.force("com.amazonaws:aws-java-sdk-sqs:1.11.0")
  40. resolutionStrategy.force("com.amazonaws:aws-java-sdk-sns:1.11.0")
  41. resolutionStrategy.force("com.amazonaws:aws-java-sdk-dynamodb:1.11.0")
  42. }
  43. }
  44. dependencies {
  45. compileOnly("io.opentelemetry:opentelemetry-extension-aws")
  46. implementation(project(":instrumentation:aws-sdk:aws-sdk-1.11:library"))
  47. library("com.amazonaws:aws-java-sdk-core:1.11.0")
  48. testLibrary("com.amazonaws:aws-java-sdk-s3:1.11.106")
  49. testLibrary("com.amazonaws:aws-java-sdk-rds:1.11.106")
  50. testLibrary("com.amazonaws:aws-java-sdk-ec2:1.11.106")
  51. testLibrary("com.amazonaws:aws-java-sdk-kinesis:1.11.106")
  52. testLibrary("com.amazonaws:aws-java-sdk-dynamodb:1.11.106")
  53. testLibrary("com.amazonaws:aws-java-sdk-sns:1.11.106")
  54. testImplementation(project(":instrumentation:aws-sdk:aws-sdk-1.11:testing"))
  55. add("testSqsImplementation", "com.amazonaws:aws-java-sdk-sqs:1.11.106")
  56. // Include httpclient instrumentation for testing because it is a dependency for aws-sdk.
  57. testInstrumentation(project(":instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent"))
  58. // needed for kinesis:
  59. testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-cbor")
  60. // needed for SNS
  61. testImplementation("org.testcontainers:localstack")
  62. // needed by S3
  63. testImplementation("javax.xml.bind:jaxb-api:2.3.1")
  64. add("test_before_1_11_106Implementation", "com.amazonaws:aws-java-sdk-s3:1.11.0")
  65. add("test_before_1_11_106Implementation", "com.amazonaws:aws-java-sdk-rds:1.11.0")
  66. add("test_before_1_11_106Implementation", "com.amazonaws:aws-java-sdk-ec2:1.11.0")
  67. add("test_before_1_11_106Implementation", "com.amazonaws:aws-java-sdk-kinesis:1.11.0")
  68. add("test_before_1_11_106Implementation", "com.amazonaws:aws-java-sdk-dynamodb:1.11.0")
  69. add("test_before_1_11_106Implementation", "com.amazonaws:aws-java-sdk-sns:1.11.0")
  70. }
  71. tasks {
  72. val test_before_1_11_106 by existing
  73. val testSqs by existing
  74. if (!(findProperty("testLatestDeps") as Boolean)) {
  75. named("check") {
  76. dependsOn(test_before_1_11_106)
  77. dependsOn(testSqs)
  78. }
  79. }
  80. test {
  81. systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
  82. }
  83. withType<Test>().configureEach {
  84. // TODO run tests both with and without experimental span attributes
  85. jvmArgs("-Dotel.instrumentation.aws-sdk.experimental-span-attributes=true")
  86. }
  87. }