2023-01-04 20:21:15 +03:00
|
|
|
# Copyright (c) 2023 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
2019-09-03 16:57:23 +03:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
load(
|
2019-11-07 12:41:54 +03:00
|
|
|
"//bazel_tools/client_server:client_server_test.bzl",
|
2019-09-03 16:57:23 +03:00
|
|
|
"client_server_test",
|
|
|
|
)
|
|
|
|
load("@os_info//:os_info.bzl", "is_windows")
|
2021-01-12 12:55:00 +03:00
|
|
|
load("@scala_version//:index.bzl", "scala_major_version")
|
2023-09-13 11:01:42 +03:00
|
|
|
load("//daml-lf/language:daml-lf.bzl", "lf_version_configuration", "lf_version_is_dev", "lf_versions_aggregate")
|
2019-09-03 16:57:23 +03:00
|
|
|
|
2019-11-15 19:29:12 +03:00
|
|
|
def conformance_test(
|
|
|
|
name,
|
|
|
|
server,
|
|
|
|
server_args = [],
|
|
|
|
extra_data = [],
|
|
|
|
ports = [6865],
|
|
|
|
test_tool_args = [],
|
2019-12-06 17:34:23 +03:00
|
|
|
tags = [],
|
2021-08-18 18:23:45 +03:00
|
|
|
runner = "@//bazel_tools/client_server/runner_with_port_check",
|
2022-03-30 17:31:13 +03:00
|
|
|
extra_runner_args = [],
|
2021-07-27 10:27:03 +03:00
|
|
|
lf_versions = ["default"],
|
2022-05-18 15:58:45 +03:00
|
|
|
dev_mod_flag = "--daml-lf-dev-mode-unsafe",
|
2022-08-30 10:20:22 +03:00
|
|
|
preview_mod_flag = "--early-access",
|
2022-05-30 19:02:53 +03:00
|
|
|
flaky = False,
|
2022-07-05 16:35:16 +03:00
|
|
|
hocon = False,
|
|
|
|
server_hocon_config = None):
|
2021-02-23 11:19:17 +03:00
|
|
|
for lf_version in lf_versions_aggregate(lf_versions):
|
2022-05-30 19:02:53 +03:00
|
|
|
daml_lf_dev_mode_args = ["-C ledger.engine.allowed-language-versions=daml-lf-dev-mode-unsafe"] if hocon else [dev_mod_flag]
|
2022-08-30 10:20:22 +03:00
|
|
|
daml_lf_preview_mode_args = ["-C ledger.engine.allowed-language-versions=early-access"] if hocon else [preview_mod_flag]
|
2023-09-13 11:01:42 +03:00
|
|
|
extra_server_args = daml_lf_preview_mode_args if lf_version == lf_version_configuration.get("preview") else daml_lf_dev_mode_args if lf_version_is_dev(lf_version) else []
|
2021-02-23 11:19:17 +03:00
|
|
|
if not is_windows:
|
2021-03-17 12:22:27 +03:00
|
|
|
test_name = "-".join([name, lf_version])
|
2022-07-05 16:35:16 +03:00
|
|
|
hocon_conf_file_name = test_name + ".conf"
|
|
|
|
if server_hocon_config:
|
|
|
|
generate_conf("generate-" + test_name, hocon_conf_file_name, content = server_hocon_config, data = extra_data)
|
|
|
|
hocon_server_args = ["-c $(rootpath :" + hocon_conf_file_name + ")"] if server_hocon_config else []
|
|
|
|
hocon_data = [":" + hocon_conf_file_name] if server_hocon_config else []
|
2021-02-23 11:19:17 +03:00
|
|
|
client_server_test(
|
2021-03-17 12:22:27 +03:00
|
|
|
name = test_name,
|
2021-02-23 11:19:17 +03:00
|
|
|
runner = runner,
|
2022-03-30 17:31:13 +03:00
|
|
|
runner_args = ["%s" % port for port in ports] + extra_runner_args,
|
2021-02-23 11:19:17 +03:00
|
|
|
timeout = "long",
|
2023-05-11 18:44:42 +03:00
|
|
|
client = "//ledger-test-tool/tool:tool-%s" % lf_version,
|
2021-02-23 11:19:17 +03:00
|
|
|
client_args = test_tool_args + ["localhost:%s" % port for port in ports],
|
2022-07-05 16:35:16 +03:00
|
|
|
data = extra_data + hocon_data,
|
2021-02-23 11:19:17 +03:00
|
|
|
server = server,
|
2022-07-05 16:35:16 +03:00
|
|
|
server_args = server_args + extra_server_args + hocon_server_args,
|
2021-02-23 11:19:17 +03:00
|
|
|
tags = [
|
|
|
|
"dont-run-on-darwin",
|
|
|
|
"exclusive",
|
|
|
|
] + tags,
|
|
|
|
flaky = flaky,
|
|
|
|
)
|
2021-07-27 10:27:03 +03:00
|
|
|
if lf_version == lf_version_configuration.get("default"):
|
2021-03-24 20:13:12 +03:00
|
|
|
native.test_suite(
|
2021-03-17 12:22:27 +03:00
|
|
|
name = name,
|
2021-03-24 20:13:12 +03:00
|
|
|
tests = [test_name],
|
|
|
|
tags = tags,
|
2021-03-17 12:22:27 +03:00
|
|
|
)
|
2019-11-05 22:54:21 +03:00
|
|
|
|
2022-07-05 16:35:16 +03:00
|
|
|
def generate_conf(name, conf_file_name, content, data = []):
|
|
|
|
native.genrule(
|
|
|
|
name = name,
|
|
|
|
srcs = data,
|
|
|
|
outs = [conf_file_name],
|
|
|
|
cmd = """
|
|
|
|
set -eou pipefail
|
|
|
|
cat << 'EOF' > $@
|
|
|
|
{content}
|
|
|
|
EOF
|
|
|
|
""".format(content = content),
|
|
|
|
visibility = ["//visibility:public"],
|
|
|
|
)
|
|
|
|
|
2023-02-06 10:58:47 +03:00
|
|
|
# versions for which we build a test-tool
|
2023-11-23 10:59:14 +03:00
|
|
|
testtool_lf_versions = ["1.8", "1.14", "1.15", "1.dev", "2.1", "2.dev"]
|