DPP-463 switch conformance tests to append only (#11101)

* Use append-only schema in tests

changelog_begin
changelog_end

* Fix Oracle build

* Update ledger/ledger-on-memory/BUILD.bazel

Co-authored-by: tudor-da <tudor.voicu@digitalasset.com>

* Run more conformance tests on append-only

* Run pruning tests in split-participant mode

* Disable multi-participant test in split participant

* Add missing ContractIdIT test

Co-authored-by: tudor-da <tudor.voicu@digitalasset.com>
This commit is contained in:
Robert Autenrieth 2021-10-11 23:31:30 +02:00 committed by GitHub
parent 7a54ca1926
commit 66adbc0366
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 173 additions and 193 deletions

View File

@ -314,8 +314,7 @@ jobs:
//ledger-service/http-json-oracle/... \
//triggers/service:test-oracle \
//ledger/participant-integration-api:participant-integration-api-tests-oracle \
//ledger/ledger-on-sql:conformance-test-oracle \
//ledger/ledger-on-sql:conformance-test-append-only-oracle
//ledger/ledger-on-sql:conformance-test-oracle
env:
DOCKER_LOGIN: $(DOCKER_LOGIN)
DOCKER_PASSWORD: $(DOCKER_PASSWORD)

View File

@ -101,25 +101,10 @@ da_scala_test(
],
)
# Full conformance test
conformance_test(
name = "conformance-test",
server = ":daml-on-sql-ephemeral-postgresql",
server_args = [
"--ledgerid=conformance-test",
"--port=6865",
"--eager-package-loading",
],
test_tool_args = [
"--verbose",
"--additional=MultiPartySubmissionIT",
"--additional=ContractIdIT:Accept",
],
)
# TODO append-only: cleanup
conformance_test(
name = "conformance-test-append-only",
server = ":daml-on-sql-ephemeral-postgresql",
server_args = [
"--ledgerid=conformance-test",
"--port=6865",
@ -132,6 +117,7 @@ conformance_test(
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--additional=ContractIdIT:Accept",
],
)

View File

@ -137,6 +137,7 @@ da_scala_binary(
],
)
# Full conformance test (single node setup)
conformance_test(
name = "conformance-test",
ports = [6865],
@ -145,18 +146,25 @@ conformance_test(
"--contract-id-seeding=testing-weak",
"--participant=participant-id=example,port=6865",
"--max-deduplication-duration=PT5S",
"--index-append-only-schema",
"--mutable-contract-state-cache",
],
test_tool_args = [
"--additional=MultiPartySubmissionIT",
"--additional=ContractIdIT:RejectV0,ContractIdIT:AcceptSuffixedV1,ContractIdIT:AcceptNonSuffixedV1",
"--additional=ParticipantPruningIT",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--additional=KVCommandDeduplicationIT",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
# Disable tests targeting only append-only schema functionality
"--exclude=ParticipantPruningIT:PRLocalAndNonLocalRetroactiveDivulgences,ParticipantPruningIT:PRRetroactiveDivulgences,ParticipantPruningIT:PRImmediateAndRetroactiveDivulgence",
# Disable tests targeting only multi-participant setups
"--exclude=ParticipantPruningIT:PRImmediateAndRetroactiveDivulgence",
],
)
# Feature test: --daml-lf-min-version-1.14-unsafe
# This asserts that you can use the 1.14 packages despite their dependencies on a few stable packages in older LF versions.
conformance_test(
name = "conformance-test-min-1.14",
lf_versions = ["1.14"],
@ -167,6 +175,8 @@ conformance_test(
"--participant=participant-id=example,port=6865",
"--daml-lf-min-version-1.14-unsafe",
"--max-deduplication-duration=PT5S",
"--index-append-only-schema",
"--mutable-contract-state-cache",
],
test_tool_args = [
"--additional=MultiPartySubmissionIT",
@ -175,6 +185,7 @@ conformance_test(
],
)
# Full conformance test (two participant setup)
conformance_test(
name = "conformance-test-multi-participant",
ports = [
@ -182,30 +193,6 @@ conformance_test(
6866,
],
server = ":app",
server_args = [
"--contract-id-seeding=testing-weak",
"--participant=participant-id=example1,port=6865",
"--participant=participant-id=example2,port=6866",
"--max-deduplication-duration=PT5S",
],
test_tool_args = [
"--verbose",
"--additional=ParticipantPruningIT",
"--additional=KVCommandDeduplicationIT",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
"--exclude=ConfigManagementServiceIT",
# Disable tests targeting only append-only schema functionality
"--exclude=ParticipantPruningIT:PRLocalAndNonLocalRetroactiveDivulgences,ParticipantPruningIT:PRRetroactiveDivulgences,ParticipantPruningIT:PRImmediateAndRetroactiveDivulgence",
],
)
conformance_test(
name = "conformance-test-append-only-multi-participant",
ports = [
6865,
6866,
],
server = ":app",
server_args = [
"--contract-id-seeding=testing-weak",
"--index-append-only-schema",
@ -227,6 +214,7 @@ conformance_test(
],
)
# Full conformance test (indexer and ledger api server separated)
conformance_test(
name = "conformance-test-split-participant",
ports = [
@ -235,15 +223,23 @@ conformance_test(
server = ":app",
server_args = [
"--contract-id-seeding=testing-weak",
"--index-append-only-schema",
"--mutable-contract-state-cache",
"--participant=participant-id=split-example,port=6865,server-jdbc-url=jdbc:h2:mem:split-example;db_close_delay=-1;db_close_on_exit=false,shard-name=server1,run-mode=ledger-api-server",
"--participant=participant-id=split-example,port=6865,server-jdbc-url=jdbc:h2:mem:split-example;db_close_delay=-1;db_close_on_exit=false,shard-name=indexer,run-mode=indexer",
"--max-deduplication-duration=PT5S",
],
test_tool_args = [
"--verbose",
"--additional=ParticipantPruningIT",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--additional=KVCommandDeduplicationIT",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
"--exclude=ConfigManagementServiceIT",
# Disable tests targeting only multi-participant setups
"--exclude=ParticipantPruningIT:PRImmediateAndRetroactiveDivulgence",
],
)
@ -254,6 +250,8 @@ conformance_test(
server_args = [
"--contract-id-seeding=testing-weak",
"--participant=participant-id=example,port=6865",
"--index-append-only-schema",
"--mutable-contract-state-cache",
],
test_tool_args = [
"--verbose",

View File

@ -258,6 +258,8 @@ da_scala_test_suite(
"--contract-id-seeding=testing-weak",
"--participant participant-id=conformance-test,port=6865",
"--max-deduplication-duration=PT5S",
"--index-append-only-schema",
"--mutable-contract-state-cache",
] + db.get("conformance_test_server_args", []),
tags = db.get("conformance_test_tags", []),
test_tool_args = db.get("conformance_test_tool_args", []) + [
@ -277,6 +279,8 @@ da_scala_test_suite(
server_args = [
"--contract-id-seeding=testing-weak",
"--participant participant-id=example,port=6865",
"--index-append-only-schema",
"--mutable-contract-state-cache",
] + db.get("conformance_test_server_args", []),
tags = db.get("benchmark_performance_envelope_tags", []),
test_tool_args = db.get("benchmark_performance_envelope_tags", []) + [
@ -303,8 +307,9 @@ da_scala_binary(
],
)
# Full conformance test (Postgres)
conformance_test(
name = "conformance-test-append-only-postgres",
name = "conformance-test-postgres",
ports = [6865],
server = ":conformance-test-postgresql-bin",
server_args = [
@ -329,8 +334,9 @@ conformance_test(
],
)
# Full conformance test (H2)
conformance_test(
name = "conformance-test-append-only-h2",
name = "conformance-test-h2",
ports = [6865],
server = ":conformance-test-h2-memory-bin",
server_args = [
@ -356,8 +362,9 @@ conformance_test(
],
)
# Full conformance test (Oracle)
conformance_test(
name = "conformance-test-append-only-oracle",
name = "conformance-test-oracle",
ports = [6865],
server = ":conformance-test-oracle-bin",
server_args = [
@ -382,29 +389,9 @@ conformance_test(
],
)
# Feature test: --buffered-ledger-api-streams-unsafe (in-memory fan-out) (Postgres)
conformance_test(
name = "conformance-test-oracle",
ports = [6865],
server = ":conformance-test-oracle-bin",
server_args = [
"--contract-id-seeding=testing-weak",
"--participant participant-id=conformance-test,port=6865,contract-state-cache-max-size=1,contract-key-state-cache-max-size=1",
"--max-deduplication-duration=PT5S",
],
tags = [] if oracle_testing else ["manual"],
test_tool_args = [
"--verbose",
"--additional=ParticipantPruningIT",
"--additional=MultiPartySubmissionIT",
"--additional=KVCommandDeduplicationIT",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
# Disable tests targeting only append-only schema functionality
"--exclude=ParticipantPruningIT:PRLocalAndNonLocalRetroactiveDivulgences,ParticipantPruningIT:PRRetroactiveDivulgences,ParticipantPruningIT:PRImmediateAndRetroactiveDivulgence",
],
)
conformance_test(
name = "conformance-test-append-only-in-memory-fan-out-postgres",
name = "conformance-test-in-memory-fan-out-postgres",
ports = [6865],
server = ":conformance-test-postgresql-bin",
server_args = [
@ -430,6 +417,7 @@ conformance_test(
],
)
# Feature test: --buffered-ledger-api-streams-unsafe (in-memory fan-out) (Oracle)
conformance_test(
name = "conformance-test-append-only-in-memory-fan-out-oracle",
ports = [6865],
@ -457,6 +445,9 @@ conformance_test(
],
)
# Feature test: contract ids
# This asserts that the Daml engine in ledger-on-sql only accepts V1 contract ids.
# These tests do not depend on the ledger backend, and therefore only run on H2
conformance_test(
name = "conformance-test-contract-ids",
ports = [6865],
@ -464,6 +455,8 @@ conformance_test(
server_args = [
"--contract-id-seeding=testing-weak",
"--participant participant-id=conformance-test,port=6865,contract-state-cache-max-size=1,contract-key-state-cache-max-size=1",
"--index-append-only-schema",
"--mutable-contract-state-cache",
"--jdbc-url=jdbc:h2:mem:daml-on-sql-conformance-test",
],
test_tool_args = [

View File

@ -322,109 +322,131 @@ SERVERS = {
},
}
# TODO append-only: only for temporary testing
ONLY_POSTGRES_SERVER = {
"postgresql": {
"binary": ":sandbox-classic-ephemeral-postgresql",
"server_args": [
"--port=6865",
"--eager-package-loading",
],
},
# =============================================================================
# Conformance tests: supported ledger backend
# =============================================================================
APPEND_ONLY_SCHEMA_SERVERS = {
"postgresql": SERVERS["postgresql"],
"h2database": SERVERS["h2database"],
}
# Server arguments that enable the append-only schema
APPEND_ONLY_ARGS = [
"--enable-append-only-schema",
]
# Full conformance test (Postgres)
server_conformance_test(
name = "conformance-test-static-time",
name = "conformance-test",
lf_versions = [
"default",
"preview",
],
server_args = [
"--static-time",
"--contract-id-seeding=testing-weak",
],
servers = SERVERS,
test_tool_args = [
"--open-world",
"--exclude=ClosedWorldIT",
],
)
# TODO append-only: only for temporary testing
server_conformance_test(
name = "conformance-test-static-time-append-only",
lf_versions = [
"default",
],
server_args = [
"--static-time",
"--contract-id-seeding=testing-weak",
"--enable-append-only-schema",
],
servers = ONLY_POSTGRES_SERVER,
test_tool_args = [
"--open-world",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--exclude=ClosedWorldIT",
],
)
server_conformance_test(
name = "conformance-test-wall-clock",
server_args = [
"--wall-clock-time",
"--contract-id-seeding=testing-weak",
],
servers = SERVERS,
test_tool_args = [
"--open-world",
"--exclude=ClosedWorldIT",
],
)
# TODO append-only: only for temporary testing
server_conformance_test(
name = "conformance-test-wall-clock-append-only",
server_args = [
"--wall-clock-time",
"--contract-id-seeding=testing-weak",
"--enable-append-only-schema",
],
servers = ONLY_POSTGRES_SERVER,
] + APPEND_ONLY_ARGS,
servers = {"postgresql": SERVERS["postgresql"]},
test_tool_args = [
"--concurrent-test-runs=1", # sandbox classic doesn't scale well with concurrent tests (almost no effect on overall run time)
"--timeout-scale-factor=2", # sandbox classic is slow in general
"--open-world",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--additional=ContractIdIT:Accept",
"--additional=ParticipantPruningIT",
"--exclude=ClosedWorldIT",
# Excluding tests that require using pruneAllDivulgedContracts option that is not supported by sandbox-classic
"--exclude=ParticipantPruningIT:PRLocalAndNonLocalRetroactiveDivulgences,ParticipantPruningIT:PRRetroactiveDivulgences,ParticipantPruningIT:PRImmediateAndRetroactiveDivulgence",
"--exclude=ClosedWorldIT",
],
)
# Full conformance test (H2)
# Only run a minimal set of tests on H2. The full test suite is very slow on H2, and prone to fail due to timeouts.
server_conformance_test(
name = "conformance-test-h2",
server_args = [
"--contract-id-seeding=testing-weak",
] + APPEND_ONLY_ARGS,
servers = {"h2database": SERVERS["h2database"]},
test_tool_args = [
"--concurrent-test-runs=1", # sandbox classic doesn't scale well with concurrent tests (almost no effect on overall run time)
"--timeout-scale-factor=2", # sandbox classic is slow in general
"--open-world",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--exclude=ClosedWorldIT",
],
)
# Feature test: --static-time
server_conformance_test(
name = "conformance-test-static-time",
server_args = [
"--static-time",
"--contract-id-seeding=testing-weak",
] + APPEND_ONLY_ARGS,
servers = APPEND_ONLY_SCHEMA_SERVERS,
test_tool_args = [
"--concurrent-test-runs=1", # sandbox classic doesn't scale well with concurrent tests (almost no effect on overall run time)
"--timeout-scale-factor=2", # sandbox classic is slow in general
"--open-world",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandService",
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--exclude=ClosedWorldIT",
],
)
# Feature test: --contract-id-seeding=no (legacy contract ids)
server_conformance_test(
name = "conformance-test-legacy-cid",
lf_versions = ["legacy"],
server_args = [
"--wall-clock-time",
"--contract-id-seeding=no",
] + APPEND_ONLY_ARGS,
servers = APPEND_ONLY_SCHEMA_SERVERS,
test_tool_args = [
"--concurrent-test-runs=1", # sandbox classic doesn't scale well with concurrent tests (almost no effect on overall run time)
"--timeout-scale-factor=2", # sandbox classic is slow in general
"--open-world",
"--exclude=ClosedWorldIT",
],
servers = SERVERS,
)
# =============================================================================
# Conformance tests: deprecated ledger backends (in-memory ledger)
# =============================================================================
DEPRECATED_SERVERS = {
"memory": SERVERS["memory"],
}
# Full conformance test (in-memory ledger)
server_conformance_test(
name = "conformance-test-deprecated",
server_args = [
"--contract-id-seeding=testing-weak",
],
servers = DEPRECATED_SERVERS,
test_tool_args = [
"--open-world",
"--exclude=ClosedWorldIT",
],
)
# Feature test: --static-time (in-memory ledger)
server_conformance_test(
name = "conformance-test-contract-ids",
server_args = ["--contract-id-seeding=testing-weak"],
servers = {"memory": SERVERS["memory"]},
name = "conformance-test-deprecated-static-time",
server_args = [
"--static-time",
"--contract-id-seeding=testing-weak",
],
servers = DEPRECATED_SERVERS,
test_tool_args = [
"--verbose",
"--include=ContractIdIT:Accept",
"--open-world",
"--exclude=ClosedWorldIT",
],
)

View File

@ -273,69 +273,23 @@ NEXT_SERVERS = {
},
}
# Server arguments that enable the append-only schema
APPEND_ONLY_ARGS = [
"--enable-append-only-schema",
]
# Full conformance test
server_conformance_test(
name = "next-conformance-test-static-time",
name = "next-conformance-test",
lf_versions = [
"default",
"latest",
"preview",
],
server_args = [
"--static-time",
],
servers = NEXT_SERVERS,
test_tool_args = [
"--open-world",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
"--exclude=ClosedWorldIT",
],
)
server_conformance_test(
name = "next-conformance-test-wall-clock",
server_args = [
"--wall-clock-time",
"--max-deduplication-duration=PT5S",
],
] + APPEND_ONLY_ARGS,
servers = NEXT_SERVERS,
test_tool_args = [
"--open-world",
"--additional=KVCommandDeduplicationIT",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
"--exclude=ClosedWorldIT",
],
)
server_conformance_test(
name = "next-conformance-test-closed-world",
server_args = [
"--wall-clock-time",
"--implicit-party-allocation=false",
],
servers = NEXT_SERVERS,
test_tool_args = [
"--verbose",
"--include=ClosedWorldIT",
],
)
server_conformance_test(
name = "next-conformance-test-contract-ids",
servers = {"memory": NEXT_SERVERS["memory"]},
test_tool_args = [
"--verbose",
"--include=ContractIdIT:RejectV0,ContractIdIT:AcceptSuffixedV1,ContractIdIT:AcceptNonSuffixedV1",
],
)
# TODO append-only: cleanup
server_conformance_test(
name = "next-conformance-test-append-only",
server_args = [
"--enable-append-only-schema",
"--max-deduplication-duration=PT5S",
],
servers = {"postgresql": NEXT_SERVERS["postgresql"]},
test_tool_args = [
"--open-world",
"--additional=AppendOnlyCommandDeduplicationParallelIT",
@ -343,6 +297,34 @@ server_conformance_test(
"--additional=AppendOnlyCompletionDeduplicationInfoITCommandSubmissionService",
"--additional=AppendOnlyKVCommandDeduplicationIT",
"--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)
server_conformance_test(
name = "next-conformance-test-closed-world",
server_args = [
"--implicit-party-allocation=false",
] + APPEND_ONLY_ARGS,
servers = NEXT_SERVERS,
test_tool_args = [
"--verbose",
"--include=ClosedWorldIT",
],
)
# Feature test: --static-time
server_conformance_test(
name = "next-conformance-test-static-time",
server_args = [
"--static-time",
] + APPEND_ONLY_ARGS,
servers = NEXT_SERVERS,
test_tool_args = [
"--open-world",
"--exclude=CommandDeduplicationIT", # It's a KV ledger so it needs the KV variant
"--exclude=ClosedWorldIT",
],
)