daml/ledger/sandbox/BUILD.bazel
Stefano Baghino 12d7ad809b Move all Api...Service classes to Sandbox package (#3995)
This is done to restrict the usage of NamedLoggerFactory and most usages of MetricsRegistry
to a single Bazel package, thus allowing a possible replacement to not have to become a
dependency of multiple packages.

CHANGELOG_BEGIN
CHANGELOG_END
2020-01-09 14:28:09 +00:00

409 lines
14 KiB
Python

# Copyright (c) 2020 The DAML Authors. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
load("//rules_daml:daml.bzl", "daml_compile")
load("//bazel_tools:scala.bzl", "da_scala_binary", "da_scala_library", "da_scala_test_suite")
load("//bazel_tools:pom_file.bzl", "pom_file")
load("//ledger/ledger-api-test-tool:conformance.bzl", "server_conformance_test")
load("@io_bazel_rules_docker//container:container.bzl", "container_image")
load("@io_bazel_rules_docker//java:image.bzl", "java_image")
load("@os_info//:os_info.bzl", "is_windows")
da_scala_library(
name = "sandbox",
srcs = glob(["src/main/scala/**/*.scala"]),
resources =
glob(
["src/main/resources/**/*"],
# Do not include logback.xml into the library: let the user
# of the sandbox-as-a-library decide how to log.
exclude = ["src/main/resources/logback.xml"],
) + [
"//:COMPONENT-VERSION",
],
tags = ["maven_coordinates=com.digitalasset.platform:sandbox:__VERSION__"],
visibility = [
"//visibility:public",
],
runtime_deps = [
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:com_h2database_h2",
"@maven//:org_postgresql_postgresql",
],
deps = [
"//daml-lf/archive:daml_lf_archive_reader",
"//daml-lf/archive:daml_lf_dev_archive_java_proto",
"//daml-lf/data",
"//daml-lf/engine",
"//daml-lf/interpreter",
"//daml-lf/language",
"//daml-lf/scenario-interpreter",
"//daml-lf/transaction",
"//daml-lf/transaction:transaction_java_proto",
"//daml-lf/transaction:value_java_proto",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-service/jwt",
"//ledger/ledger-api-akka",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-client",
"//ledger/ledger-api-common",
"//ledger/ledger-api-domain",
"//ledger/ledger-api-health",
"//ledger/ledger-api-scala-logging",
"//ledger/ledger-api-scala-logging:ledger-api-scala-logging-base",
"//ledger/participant-state",
"//ledger/participant-state-index",
"//libs-scala/direct-execution-context",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:com_github_scopt_scopt_2_12",
"@maven//:com_google_guava_guava",
"@maven//:com_typesafe_akka_akka_actor_2_12",
"@maven//:com_typesafe_akka_akka_stream_2_12",
"@maven//:com_typesafe_config",
"@maven//:com_typesafe_play_anorm_2_12",
"@maven//:com_typesafe_play_anorm_tokenizer_2_12",
"@maven//:com_typesafe_scala_logging_scala_logging_2_12",
"@maven//:com_zaxxer_HikariCP",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:io_dropwizard_metrics_metrics_jmx",
"@maven//:io_grpc_grpc_netty",
"@maven//:io_grpc_grpc_services",
"@maven//:io_netty_netty_common",
"@maven//:io_netty_netty_handler",
"@maven//:io_netty_netty_transport",
"@maven//:io_zipkin_brave_brave",
"@maven//:org_flywaydb_flyway_core",
"@maven//:org_scala_lang_modules_scala_java8_compat_2_12",
"@maven//:org_scalaz_scalaz_core_2_12",
"@maven//:org_slf4j_slf4j_api",
],
)
da_scala_library(
name = "ledger-api-server",
srcs = glob(["src/main/scala/**/*.scala"]),
resources =
glob(
["src/main/resources/**/*"],
# Do not include logback.xml into the library: let the user
# of the sandbox-as-a-library decide how to log.
exclude = ["src/main/resources/logback.xml"],
) + [
"//:COMPONENT-VERSION",
],
tags = ["maven_coordinates=com.daml.ledger:ledger-api-server:__VERSION__"],
visibility = [
"//visibility:public",
],
runtime_deps = [
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:com_h2database_h2",
"@maven//:org_postgresql_postgresql",
],
deps = [
"//daml-lf/archive:daml_lf_archive_reader",
"//daml-lf/archive:daml_lf_dev_archive_java_proto",
"//daml-lf/data",
"//daml-lf/engine",
"//daml-lf/interpreter",
"//daml-lf/language",
"//daml-lf/scenario-interpreter",
"//daml-lf/transaction",
"//daml-lf/transaction:transaction_java_proto",
"//daml-lf/transaction:value_java_proto",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-service/jwt",
"//ledger/ledger-api-akka",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-client",
"//ledger/ledger-api-common",
"//ledger/ledger-api-domain",
"//ledger/ledger-api-health",
"//ledger/ledger-api-scala-logging",
"//ledger/ledger-api-scala-logging:ledger-api-scala-logging-base",
"//ledger/participant-state",
"//ledger/participant-state-index",
"//libs-scala/direct-execution-context",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:com_github_scopt_scopt_2_12",
"@maven//:com_google_guava_guava",
"@maven//:com_typesafe_akka_akka_actor_2_12",
"@maven//:com_typesafe_akka_akka_stream_2_12",
"@maven//:com_typesafe_config",
"@maven//:com_typesafe_play_anorm_2_12",
"@maven//:com_typesafe_play_anorm_tokenizer_2_12",
"@maven//:com_typesafe_scala_logging_scala_logging_2_12",
"@maven//:com_zaxxer_HikariCP",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:io_dropwizard_metrics_metrics_jmx",
"@maven//:io_grpc_grpc_netty",
"@maven//:io_grpc_grpc_services",
"@maven//:io_netty_netty_common",
"@maven//:io_netty_netty_handler",
"@maven//:io_netty_netty_transport",
"@maven//:io_zipkin_brave_brave",
"@maven//:org_flywaydb_flyway_core",
"@maven//:org_scala_lang_modules_scala_java8_compat_2_12",
"@maven//:org_scalaz_scalaz_core_2_12",
"@maven//:org_slf4j_slf4j_api",
],
)
da_scala_binary(
name = "sandbox-binary",
main_class = "com.digitalasset.platform.sandbox.SandboxMain",
resources = ["src/main/resources/logback.xml"],
visibility = ["//visibility:public"],
deps = [
":sandbox",
],
)
da_scala_binary(
name = "sandbox-ephemeral-postgres",
data = [
"@postgresql_dev_env//:all",
],
main_class = "com.digitalasset.platform.sandbox.persistence.EphemeralPostgresSandboxMain",
resources = ["src/main/resources/logback.xml"],
visibility = ["//visibility:public"],
deps = [
":sandbox",
":sandbox-scala-tests-lib",
],
)
genrule(
name = "sandbox-tarball",
srcs = [
":sandbox-binary_deploy.jar",
"//:component-version",
],
outs = ["sandbox-tarball.tar.gz"],
cmd = """
VERSION=$$(cat $(location //:component-version))
mkdir -p sandbox-tarball/sandbox
cp -L $(location :sandbox-binary_deploy.jar) sandbox-tarball/sandbox/sandbox-$$VERSION.jar
out=$$(realpath $@)
cd sandbox-tarball
tar zcf $$out sandbox
""",
visibility = ["//visibility:public"],
)
container_image(
name = "sandbox-image-base",
base = "@openjdk_base//image",
cmd = None,
directory = "/usr/bin",
files = [
"@com_github_grpc_ecosystem_grpc_health_probe_binary//file",
],
) if not is_windows else None
java_image(
name = "sandbox-image",
base = ":sandbox-image-base",
main_class = "com.digitalasset.platform.sandbox.SandboxMain",
resources = ["src/main/resources/logback.xml"],
visibility = ["//visibility:public"],
runtime_deps = [":sandbox"],
) if not is_windows else None
alias(
name = "Test-1.5.dar",
actual = ":historical-dars/Test-1.5.dar",
visibility = ["//visibility:public"],
)
#TODO: generate dynamic BuildInfo.scala
da_scala_library(
name = "sandbox-scala-tests-lib",
srcs = glob(["src/test/lib/**/*.scala"]),
visibility = ["//visibility:public"],
runtime_deps = [
"@maven//:com_h2database_h2",
"@maven//:com_typesafe_akka_akka_slf4j_2_12",
"@maven//:org_postgresql_postgresql",
],
deps = [
":sandbox",
"//bazel_tools/runfiles:scala_runfiles",
"//daml-lf/archive:daml_lf_archive_reader",
"//daml-lf/archive:daml_lf_dev_archive_java_proto",
"//daml-lf/data",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger-service/jwt",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-auth-client",
"//ledger/ledger-api-client",
"//ledger/ledger-api-common",
"//ledger/ledger-api-domain",
"//ledger/ledger-api-health",
"//ledger/participant-state",
"//ledger/test-common",
"//libs-scala/direct-execution-context",
"//libs-scala/grpc-utils",
"//libs-scala/timer-utils",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:com_google_guava_guava",
"@maven//:com_typesafe_akka_akka_actor_2_12",
"@maven//:com_typesafe_akka_akka_stream_2_12",
"@maven//:com_typesafe_config",
"@maven//:com_typesafe_scala_logging_scala_logging_2_12",
"@maven//:commons_io_commons_io",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:io_grpc_grpc_netty",
"@maven//:io_netty_netty_common",
"@maven//:io_netty_netty_transport",
"@maven//:org_scalactic_scalactic_2_12",
"@maven//:org_scalatest_scalatest_2_12",
"@maven//:org_scalaz_scalaz_core_2_12",
"@maven//:org_slf4j_slf4j_api",
],
)
da_scala_test_suite(
name = "sandbox-scala-tests",
srcs = glob(
["src/test/suite/**/*.scala"],
),
data = [
"//ledger/test-common:Test-stable.dar",
"@postgresql_dev_env//:all",
],
resources = glob(["src/test/resources/**/*"]),
deps = [
":sandbox",
":sandbox-scala-tests-lib",
"//bazel_tools/runfiles:scala_runfiles",
"//daml-lf/archive:daml_lf_archive_reader",
"//daml-lf/archive:daml_lf_dev_archive_java_proto",
"//daml-lf/data",
"//daml-lf/interpreter",
"//daml-lf/language",
"//daml-lf/transaction",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-akka",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-client",
"//ledger/ledger-api-common",
"//ledger/ledger-api-domain",
"//ledger/ledger-api-health",
"//ledger/participant-state",
"//ledger/participant-state-index",
"//ledger/test-common",
"//libs-scala/direct-execution-context",
"//libs-scala/grpc-utils",
"//libs-scala/timer-utils",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:com_typesafe_akka_akka_actor_2_12",
"@maven//:com_typesafe_akka_akka_stream_2_12",
"@maven//:com_typesafe_akka_akka_stream_testkit_2_12",
"@maven//:com_typesafe_akka_akka_testkit_2_12",
"@maven//:com_typesafe_config",
"@maven//:commons_io_commons_io",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:io_grpc_grpc_services",
"@maven//:io_netty_netty_handler",
"@maven//:org_awaitility_awaitility",
"@maven//:org_flywaydb_flyway_core",
"@maven//:org_reactivestreams_reactive_streams",
"@maven//:org_scalactic_scalactic_2_12",
"@maven//:org_scalatest_scalatest_2_12",
"@maven//:org_scalaz_scalaz_core_2_12",
"@maven//:org_slf4j_slf4j_api",
],
)
SERVERS = {
"memory": {
"binary": ":sandbox-binary",
"server_args": [
"--port=6865",
"--eager-package-loading",
],
},
"h2database": {
"binary": ":sandbox-binary",
"server_args": [
"--port=6865",
"--eager-package-loading",
# "db_close_delay=-1" is needed so that the in-memory database is not closed
# (and therefore lost) after the flyway migration
"--sql-backend-jdbcurl=jdbc:h2:mem:static_time;db_close_delay=-1",
],
},
"postgres": {
"binary": ":sandbox-ephemeral-postgres",
"server_args": [
"--port=6865",
"--eager-package-loading",
],
},
}
server_conformance_test(
name = "conformance-test-static-time",
server_args = [
"--static-time",
],
servers = SERVERS,
test_tool_args = [
"--all-tests",
"--exclude=LotsOfPartiesIT",
"--exclude=ConfigManagementServiceIT",
],
)
server_conformance_test(
name = "conformance-test-lots-of-parties",
flaky = True,
server_args = [
"--static-time",
],
servers = SERVERS,
test_tool_args = [
"--include=LotsOfPartiesIT",
],
)
server_conformance_test(
name = "conformance-test-wall-clock",
server_args = [
"--wall-clock-time",
],
servers = SERVERS,
test_tool_args = [
"--all-tests",
"--exclude=LotsOfPartiesIT",
"--exclude=TimeIT",
"--exclude=ConfigManagementServiceIT",
],
)
server_conformance_test(
name = "conformance-test-config-management",
servers = SERVERS,
test_tool_args = [
"--include=ConfigManagementServiceIT",
],
)
exports_files(["src/main/resources/logback.xml"])