daml/ledger-service/http-json/BUILD.bazel
Andreas Herrmann 39a38d3a37
Update to Java 11 (#11512)
* Update to Java 11

changelog_begin
changelog_end

* Fix RoundingMode deprecation warnings

* Fix dep-ann warning

* Integer constructor

* JavaX annotation dependency

* javax.xml.bind was removed in Java 11

Using Guava as a replacement, since it is already a project dependency.

* JDK 11 no longer has a separate JRE tree

* Remove unused jdk_nix import

* remove now redundant jdk11_nix

* Java 8 --> 9 increased Instant.now() precision

See https://bugs.openjdk.java.net/browse/JDK-8068730

The precision of `Instant.now()` increased between Java 8 and Java 9.
On Linux and MacOS this doesn't seem to be a problem, as the precision
still seems to be at micro seconds. However, on Windows this now causes
errors of the following form:
```
java.lang.IllegalArgumentException: Conversion of Instant
2021-11-05T13:58:56.726875100Z to microsecond granularity would result
in loss of precision.
```
Suggesting that it now offers sub-microsecond precision.

`TimestampConversion.instantToMicros` had a check to fail if the
conversion lead to a loss of precision. In the specific failing test
case this is not a concern, so this adds a `roundInstantToMicros`
variant that avoids this kind of error.

* TMP round timestamps

* Revert "TMP round timestamps"

This reverts commit af8e261278.

* Skip versions before 1.6.0 in migration tests

changelog_begin
changelog_end

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
2021-11-18 14:48:37 +00:00

611 lines
22 KiB
Python

# Copyright (c) 2021 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
load(
"//bazel_tools:scala.bzl",
"da_scala_benchmark_jmh",
"da_scala_binary",
"da_scala_library",
"da_scala_test",
"da_scala_test_suite",
"kind_projector_plugin",
"lf_scalacopts",
"silencer_plugin",
)
load("//rules_daml:daml.bzl", "daml_compile")
load("@os_info//:os_info.bzl", "is_windows")
load("@scala_version//:index.bzl", "scala_major_version")
hj_scalacopts = lf_scalacopts + [
"-P:wartremover:traverser:org.wartremover.warts.NonUnitStatements",
]
[
da_scala_library(
name = "http-json-{}".format(edition),
srcs = glob(["src/main/scala/**/*.scala"]),
plugins = [
kind_projector_plugin,
silencer_plugin,
],
scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_github_scopt_scopt",
"@maven//:com_typesafe_akka_akka_http",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:io_spray_spray_json",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_tpolecat_doobie_postgres",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
],
scalacopts = hj_scalacopts,
tags = ["maven_coordinates=com.daml:http-json:__VERSION__"],
visibility = ["//visibility:public"],
runtime_deps = [
"@maven//:ch_qos_logback_logback_classic",
"@maven//:org_codehaus_janino_janino",
],
deps = [
"//runtime-components/jdbc-drivers:jdbc-drivers-{}".format(edition),
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-service/http-json-cli:{}".format(edition),
"//ledger-service/http-json-ledger-client:{}".format(edition),
"//ledger-service/cli-opts",
"//ledger-service/db-backend",
"//ledger-service/fetch-contracts",
"//ledger-service/jwt",
"//ledger-service/lf-value-json",
"//ledger-service/utils",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//ledger/ledger-resources",
"//ledger/metrics",
"//libs-scala/concurrent",
"//libs-scala/contextualized-logging",
"//libs-scala/db-utils",
"//libs-scala/doobie-slf4j",
"//libs-scala/logging-entries",
"//libs-scala/ports",
"//libs-scala/resources",
"//libs-scala/scala-utils",
"@maven//:io_dropwizard_metrics_metrics_core",
],
)
for edition in [
"ce",
"ee",
]
]
alias(
name = "http-json",
actual = "http-json-ce",
visibility = ["//visibility:public"],
)
json_scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_github_scopt_scopt",
"@maven//:com_typesafe_akka_akka_http",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_akka_akka_http_spray_json",
"@maven//:com_typesafe_akka_akka_slf4j",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_tpolecat_doobie_postgres",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
]
json_deps_shared = [
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//language-support/scala/bindings-akka",
"//ledger/metrics",
"//ledger-api/rs-grpc-bridge",
"//ledger-service/db-backend",
"//ledger-service/jwt",
"//ledger-service/lf-value-json",
"//ledger-service/utils",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//libs-scala/db-utils",
"//libs-scala/auth-utils",
"//libs-scala/ports",
"//libs-scala/scala-utils",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:io_dropwizard_metrics_metrics_core",
]
json_deps = {
"ce": json_deps_shared + [
":http-json-ce",
"//ledger-service/http-json-cli:ce",
"//ledger-service/http-json-ledger-client:ce",
],
"ee": json_deps_shared + [
":http-json-ee",
"//ledger-service/http-json-cli:ee",
"//ledger-service/http-json-ledger-client:ee",
"@maven//:com_oracle_database_jdbc_ojdbc8",
],
}
da_scala_binary(
name = "http-json-binary",
main_class = "com.daml.http.Main",
resources = [
":src/main/resources/application.conf",
":src/main/resources/logback.xml",
],
scala_deps = json_scala_deps,
scalacopts = hj_scalacopts,
tags = [
"maven_coordinates=com.daml:http-json-deploy:__VERSION__",
"no_scala_version_suffix",
],
visibility = ["//visibility:public"],
deps = json_deps.get("ce"),
)
da_scala_binary(
name = "http-json-binary-ee",
main_class = "com.daml.http.Main",
resources = [
":src/main/resources/application.conf",
":src/main/resources/logback.xml",
],
scala_deps = json_scala_deps,
scalacopts = hj_scalacopts,
tags = [
"maven_coordinates=com.daml:http-json-deploy:__VERSION__",
"no_scala_version_suffix",
],
visibility = ["//visibility:public"],
deps = json_deps.get("ee"),
)
daml_compile(
name = "Account",
srcs = ["src/it/daml/Account.daml"],
visibility = ["//ledger-service:__subpackages__"],
)
daml_compile(
name = "User",
srcs = ["src/it/daml/User.daml"],
visibility = ["//ledger-service:__subpackages__"],
)
[
da_scala_test(
name = "tests-{}".format(edition),
size = "medium",
srcs = glob(["src/test/scala/**/*.scala"]),
data = [
"//ledger/test-common/test-certificates",
],
plugins = [
kind_projector_plugin,
silencer_plugin,
],
scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:io_spray_spray_json",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalacheck_scalacheck",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalatest_scalatest_wordspec",
"@maven//:org_scalatestplus_scalacheck_1_15",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_scalaz_scalaz_scalacheck_binding",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
],
scalacopts = hj_scalacopts,
deps = [
":http-json-{}".format(edition),
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//daml-lf/transaction-test-lib",
"//language-support/scala/bindings-akka",
"//ledger-service/db-backend",
"//ledger-service/fetch-contracts",
"//ledger/metrics",
"//ledger-service/http-json-cli:{}".format(edition),
"//ledger-service/http-json-testing:{}".format(edition),
"//ledger-service/cli-opts",
"//ledger-service/jwt",
"//ledger-service/lf-value-json",
"//ledger-service/utils",
"//ledger/ledger-api-common",
"//libs-scala/contextualized-logging",
"//libs-scala/db-utils",
"//libs-scala/logging-entries",
"//libs-scala/scala-utils",
"//libs-scala/scalatest-utils",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_scalatest_scalatest_compatible",
],
)
for edition in [
"ce",
"ee",
]
]
alias(
name = "tests",
actual = "tests-ce",
)
[
da_scala_library(
name = "integration-tests-lib-{}".format(edition),
srcs = glob(["src/itlib/scala/**/*.scala"]),
plugins = [silencer_plugin],
resources = glob(["src/itlib/resources/**/*"]),
scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalacheck_scalacheck",
"@maven//:org_scalactic_scalactic",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalatest_scalatest_freespec",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_hikari",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
],
visibility = ["//ledger-service:__subpackages__"],
deps = [
":http-json-{}".format(edition),
"//bazel_tools/runfiles:scala_runfiles",
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//daml-lf/transaction-test-lib",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger-service/fetch-contracts",
"//ledger/ledger-resources",
"//ledger/metrics",
"//ledger/sandbox:sandbox-scala-tests-lib",
"//ledger/sandbox-common",
"//ledger/sandbox-common:sandbox-common-scala-tests-lib",
"//ledger-service/http-json-cli:{}".format(edition),
"//ledger-service/http-json-testing:{}".format(edition),
"//ledger-service/db-backend",
"//ledger-service/jwt",
"//ledger-service/utils",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//ledger/test-common:dar-files-default-lib",
"//libs-scala/contextualized-logging",
"//libs-scala/db-utils",
"//libs-scala/doobie-slf4j",
"//libs-scala/ports",
"//libs-scala/ports:ports-testing",
"//libs-scala/postgresql-testing",
"//libs-scala/resources",
"//libs-scala/resources-grpc",
"//runtime-components/non-repudiation",
"//runtime-components/non-repudiation-postgresql",
"//runtime-components/non-repudiation-testing",
"@maven//:com_google_guava_guava",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_scalatest_scalatest_compatible",
],
)
for edition in [
"ce",
"ee",
]
]
alias(
name = "integration-tests-lib",
actual = "integration-tests-lib-ce",
)
[
da_scala_library(
name = "integration-tests-lib-postgres-{}".format(edition),
srcs = glob([
"src/itpostgres/scala/**/*.scala",
]),
plugins = [
kind_projector_plugin,
silencer_plugin,
],
scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scalactic_scalactic",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalaz_scalaz_core",
],
scalacopts = hj_scalacopts,
deps = [
":http-json-{}".format(edition),
":integration-tests-lib-{}".format(edition),
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//daml-lf/transaction-test-lib",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger-service/fetch-contracts",
"//ledger/ledger-api-auth",
"//ledger/ledger-resources",
"//ledger/metrics",
"//ledger/sandbox:sandbox-scala-tests-lib",
"//ledger/sandbox-common",
"//ledger/sandbox-common:sandbox-common-scala-tests-lib",
"//ledger-service/http-json-cli:{}".format(edition),
"//ledger-service/http-json-testing:{}".format(edition),
"//ledger-service/jwt",
"//ledger-service/utils",
"//libs-scala/db-utils",
"//libs-scala/ports",
"//libs-scala/postgresql-testing",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_scalatest_scalatest_compatible",
],
)
for edition in [
"ce",
"ee",
]
]
[
da_scala_test_suite(
name = "integration-tests-{}".format(edition),
size = "large",
srcs = glob([
"src/it/scala/**/*.scala",
"src/it/edition/{}/**/*.scala".format(edition),
]),
args = [
"-l",
"skip_scala_2_12",
] if scala_major_version == "2.12" else [],
data = [
":Account.dar",
":User.dar",
"//docs:quickstart-model.dar",
"//ledger/test-common:dar-files",
"//ledger/test-common/test-certificates",
],
# TODO https://github.com/digital-asset/daml/issues/11585
flaky = True,
plugins = [
kind_projector_plugin,
silencer_plugin,
],
resources = glob(["src/it/resources/**/*"]),
scala_deps = [
"@maven//:com_chuusai_shapeless",
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scalacheck_scalacheck",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalatest_scalatest_flatspec",
"@maven//:org_scalatest_scalatest_freespec",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_tpolecat_doobie_postgres",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:org_typelevel_cats_kernel",
"@maven//:org_scala_lang_modules_scala_collection_compat",
],
scalacopts = hj_scalacopts,
deps = [
":http-json-{}".format(edition),
":integration-tests-lib-{}".format(edition),
":integration-tests-lib-postgres-{}".format(edition),
"//bazel_tools/runfiles:scala_runfiles",
"//daml-lf/data",
"//daml-lf/interface",
"//daml-lf/transaction",
"//daml-lf/transaction-test-lib",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger-service/db-backend",
"//ledger-service/fetch-contracts",
"//ledger/ledger-api-auth",
"//ledger/ledger-resources",
"//ledger/metrics",
"//ledger/sandbox:sandbox-scala-tests-lib",
"//ledger/sandbox-common",
"//ledger/sandbox-common:sandbox-common-scala-tests-lib",
"//ledger-service/http-json-cli:{}".format(edition),
"//ledger-service/http-json-testing:{}".format(edition),
"//ledger-service/jwt",
"//ledger-service/utils",
"//libs-scala/contextualized-logging",
"//libs-scala/db-utils",
"//libs-scala/ports",
"//libs-scala/postgresql-testing",
"//libs-scala/resources",
"//libs-scala/scala-utils",
"//runtime-components/non-repudiation",
"//runtime-components/non-repudiation-postgresql",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_scalatest_scalatest_compatible",
],
)
for edition in [
"ce",
"ee",
]
]
test_suite(
name = "integration-tests",
tests = ["integration-tests-ce"],
)
[
da_scala_test(
name = "failure-tests-{}".format(edition),
srcs = glob(["src/failure/scala/**/*.scala"]),
data = [
":Account.dar",
"//docs:quickstart-model.dar",
"//ledger/test-common:dar-files",
"//ledger/test-common/test-certificates",
"@toxiproxy_dev_env//:bin/toxiproxy-cmd" if not is_windows else "@toxiproxy_dev_env//:toxiproxy-server-windows-amd64.exe",
],
# See https://github.com/digital-asset/daml/issues/9886
flaky = True,
plugins = [
kind_projector_plugin,
],
resources = glob(["src/failure/resources/**/*"]),
scala_deps = [
"@maven//:com_typesafe_akka_akka_http_core",
"@maven//:com_typesafe_scala_logging_scala_logging",
"@maven//:io_spray_spray_json",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalatest_scalatest_freespec",
"@maven//:org_scalatest_scalatest_matchers_core",
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalaz_scalaz_core",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
],
scalacopts = hj_scalacopts,
deps = [
":http-json-{}".format(edition),
"//bazel_tools/runfiles:scala_runfiles",
"//daml-lf/data",
"//language-support/scala/bindings-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger-service/fetch-contracts",
"//ledger/ledger-configuration",
"//libs-scala/contextualized-logging",
"//ledger-service/http-json-cli:{}".format(edition),
"//ledger-service/http-json-testing:{}".format(edition),
"//ledger-service/jwt",
"//ledger-service/utils",
"//ledger/caching",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//ledger/ledger-resources",
"//ledger/metrics",
"//ledger/participant-integration-api",
"//ledger/participant-integration-api:participant-integration-api-tests-lib",
"//ledger/sandbox",
"//ledger/sandbox-common",
"//ledger/sandbox-common:sandbox-common-scala-tests-lib",
"//libs-scala/db-utils",
"//libs-scala/ports",
"//libs-scala/ports:ports-testing",
"//libs-scala/postgresql-testing",
"//libs-scala/resources",
"//libs-scala/timer-utils",
"@maven//:eu_rekawek_toxiproxy_toxiproxy_java_2_1_3",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_scalatest_scalatest_compatible",
],
)
for edition in [
"ce",
"ee",
]
]
test_suite(
name = "failure-tests",
tests = ["failure-tests-ce"],
)
exports_files(["src/main/resources/logback.xml"])
da_scala_benchmark_jmh(
name = "contractdao-bench",
srcs = glob(["src/bench/scala/**/*.scala"]),
scala_deps = [
"@maven//:org_scalaz_scalaz_core",
"@maven//:io_spray_spray_json",
"@maven//:org_tpolecat_doobie_core",
"@maven//:org_tpolecat_doobie_free",
"@maven//:org_typelevel_cats_kernel",
"@maven//:org_typelevel_cats_core",
"@maven//:org_typelevel_cats_effect",
"@maven//:org_typelevel_cats_free",
"@maven//:com_chuusai_shapeless",
"@maven//:com_typesafe_scala_logging_scala_logging",
],
deps = [
":http-json",
"//daml-lf/interface",
"//language-support/scala/bindings",
"//ledger-service/db-backend",
"//ledger-service/fetch-contracts",
"//ledger-service/http-json-cli:base",
"//ledger-service/utils",
"//ledger/metrics",
"//libs-scala/contextualized-logging",
"//libs-scala/db-utils",
"//libs-scala/doobie-slf4j",
"//libs-scala/oracle-testing",
"//libs-scala/ports",
"//libs-scala/postgresql-testing",
"//libs-scala/scala-utils",
"@maven//:com_oracle_database_jdbc_ojdbc8",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_slf4j_slf4j_api",
],
)