# 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", "conformance_test") load("@build_environment//:configuration.bzl", "mvn_version") load("@os_info//:os_info.bzl", "is_windows") alias( name = "sandbox", actual = "sandbox-ce", visibility = ["//visibility:public"], ) [ da_scala_library( name = "sandbox-{}".format(edition), 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_scalaz_scalaz_core", ], tags = ["maven_coordinates=com.daml: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", "@maven//:org_xerial_sqlite_jdbc", ], deps = [ "//daml-lf/archive:daml_lf_1.dev_archive_proto_java", "//daml-lf/archive:daml_lf_archive_reader", "//daml-lf/data", "//daml-lf/engine", "//daml-lf/language", "//daml-lf/transaction", "//language-support/scala/bindings", "//ledger/caching", "//ledger/error", "//ledger/ledger-api-auth", "//ledger/ledger-api-common", "//ledger/ledger-api-domain", "//ledger/ledger-api-health", "//ledger/ledger-configuration", "//ledger/ledger-on-sql", "//ledger/ledger-resources", "//ledger/metrics", "//ledger/participant-integration-api", "//ledger/participant-state", "//ledger/participant-state-index", "//ledger/participant-state-metrics", "//ledger/participant-state/kvutils", "//ledger/sandbox-common:sandbox-common-{}".format(edition), "//ledger-service/cli-opts", "//libs-scala/build-info", "//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//:org_slf4j_slf4j_api", ], ) for edition in [ "ce", "ee", ] ] da_scala_binary( name = "sandbox-binary", main_class = "com.daml.platform.sandboxnext.Main", resources = ["//ledger/sandbox-common:src/main/resources/logback.xml"], visibility = ["//visibility:public"], deps = [ ":sandbox", ], ) da_scala_binary( name = "sandbox-ephemeral-postgresql", main_class = "com.daml.platform.sandboxnext.persistence.MainWithEphemeralPostgresql", resources = ["//ledger/sandbox-common:src/main/resources/logback.xml"], visibility = ["//visibility:public"], deps = [ ":sandbox", ":sandbox-scala-tests-lib", ], ) da_scala_library( name = "sandbox-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_scalactic_scalactic", "@maven//:org_scalatest_scalatest_core", "@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", "//daml-lf/data", "//language-support/scala/bindings", "//ledger-api/rs-grpc-bridge", "//ledger-api/testing-utils", "//ledger/caching", "//ledger/ledger-api-auth", "//ledger/ledger-api-common", "//ledger/ledger-api-domain", "//ledger/ledger-configuration", "//ledger/ledger-resources", "//ledger/participant-integration-api", "//ledger/participant-integration-api:participant-integration-api-tests-lib", "//ledger/sandbox-common", "//ledger/sandbox-common:sandbox-common-scala-tests-lib", "//libs-scala/ports", "//libs-scala/postgresql-testing", "//libs-scala/resources", "@maven//:ch_qos_logback_logback_classic", "@maven//:io_netty_netty_handler", "@maven//:org_scalatest_scalatest_compatible", "@maven//:org_slf4j_slf4j_api", ], ) openssl_executable = "@openssl_dev_env//:bin/openssl" if not is_windows else "@openssl_dev_env//:usr/bin/openssl.exe" # The reset service is cursed so we mark all tests involving it as flaky. reset_service_pattern = "src/test/suite/**/*ResetService*.scala" [ da_scala_test_suite( name = "sandbox-tests{}".format(suffix), size = size, srcs = glob( [pattern], exclude = exclusions, ), data = [ "//ledger/test-common:dar-files", "//ledger/test-common/test-certificates", openssl_executable, ], flaky = flaky, jvm_flags = [ "-Djava.security.debug=\"certpath ocsp\"", # This facilitates debugging of the OCSP checks mechanism ], resources = glob(["src/test/resources/**/*"]), scala_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_core", "@maven//:org_scalatest_scalatest_matchers_core", "@maven//:org_scalatest_scalatest_shouldmatchers", "@maven//:org_scalatest_scalatest_wordspec", "@maven//:org_scalaz_scalaz_core", ], deps = [ ":sandbox", ":sandbox-scala-tests-lib", "//bazel_tools/runfiles:scala_runfiles", "//daml-lf/archive:daml_lf_1.dev_archive_proto_java", "//daml-lf/archive:daml_lf_archive_reader", "//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/ledger-api-auth", "//ledger/ledger-api-client", "//ledger/ledger-api-common", "//ledger/ledger-api-common:ledger-api-common-scala-tests-lib", "//ledger/ledger-api-domain", "//ledger/ledger-api-health", "//ledger/ledger-configuration", "//ledger/ledger-offset", "//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/participant-state-index", "//ledger/participant-state-metrics", "//ledger/sandbox-common", "//ledger/sandbox-common:sandbox-common-scala-tests-lib", "//ledger/test-common", "//libs-scala/concurrent", "//libs-scala/contextualized-logging", "//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_scalatest_scalatest_compatible", "@maven//:org_slf4j_slf4j_api", ], ) for (suffix, pattern, exclusions, flaky, size) in [ ( "", "src/test/suite/**/*.scala", [reset_service_pattern], False, "medium", # Default timeout of 5min ), ( "-resetservice", reset_service_pattern, [], True, "large", # Reset service tests have a large variance in their run time, use a timeout of 15min ), ] ] # Full conformance test conformance_test( name = "conformance-test", lf_versions = [ "default", "latest", "preview", ], server = ":sandbox-binary", server_args = [ "--contract-id-seeding=testing-weak", "--port=6865", ], test_tool_args = [ "--open-world", "--additional=CommandDeduplicationParallelIT", "--additional=CompletionDeduplicationInfoITCommandService", "--additional=CompletionDeduplicationInfoITCommandSubmissionService", "--additional=KVCommandDeduplicationIT", "--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant "--additional=ContractIdIT:RejectV0,ContractIdIT:AcceptSuffixedV1,ContractIdIT:AcceptNonSuffixedV1", "--exclude=ClosedWorldIT", ], ) # Feature test: --implicit-party-allocation=false (closed world mode) conformance_test( name = "conformance-test-closed-world", server = ":sandbox-binary", server_args = [ "--port=6865", "--contract-id-seeding=testing-weak", "--implicit-party-allocation=false", ], test_tool_args = [ "--verbose", "--include=ClosedWorldIT", ], ) # Feature test: --static-time conformance_test( name = "conformance-test-static-time", server = ":sandbox-binary", server_args = [ "--port=6865", "--contract-id-seeding=testing-weak", "--static-time", ], test_tool_args = [ "--static-time", "--open-world", "--additional=CommandDeduplicationParallelIT", "--additional=CompletionDeduplicationInfoITCommandService", "--additional=CompletionDeduplicationInfoITCommandSubmissionService", "--additional=KVCommandDeduplicationIT", "--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant "--exclude=ClosedWorldIT", ], )