daml/ledger/test-common/BUILD.bazel

141 lines
4.8 KiB
Python
Raw Normal View History

# 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_library",
"silencer_plugin",
)
New Ledger API test tool (#2282) * New acceptance test tool prototype * Fix transaction filter helper * Address https://github.com/digital-asset/daml/pull/2282#discussion_r308081386 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r308082432 Moreover, creates specific helpers for test DAML code. * Move helpers from session to context Remove a circular dependency between session and context, and limits the usage of implicits. * Run tests with ledgers out of process * Prepare for drop in * Temporary timeout increase * Move bulk of the logic to the test runner * Have a map of tests for CLI integration * Timeout per-test, runner uses context, renaming * Allow usage of time service, integrate semantic tests * Integrate CLI SSL configuration * Integrate failure expectation CLI option * Integrate with failure output verbosity CLI option * Integrate with test listing and picking CLI options * Integrate with timeout scaling CLI option * Integrate with command TTL CLI option * Review CODEOWNERS * Drop previously unimplemented CLI parameters * Expand test todo list to encompass latest additions * Deduplicate some testing infrastructure, swap in new test tool * Remove unused rule * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311045444 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311051974 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311035287 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311055290 * WIP * Make gRPC thread factory spawn non-deamon threads * Remove debug prints, complete divulgence test (missing assertion messages) * Try to detect assertion failure line number * Add Sandbox binary that starts an ephemeral postgres instance This allows us to use the client_server_test bazel macro to run against the sandbox backed by postgres. Fixes #1543 * Add Sandbox binary that starts an ephemeral postgres instance This allows us to use the client_server_test bazel macro to run against the sandbox backed by postgres. Fixes #1543 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311400695 * Remove TlsConfiguration duplicate, move original to commons * Make assertion more readable Co-Authored-By: Gerolf Seitz <gerolf.seitz@digitalasset.com> * Fix build errors introduced in previous commit - exclude time service tests from reference-v2 - add copyright header to TlsConfiguration * Complete divulgence test and address review comments Restores comments from original divulgence tests and strives to be as close to them as possible. - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311429169 - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311431156 - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311431913 * Delete old divulgence tests * Restore methods to fetch contracts by template identifier * Run conformance tests on in-memory sandbox * Run conformance tests on the persistent sandbox * Remove workflow identifier workaround * New contract keys test (#2452) * Set channel type for LedgerSession * Add ContractKeysIT * Run tests against reference-server v2 * Removed the old ContractKeysIT. However, ... ... I cannot remove ContractKeysChecks completely, because we have another test path for DARs created prior to DAML-LF 1.6, which doesn't have the submitter == maintainer restriction for contract keys. * Use codegen instead of custom code * Add missing copyright headers * Drop sandbox conformance test suite (seems to not work on Windows CI) * Make time simpler * Test tool tests to run only semantic tests * Make CI behave more consistently * Add missing files to run tests on Postrgres * Fix flaky divulgence test, introduce readable identifiers * Increase sandbox conformance tests timeout * Address https://github.com/digital-asset/daml/pull/2282#discussion_r312363246 * Reintroduce test resource extraction * Read semantic tests from the classpath rather than Bazel * Use codegen types for ContractKeys integration test allocateParty returns Primitive.Party and create and exercise also accept Primitive.Party. This way we don't have to keep a String and Primitive.Party representation around. * Bump timeout for sandbox conformance tests * Remove dependency on Bazel runfiles
2019-08-09 18:00:37 +03:00
load(
"//language-support/scala/codegen:codegen.bzl",
"dar_to_scala",
)
load("@scala_version//:index.bzl", "scala_major_version")
load("@scala_version//:index.bzl", "scala_major_version")
load(
"//daml-lf/language:daml-lf.bzl",
"lf_version_configuration",
"lf_version_configuration_versions",
)
load("//ledger/test-common:test-common.bzl", "da_scala_dar_resources_library")
alias(
name = "dar-files",
actual = "dar-files-default",
visibility = ["//visibility:public"],
)
[
[
# alias model-tests-KEYWORD.dar, dar-files-KEYWORD, and dar-files-KEYWORD-lib
# to model-tests-TAG.dar, dar-files-TAG, dar-files-TAG-lib, and test-common-TAG
# where : KEYWORD is a keyword like default, latest, or dev
# TAG is a (java friendly) version TAG like 1_8
# The mapping KEYWORD -> TAG is defined by test_common_configurations
alias(
name = "%s-%s%s" % (target_prefix, name, target_suffix),
actual = ":%s-%s%s" % (target_prefix, lf_version, target_suffix),
visibility = ["//visibility:public"],
),
]
for (target_prefix, target_suffix) in [
("model-tests", ".dar"),
("dar-files", ""),
("dar-files", "-lib"),
("test-common", ""),
]
for (name, lf_version) in lf_version_configuration.items()
]
alias(
name = "test-common",
actual = "test-common-default",
visibility = ["//visibility:public"],
New Ledger API test tool (#2282) * New acceptance test tool prototype * Fix transaction filter helper * Address https://github.com/digital-asset/daml/pull/2282#discussion_r308081386 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r308082432 Moreover, creates specific helpers for test DAML code. * Move helpers from session to context Remove a circular dependency between session and context, and limits the usage of implicits. * Run tests with ledgers out of process * Prepare for drop in * Temporary timeout increase * Move bulk of the logic to the test runner * Have a map of tests for CLI integration * Timeout per-test, runner uses context, renaming * Allow usage of time service, integrate semantic tests * Integrate CLI SSL configuration * Integrate failure expectation CLI option * Integrate with failure output verbosity CLI option * Integrate with test listing and picking CLI options * Integrate with timeout scaling CLI option * Integrate with command TTL CLI option * Review CODEOWNERS * Drop previously unimplemented CLI parameters * Expand test todo list to encompass latest additions * Deduplicate some testing infrastructure, swap in new test tool * Remove unused rule * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311045444 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311051974 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311035287 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311055290 * WIP * Make gRPC thread factory spawn non-deamon threads * Remove debug prints, complete divulgence test (missing assertion messages) * Try to detect assertion failure line number * Add Sandbox binary that starts an ephemeral postgres instance This allows us to use the client_server_test bazel macro to run against the sandbox backed by postgres. Fixes #1543 * Add Sandbox binary that starts an ephemeral postgres instance This allows us to use the client_server_test bazel macro to run against the sandbox backed by postgres. Fixes #1543 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311400695 * Remove TlsConfiguration duplicate, move original to commons * Make assertion more readable Co-Authored-By: Gerolf Seitz <gerolf.seitz@digitalasset.com> * Fix build errors introduced in previous commit - exclude time service tests from reference-v2 - add copyright header to TlsConfiguration * Complete divulgence test and address review comments Restores comments from original divulgence tests and strives to be as close to them as possible. - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311429169 - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311431156 - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311431913 * Delete old divulgence tests * Restore methods to fetch contracts by template identifier * Run conformance tests on in-memory sandbox * Run conformance tests on the persistent sandbox * Remove workflow identifier workaround * New contract keys test (#2452) * Set channel type for LedgerSession * Add ContractKeysIT * Run tests against reference-server v2 * Removed the old ContractKeysIT. However, ... ... I cannot remove ContractKeysChecks completely, because we have another test path for DARs created prior to DAML-LF 1.6, which doesn't have the submitter == maintainer restriction for contract keys. * Use codegen instead of custom code * Add missing copyright headers * Drop sandbox conformance test suite (seems to not work on Windows CI) * Make time simpler * Test tool tests to run only semantic tests * Make CI behave more consistently * Add missing files to run tests on Postrgres * Fix flaky divulgence test, introduce readable identifiers * Increase sandbox conformance tests timeout * Address https://github.com/digital-asset/daml/pull/2282#discussion_r312363246 * Reintroduce test resource extraction * Read semantic tests from the classpath rather than Bazel * Use codegen types for ContractKeys integration test allocateParty returns Primitive.Party and create and exercise also accept Primitive.Party. This way we don't have to keep a String and Primitive.Party representation around. * Bump timeout for sandbox conformance tests * Remove dependency on Bazel runfiles
2019-08-09 18:00:37 +03:00
)
[
[
da_scala_library(
name = "test-common-%s" % target,
srcs = glob(["src/main/scala/**/*.scala"]),
scala_deps = [
"@maven//:org_scalatest_scalatest_shouldmatchers",
"@maven//:org_scalatest_scalatest_core",
"@maven//:org_scalactic_scalactic",
"@maven//:org_scalatest_scalatest_matchers_core",
],
tags = ["maven_coordinates=com.daml:test-common-%s:__VERSION__" % target],
visibility = [
"//visibility:public",
],
deps = [
"//daml-lf/archive:daml_lf_1.dev_archive_proto_java",
"//daml-lf/archive:daml_lf_archive_reader",
"//ledger-api/grpc-definitions:ledger_api_proto_scala",
"//ledger/test-common:dar-files-%s-lib" % target,
"//libs-scala/scala-utils",
"//libs-scala/timer-utils",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:ch_qos_logback_logback_core",
"@maven//:io_grpc_grpc_context",
"@maven//:org_scalatest_scalatest_compatible",
"@maven//:org_slf4j_slf4j_api",
],
),
]
for target in lf_version_configuration_versions
]
New Ledger API test tool (#2282) * New acceptance test tool prototype * Fix transaction filter helper * Address https://github.com/digital-asset/daml/pull/2282#discussion_r308081386 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r308082432 Moreover, creates specific helpers for test DAML code. * Move helpers from session to context Remove a circular dependency between session and context, and limits the usage of implicits. * Run tests with ledgers out of process * Prepare for drop in * Temporary timeout increase * Move bulk of the logic to the test runner * Have a map of tests for CLI integration * Timeout per-test, runner uses context, renaming * Allow usage of time service, integrate semantic tests * Integrate CLI SSL configuration * Integrate failure expectation CLI option * Integrate with failure output verbosity CLI option * Integrate with test listing and picking CLI options * Integrate with timeout scaling CLI option * Integrate with command TTL CLI option * Review CODEOWNERS * Drop previously unimplemented CLI parameters * Expand test todo list to encompass latest additions * Deduplicate some testing infrastructure, swap in new test tool * Remove unused rule * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311045444 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311051974 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311035287 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311055290 * WIP * Make gRPC thread factory spawn non-deamon threads * Remove debug prints, complete divulgence test (missing assertion messages) * Try to detect assertion failure line number * Add Sandbox binary that starts an ephemeral postgres instance This allows us to use the client_server_test bazel macro to run against the sandbox backed by postgres. Fixes #1543 * Add Sandbox binary that starts an ephemeral postgres instance This allows us to use the client_server_test bazel macro to run against the sandbox backed by postgres. Fixes #1543 * Address https://github.com/digital-asset/daml/pull/2282#discussion_r311400695 * Remove TlsConfiguration duplicate, move original to commons * Make assertion more readable Co-Authored-By: Gerolf Seitz <gerolf.seitz@digitalasset.com> * Fix build errors introduced in previous commit - exclude time service tests from reference-v2 - add copyright header to TlsConfiguration * Complete divulgence test and address review comments Restores comments from original divulgence tests and strives to be as close to them as possible. - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311429169 - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311431156 - Address https://github.com/digital-asset/daml/pull/2282#discussion_r311431913 * Delete old divulgence tests * Restore methods to fetch contracts by template identifier * Run conformance tests on in-memory sandbox * Run conformance tests on the persistent sandbox * Remove workflow identifier workaround * New contract keys test (#2452) * Set channel type for LedgerSession * Add ContractKeysIT * Run tests against reference-server v2 * Removed the old ContractKeysIT. However, ... ... I cannot remove ContractKeysChecks completely, because we have another test path for DARs created prior to DAML-LF 1.6, which doesn't have the submitter == maintainer restriction for contract keys. * Use codegen instead of custom code * Add missing copyright headers * Drop sandbox conformance test suite (seems to not work on Windows CI) * Make time simpler * Test tool tests to run only semantic tests * Make CI behave more consistently * Add missing files to run tests on Postrgres * Fix flaky divulgence test, introduce readable identifiers * Increase sandbox conformance tests timeout * Address https://github.com/digital-asset/daml/pull/2282#discussion_r312363246 * Reintroduce test resource extraction * Read semantic tests from the classpath rather than Bazel * Use codegen types for ContractKeys integration test allocateParty returns Primitive.Party and create and exercise also accept Primitive.Party. This way we don't have to keep a String and Primitive.Party representation around. * Bump timeout for sandbox conformance tests * Remove dependency on Bazel runfiles
2019-08-09 18:00:37 +03:00
# Correspond to the directories under src/test/lib/daml
test_names_with_dependencies = {
"model": ["@maven//:org_scala_lang_modules_scala_collection_compat"],
"semantic": ["@maven//:org_scala_lang_modules_scala_collection_compat"],
"performance": [],
"package_management": [],
}
da_scala_dar_resources_library(
add_maven_tag = True,
daml_dir_names = test_names_with_dependencies.keys(),
daml_root_dir = "src/main/daml",
exclusions = {
"1.8": ["**/*Exception*.daml"],
},
lf_versions = lf_version_configuration_versions,
maven_name_prefix = "test",
visibility = ["//visibility:public"],
)
[
[
[
dar_to_scala(
name = "%s-tests-%s.scala-codegen" % (test_name, target),
srcs = [":%s-tests-%s.dar" % (test_name, target)],
package_prefix = "com.daml.ledger.test.%s" % test_name,
srcjar_out = "%s-%s.scala.srcjar" % (test_name, target),
visibility = ["//visibility:public"],
),
da_scala_library(
name = "%s-tests-%s.scala" % (test_name, target),
srcs = [
":%s-tests-%s.scala-codegen" % (test_name, target),
],
plugins = [
silencer_plugin,
],
scala_deps = extra_deps,
scalacopts = [
"-P:silencer:lineContentFilters=import _root_.scala.language.higherKinds;",
],
visibility = ["//visibility:public"],
deps = [
"//language-support/scala/bindings",
],
),
]
for (test_name, extra_deps) in test_names_with_dependencies.items()
]
for target in lf_version_configuration_versions
]