daml/ledger/sandbox-classic/BUILD.bazel
Remy d92f2c7003
Ledger: refactor bazel packaging of tedger test tool (#8894)
improve previous generalization from #8695

- use lf version instead keyword (like 'stable', 'latest', 'dev') to
  tag actual target.  This will allow two keywords to map to the same
  versions without doing twice the compilation/test work.

- use alias to map keywords tag target to versioned tag target.

- move package manage dar to test_commong.

CHANGELOG_BEGIN
CHANGELOG_END
2021-02-22 11:41:19 +01:00

323 lines
11 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_binary", "da_scala_library", "da_scala_test_suite")
load("//ledger/ledger-api-test-tool:conformance.bzl", "server_conformance_test")
load("@os_info//:os_info.bzl", "is_windows")
load("@build_environment//:configuration.bzl", "mvn_version")
load(
"//daml-lf/language:daml-lf.bzl",
"lf_preview_version",
)
da_scala_library(
name = "sandbox-classic",
srcs = glob(["src/main/scala/**/*.scala"]),
# Do not include logback.xml into the library: let the user
# of the sandbox-as-a-library decide how to log.
resources = ["//ledger/sandbox-common:src/main/resources/banner.txt"],
scala_deps = [
"@maven//:com_github_scopt_scopt",
"@maven//:com_typesafe_akka_akka_actor",
"@maven//:com_typesafe_akka_akka_stream",
"@maven//:org_scala_lang_modules_scala_java8_compat",
"@maven//:org_scala_lang_modules_scala_collection_compat",
"@maven//:org_scalaz_scalaz_core",
],
scalacopts = [
"-P:silencer:lineContentFilters=import scala.collection.compat",
# retain is deprecated in 2.13 but the replacement filterInPlace
# does not exist in 2.12.
"-P:silencer:lineContentFilters=retain",
],
silent_annotations = True,
tags = ["maven_coordinates=com.daml:sandbox-classic:__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_dev_archive_proto_java",
"//daml-lf/data",
"//daml-lf/engine",
"//daml-lf/interpreter",
"//daml-lf/language",
"//daml-lf/scenario-interpreter",
"//daml-lf/transaction",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-bridge",
"//ledger/caching",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//ledger/ledger-api-domain",
"//ledger/ledger-api-health",
"//ledger/ledger-resources",
"//ledger/metrics",
"//ledger/participant-integration-api",
"//ledger/participant-state",
"//ledger/participant-state-index",
"//ledger/participant-state-metrics",
"//ledger/sandbox-common",
"//libs-scala/build-info",
"//libs-scala/concurrent",
"//libs-scala/contextualized-logging",
"//libs-scala/ports",
"//libs-scala/resources",
"//libs-scala/resources-akka",
"//libs-scala/resources-grpc",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:com_typesafe_config",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_slf4j_slf4j_api",
],
)
da_scala_binary(
name = "sandbox-classic-binary",
main_class = "com.daml.platform.sandbox.SandboxMain",
resources = ["//ledger/sandbox-common:src/main/resources/logback.xml"],
visibility = ["//visibility:public"],
deps = [
":sandbox-classic",
],
)
da_scala_binary(
name = "sandbox-classic-ephemeral-postgresql",
main_class = "com.daml.platform.sandbox.persistence.MainWithEphemeralPostgresql",
resources = ["//ledger/sandbox-common:src/main/resources/logback.xml"],
visibility = ["//visibility:public"],
deps = [
":sandbox-classic",
":sandbox-classic-scala-tests-lib",
],
)
genrule(
name = "sandbox-classic-tarball",
srcs = [
":sandbox-classic-binary_deploy.jar",
],
outs = ["sandbox-classic-tarball.tar.gz"],
cmd = """
mkdir -p sandbox-classic-tarball/sandbox
cp -L $(location :sandbox-classic-binary_deploy.jar) sandbox-classic-tarball/sandbox/sandbox-classic-{mvn}.jar
$(execpath //bazel_tools/sh:mktgz) $@ -C sandbox-classic-tarball sandbox
""".format(mvn = mvn_version),
tools = ["//bazel_tools/sh:mktgz"],
visibility = ["//visibility:public"],
)
da_scala_library(
name = "sandbox-classic-scala-tests-lib",
srcs = glob(["src/test/lib/**/*.scala"]),
scala_deps = [
"@maven//:com_typesafe_akka_akka_actor",
"@maven//:com_typesafe_akka_akka_stream",
"@maven//:org_playframework_anorm_anorm",
"@maven//:org_playframework_anorm_anorm_tokenizer",
"@maven//:org_scalactic_scalactic",
"@maven//:org_scalatest_scalatest",
"@maven//:org_scalaz_scalaz_core",
],
scala_runtime_deps = [
"@maven//:com_typesafe_akka_akka_slf4j",
],
visibility = ["//visibility:public"],
runtime_deps = [
"@maven//:com_h2database_h2",
"@maven//:org_postgresql_postgresql",
],
deps = [
":sandbox-classic",
"//daml-lf/data",
"//daml-lf/engine",
"//daml-lf/transaction",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/testing-utils",
"//ledger/caching",
"//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/ledger-resources",
"//ledger/ledger-resources:ledger-resources-test-lib",
"//ledger/metrics",
"//ledger/participant-integration-api",
"//ledger/participant-integration-api:participant-integration-api-tests-lib",
"//ledger/participant-state",
"//ledger/sandbox-common",
"//ledger/sandbox-common:sandbox-common-scala-tests-lib",
"//ledger/test-common",
"//libs-scala/contextualized-logging",
"//libs-scala/grpc-utils",
"//libs-scala/ports",
"//libs-scala/postgresql-testing",
"//libs-scala/resources",
"//libs-scala/resources-akka",
"//libs-scala/resources-grpc",
"//libs-scala/timer-utils",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:io_dropwizard_metrics_metrics_core",
"@maven//:org_slf4j_slf4j_api",
],
)
test_deps = [
":sandbox-classic",
":sandbox-classic-scala-tests-lib",
"//bazel_tools/runfiles:scala_runfiles",
"//daml-lf/archive:daml_lf_archive_reader",
"//daml-lf/archive:daml_lf_dev_archive_proto_java",
"//daml-lf/data",
"//daml-lf/engine",
"//daml-lf/interpreter",
"//daml-lf/language",
"//daml-lf/transaction",
"//daml-lf/transaction-test-lib",
"//language-support/scala/bindings",
"//ledger-api/rs-grpc-akka",
"//ledger-api/rs-grpc-akka:rs-grpc-akka-tests-lib",
"//ledger-api/rs-grpc-bridge",
"//ledger-api/sample-service",
"//ledger-api/testing-utils",
"//ledger/caching",
"//ledger/participant-integration-api",
"//ledger/participant-integration-api:participant-integration-api-tests-lib",
"//ledger/ledger-api-auth",
"//ledger/ledger-api-common",
"//ledger/ledger-api-common:ledger-api-common-scala-tests-lib",
"//ledger/ledger-api-client",
"//ledger/ledger-api-domain",
"//ledger/ledger-api-health",
"//ledger/ledger-resources",
"//ledger/ledger-resources:ledger-resources-test-lib",
"//ledger/metrics",
"//ledger/participant-state",
"//ledger/participant-state-index",
"//ledger/participant-state-metrics",
"//ledger/sandbox-common",
"//ledger/sandbox-common:sandbox-common-scala-tests-lib",
"//ledger/test-common",
"//ledger/test-common:dar-files-stable-lib",
"//libs-scala/contextualized-logging",
"//libs-scala/concurrent",
"//libs-scala/grpc-utils",
"//libs-scala/ports",
"//libs-scala/postgresql-testing",
"//libs-scala/resources",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@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_mockito_mockito_core",
"@maven//:org_reactivestreams_reactive_streams",
"@maven//:org_slf4j_slf4j_api",
]
scala_test_deps = [
"@maven//:com_typesafe_akka_akka_actor",
"@maven//:com_typesafe_akka_akka_stream",
"@maven//:com_typesafe_akka_akka_stream_testkit",
"@maven//:com_typesafe_akka_akka_testkit",
"@maven//:org_mockito_mockito_scala",
"@maven//:org_scalacheck_scalacheck",
"@maven//:org_scalactic_scalactic",
"@maven//:org_scalatest_scalatest",
"@maven//:org_scalaz_scalaz_core",
]
da_scala_test_suite(
name = "sandbox-classic-tests",
srcs = glob(["src/test/suite/**/*.scala"]),
data = [
"//daml-lf/encoder:testing-dar-dev",
"//daml-lf/encoder:testing-dar-latest",
"//ledger/test-common:model-tests-stable.dar",
"//ledger/test-common/test-certificates",
] + [
"//daml-lf/encoder:testing-dar-preview"
for v in lf_preview_version
],
resources = glob(["src/test/resources/**/*"]) + ["//ledger/sandbox-common:src/main/resources/logback.xml"],
scala_deps = scala_test_deps,
deps = test_deps,
)
SERVERS = {
"memory": {
"binary": ":sandbox-classic-binary",
"server_args": [
"--port=6865",
"--eager-package-loading",
],
},
"h2database": {
"binary": ":sandbox-classic-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:conformance-test;db_close_delay=-1",
],
},
"postgresql": {
"binary": ":sandbox-classic-ephemeral-postgresql",
"server_args": [
"--port=6865",
"--eager-package-loading",
],
},
}
server_conformance_test(
name = "conformance-test-static-time",
server_args = [
"--static-time",
],
servers = SERVERS,
test_tool_args = [
"--open-world",
"--exclude=ClosedWorldIT",
],
)
server_conformance_test(
name = "conformance-test-wall-clock",
server_args = [
"--wall-clock-time",
],
servers = SERVERS,
test_tool_args = [
"--open-world",
"--exclude=ClosedWorldIT",
],
)
server_conformance_test(
name = "conformance-test-contract-id-seeding",
server_args = [
"--wall-clock-time",
"--contract-id-seeding=testing-weak",
],
servers = SERVERS,
test_tool_args = [
"--open-world",
"--exclude=ClosedWorldIT",
],
)