Commit Graph

1022 Commits

Author SHA1 Message Date
Remy
e09755ca08
Replay transaction (#6464)
CHANGELOG_BEGIN
CHANGELOG_END
2020-07-08 10:21:48 +02:00
fabiotudone-da
474e92c13c
Track min and max record time in CommitContext when pre-executing (#6591) 2020-07-08 09:53:44 +02:00
Leonid Shlyapnikov
65087d9b9b
Stream pagination based on generated event sequence number (#6372)
* row_id changes

* fixing inserts

* replacing offset with row_id in the flat transaction stream queries

* fixing flat transaction query, updating H2 migration script

* fixing formatting

* ACS query pagination relies on row_id instead of ledger offset

* give a name to the index that we have to drop

* give a name to the index

* Fixing events range query it can return SQL nulls on empty DB.

* remove the debug println

* remove outdated comment

* removing unused orderByColumns constant

* getting rid of new `Source.flatMapConcat` calls that were added as part of this PR.

CHANGELOG_BEGIN

1. ACS, Flat Transaction and Transaction Tree stream pagination based on event_sequential_id instead of event_offset.
2. Events ordering based on the order of insertion: order by event_sequential_id instead of order by (event_offset, transaction_id, node_index).

CHANGELOG_END

* reverting changes to V13 H2 migration script,

figuring out the name of the index that has to be dropped

* Addressing code review comments:

- replacing scalaz Option.cata with stdlib Option.fold
- moving implicit val def into import

* Addressing code review comments:

- extracting re-usable stream query functions

* forcing postgres to use index when looking up lower and upper bound row ids

* fixing the query when it is run on an empty ledger

* resolving rebase conflicts

* Update ledger/sandbox/src/main/scala/com/digitalasset/platform/store/dao/events/EventsRange.scala

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

* fetching a single row, fetchSize should NOT matter

* Adding integration test to reproduce invalid order of archived, created events

The test fails, which is expected.

* Fixing the order of archived, created events triggered by exercise

* Addressing code review comments and cleaning up

* Renaming row_id to event_sequential_id

* Investigating flaky tests

* Fixing formatting

* Revert HOTFIX-flaky-client-server changes

`bazel test --runs_per_test=50 //ledger/participant-state/kvutils:reference-ledger-dump` passed on this branch.

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>
2020-07-07 19:53:18 -04:00
Ognjen Maric
5a803c37d4
Return the ledger beginning as the ledger end on an empty ledger (#6638)
* Return the ledger beginning as the ledger end on an empty ledger

Previously, the services would return `Offset.beforeBegin` to the
clients, and the other services deem this offset to be invalid.

CHANGELOG_BEGIN
CHANGELOG_END

* Apply suggestions from code review

Co-authored-by: Samir Talwar <samir.talwar@digitalasset.com>

* Import DurationInt

* Kill unused import

* Use ApiOffset for the external ledger begin

Co-authored-by: Samir Talwar <samir.talwar@digitalasset.com>
2020-07-07 17:12:03 +00:00
Stephen Compall
4cd419623a
replace traverseU and sequenceU with traverse and sequence (#6594)
* replace traverseU and sequenceU with traverse and sequence

- with -Ypartial-unification on, the extra Unapply typeclass lookup is
  unnecessary

* no changelog

CHANGELOG_BEGIN
CHANGELOG_END

* limit imports; we only need *> and void
2020-07-07 15:01:58 +00:00
Miklos
1ffb28cde9
Renamed some default variables (#6627)
* BatchedSubmissionValidatorParameters.default => reasonableDefault

* Config.default() => createDefault()

* ExtraConfig.default => reasonableDefault
CHANGELOG_BEGIN
CHANGELOG_END
2020-07-06 16:52:47 +00:00
Samir Talwar
28873913d9
Bazel: Upgrade Buildifier. (#6625)
Buildifier now comes with a handy attachment to catch single `\`
characters inside strings and replace them with `\\` if the escape
sequence is invalid. Skylark/Python will do this at runtime anyway; this
just makes it clearer what the actual behavior is.

I needed to change `\` characters at the end of lines to `\\` manually
in order to stop Buildifier from simply concatenating the lines
together. Everything else was automatic.

CHANGELOG_BEGIN
CHANGELOG_END
2020-07-06 16:07:47 +00:00
Samir Talwar
304f8d4201
kvutils/integrity-check: Clean up code around printing. (#6619)
* kvutils/integrity-check: Always reset the output color.

Contrary to popular belief, terminal colors are hard. Resetting to
"white" isn't good enough; you don't know which color the user's
terminal should be set to. We need to print `AnsiColor.RESET` to ensure
the terminal is properly reset.

This changes the way we print so we _always_ set the color and then
reset it in one operation, making it impossible to accidentally leave
the terminal using a specific color. It also fixes the above bug as a
side effect.

CHANGELOG_BEGIN
CHANGELOG_END

* kvutils/integrity-check: Print the total outside `go`.

* kvutils/integrity-check: Push the error outwards.

I'd rather avoid calling `sys.exit` inside a loop if I can.

* kvutils/integrity-check: Implicits for colors.

Before:

```scala
Print.green("Hello!")
```

After:

```scala
println("Hello!".green)
```
2020-07-06 15:23:17 +00:00
Samir Talwar
f1a00f40bf
kvutils/integrity-check: Rewrite without Await. (#6614)
* kvutils/integrity-check: When there's an exception, crash.

The integrity checker would previously hang around for a long time in
the event of an exception. This makes sure all threads are shut down
immediately.

* kvutils/integrity-check: Increase the timeout per submission.

Larger submissions time out on my machine.

CHANGELOG_BEGIN
CHANGELOG_END

* kvutils/integrity-check: Rewrite without `Await`.

* kvutils/integrity-check: Close the file after running.
2020-07-06 10:59:11 +00:00
Remy
dbd0215dd0
DAML-LF: cleanup TransactionBuilder (#6610)
small clean up in the testing library TransactionBuilder, bsaically add a Submitted and a Committed version for empty transaction constant and build method.

plus a bit of cleaning in tests using TransactionBuilder


CHANGELOG_BEGIN
CHANGELOG_END
2020-07-06 11:25:36 +02:00
Miklos
c789b65bd8
Do not expose log entry ID to committers (#6603)
* Removed archived_by_entry from CommitContext and DamlContractState.

* Removed references to getEntryId from test code.

* Do not pass log entry ID to committers.

* Log entry ID is no longer required for computing submission outputs.

* Log entry ID is no longer required for computing submission outputs.

* Code tidying.
CHANGELOG_BEGIN
CHANGELOG_END
2020-07-06 08:30:55 +00:00
Stefano Baghino
e1568e2b9d
Add test for divulgence with keys (#6607)
* Add test for divulgence with keys

changelog_begin
changelog_end

* Add unit test for redundant divulgence

changelog_begin
changelog_end

* Revert "Don't store archived divulged contracts (#6139)"

This reverts commit 28251ba296.

* Fix tests

* Address https://github.com/digital-asset/daml/pull/6607#discussion_r449799885

* Address https://github.com/digital-asset/daml/pull/6607#discussion_r449800030
2020-07-04 20:14:22 +00:00
Miklos
52fc0635f1
Handle out-of-time-bounds log entry (#6568) 2020-07-03 15:27:27 +02:00
Robert Autenrieth
3e55fda66b
Privatize ledger-api-auth classes (#6599)
CHANGELOG_BEGIN
CHANGELOG_END
2020-07-03 15:06:18 +02:00
fabiotudone-da
43f99f45fc
Add support for fingerprints in CommitContext (#6567) 2020-07-03 10:57:49 +02:00
Martin Huschenbett
873e0163cd
Drop the global from globalImplicitDisclosure and globalDivulgence (#6588)
Since we have only absolute contract ids, there is no more distinction
between local and global disclosure/divulgence. Let's please remove the
`global` prefix since it causes confusion (at least for me it did).

CHANGELOG_BEGIN
CHANGELOG_END
2020-07-03 08:43:31 +02:00
Remy
1480168604
Speedy: make thing a bit more private (#6579)
CHANGELOG_BEGIN
CHANGELOG_END
2020-07-02 18:19:03 +02:00
Stephen Compall
86148c398b
make @silent annotations narrower (#6570)
* check that all @silent annotations are used

CHANGELOG_BEGIN
CHANGELOG_END

* make all @silent annotations very specific about what they're silencing
2020-07-01 20:53:22 +00:00
Miklos
5302c57593
Make record time optional for committers (#6538) 2020-07-01 19:20:07 +02:00
fabiotudone-da
bf36f32fca
CommitContext records accessed input keys (#6561)
* `CommitContext` records accessed input keys

CHANGELOG_BEGIN
CHANGELOG_END

* Simplify state and tests for `accessedInputKeys`.

* Add note about stable VS deterministic iteration order

* Add test about not recording input keys that are not accessed.

* Use regular a regular set for accessed keys as nor iteration stability nor determinism are needed
2020-07-01 16:57:37 +00:00
Miklos
ccfb0ac94e
Make interpretation cost available for LedgerWriter/WriteService (#6515)
* Measure time of interpretation and store it in CommandExecutionResult.

* Added parameters for passing in interpretation time for WriteService and LedgerWriter.

* Code tidying.

* Added CommitMetadata parameter to LedgerWriter.

* Thread through interpretation time. Aggregate interpretation times for a batch.

* Take max of interpretation times.

* Calculate interpretation time in nanos.

* Moved CommitMetadata into separate file.
CHANGELOG_BEGIN
CHANGELOG_END

* Apply suggestions from code review

Co-authored-by: Samir Talwar <samir.talwar@digitalasset.com>

* Delegate deprecated methods to method with new signature.

* Code tidying.

* Suppress deprecation warnings.

* Made interpretation cost optional in CommitMetadata.

* Test that we populate interpretation time.

* Code tidying.

* Apply suggestions from code review

Co-authored-by: Samir Talwar <samir.talwar@digitalasset.com>

* Code tidying.

* Some more tests. Do not return interpretation cost for a batch if it only contains non-transaction submissions.

* Reformatted.

* Reformatted.

* Named arbitrary interpretation cost.

* Reverted changes for BatchingLedgerWriter.

* Always drop commit metadata for batches and don't report interpretation cost.

* More specific expectations.

* Include authorization check and blinding in interpretation time.

Co-authored-by: Samir Talwar <samir.talwar@digitalasset.com>
2020-06-30 16:45:12 +00:00
Miklos
f01a8e66dc
Remove record time from DAML state values (#6526) 2020-06-30 17:53:08 +02:00
Samir Talwar
7f7eaa35e7
Use Distroless for the Java Docker base image. (#6537)
* Use Distroless for the Java Docker base image.

We switched away from Distroless because it was causing issues with
`docker pull` when you had Docker configured to use `gcloud` for
authentication, but weren't actually authenticated.

Adding `docker-credential-gcloud` to dev-env should hopefully fix this,
meaning we can switch back to a base image that is better-maintained.

CHANGELOG_BEGIN
CHANGELOG_END

* Bump rules_docker to v0.14.3.

This fixes an issue when running `bazel sync`:

```
ERROR: java.io.IOException: Error downloading [http://central.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.jar] to [...]/external/javax_servlet_api/javax.servlet-api-3.0.1.jar: Unknown host: central.maven.org
```
2020-06-30 12:01:43 +00:00
Robert Autenrieth
d3a69b31cd
Improve test output (#6499)
* Make deduplication test more reliable

CHANGELOG_BEGIN
CHANGELOG_END

* Address review comment
2020-06-30 08:58:32 +00:00
Oliver Seeliger
768f135cd6
Multinode ledgers reflect whether party is non-local - take 2 (#6533)
* Multinode ledgers reflect whether party is non-local (#6382)

* Multinode ledgers reflect whether party is non-local

Closes #2026

The new `PartyManagement` test `PMListKnowPartiesIsLocal` checks whether any known non-local
party is either not known or marked with `PartyDetails.isLocal == false`. This check is not
run for single-participant ledger setups. The test also verifies that `PartyDetails.displayName`
is preserved.

CHANGELOG_BEGIN
- [Ledger Api] The Package Management Service's `ListKnownParties` response's `PartyDetails` now
  properly reflects where a party is non-local on distributed, multi-participant ledgers that
  expose parties to remote participants.
CHANGELOG_END

* Review feedback from Stefano and sql fix from Ratko

* Simplify #6382 (#6413)

* Simplify https://github.com/digital-asset/daml/pull/6382

changelog_begin
changelog_end

* Test fixes switching alpha/beta and alice/bob

* getParties don't seem to become available

when run against statically created parties until a transaction is run:

when testing

bazel test //ledger/sandbox:next-conformance-test-wall-clock-time-postgresql

Adding transaction to make the test framework happy

Co-authored-by: Oliver Seeliger <oliver.seeliger@digitalasset.com>

* More review feedback

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

* Accommodate implicitly created, local parties

* Merge fix

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>
2020-06-30 07:22:47 +00:00
Martin Huschenbett
659e77172f
Support --profile-dir and --stack-traces in sandbox next (#6531)
So far, these two flags only worked in sandbox classic because I wasn't
aware the code path consuming the options is not shared between both
implementation. Now, sandbox next is on par with sandbox classic.

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-30 09:10:39 +02:00
Samir Talwar
2404d18b5d
kvutils: When creating the reference ledger dump, do it less eagerly. (#6525)
Our build is intermittently failing on CI on the target,
`//ledger/participant-state/kvutils:reference-ledger-dump`.

Creating the reference ledger dump exercises ledger-on-memory with the
Ledger API Test Tool as a side effect. The real goal is to run any kind
of kvutils ledger and generate a load of data. With that in mind, the
idea is to be somewhat stable, not fast.

This decreases the number of concurrent tests running at once to
generate the reference dump from the number of CPUs (presumably 8 on CI,
though I'm not sure) to 4.

It does not change the number of concurrent tests when running
`//ledger/ledger-on-memory/conformance-test`. This will still default to
the number of CPUs.

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-29 15:02:08 +00:00
Stefano Baghino
748d17bbe0
Bump Flyway version to 6.5 (#6520)
* Bump Flyway version to 6.5

Prevents incurring into https://github.com/flyway/flyway/issues/2759 (which was apparently solved in 6.4.0)

changelog_begin
changelog_end

* Comply with changed method signature
2020-06-29 14:07:21 +00:00
Martin Huschenbett
83d7b962d6
sandbox: Add a command line flag to disable DAML stack traces (#6512)
* sandbox: Add a command line flag to disable DAML stack traces

The sandbox now accepts a `--stack-traces no` flag which will turn off
the location tracking in DAML Engine required to produce stack traces
for failing DAML code.

Benchmarks suggest that DAML Engine spends about 10% of its time with
tracking locations. Thus, this flag will give us roughly a 1.1x
speedup when stack traces are not needed.

This flag is still hidden because we would like to validate its
usefulness before we commit to supporting it.

CHANGELOG_BEGIN
CHANGELOG_END

* Make it more obvious where we're overriding methods

CHANGELOG_BEGIN
CHANGELOG_END

* Improve help text
2020-06-29 13:47:26 +00:00
Samir Talwar
8b972fb1d6
sandbox: Inject the dispatcher into the BaseLedger. (#6497)
* sandbox: Create proper `ResourceOwner` implementations.

This allows us to use the resource acquisition execution context, rather
than using DirectExecutionContext.

CHANGELOG_BEGIN
CHANGELOG_END

* sandbox: Simplify the construction of SqlLedger.

* sandbox: Inject the dispatcher into the BaseLedger.

* sandbox: Make sure the SqlLedger objects are closed.

Tiny regression. No one noticed. It's OK.

* sandbox: Simplify ReadOnlySqlLedger.

Co-Authored-By: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

* sandbox: Pull out functions to make SqlLedger.Owner easier to read.

Co-Authored-By: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

* ledger-api-common: Factor out wrapping Dispatcher in a ResourceOwner.

* sandbox: Move the PersistenceQueue into a ResourceOwner.

* ledger-api-common: Add a comma.

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>
2020-06-29 13:24:07 +00:00
Stefano Baghino
36a9042594
Remove localDisclosures from BlindingInfo entirely (#6509)
* Address https://github.com/digital-asset/daml/pull/6507#discussion_r446113575

* drop blindinginfo.proto

changelog_begin
changelog_end

* drop BlindingCoder

* Remove blindinginfo Protobuf definition JAR

changelog_begin
[DAML-LF] The blindinginfo Protobuf definition JAR, which was previously unused, has been pulled from the artifacts released on Maven
changelog_end

Co-authored-by: Remy Haemmerle <Remy.Haemmerle@daml.com>
2020-06-26 14:50:49 +00:00
Remy
46b68bd92a
ledger test tool: refactor conformance test dars (#6506)
* ledger test tool: refactor conformance test dars

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-26 13:39:00 +02:00
Remy
6d27825acb
Engine: introduce config to control value/transaction output version (#6428)
* Engine: introduce configuration to control value/transaction output version

This advances the state of #5164

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-26 13:38:38 +02:00
Stephen Compall
a51d0db8ff
set scalac -Xsource:2.13 -Ypartial-unification globally (#6469)
* add -Xsource:2.13, -Ypartial-unification to common_scalacopts

* add now-referenced scalaz-core where needed

* work around bad type signatures in scalatest Aggregating, Containing

* unused Any suppression

* work around bad partial-unification wrought by type alias

* remove unused Conversions import

- not required in 4f68cfc480 either, so unsure how it's survived this long

* work around Future.traverse; remove unused show import

* no changelog

CHANGELOG_BEGIN
CHANGELOG_END

* remove unused bounds

* remove -Ypartial-unification and -Xsource:2.13 where they were explicitly passed

* longer comment on what the options do

- suggested by @stefanobaghino-da; thanks

* forget Future.traverse, just use scalaz, it knows how to do this
2020-06-24 16:51:24 -04:00
Gary Verhaegen
fc5fa4c213
granular test selection, take 3 (#6458)
This is the final bit extracted from #6314. This PR adds the capability
to filter individual test cases (for either inclusion or exclusion)
while being completely backwards compatible. It also introduces a new
cli option, `--list-all`, to list all test cases, keeping the behaviour
of the existing `--list` option unchanged, i.e. only print test suites.

Unlike #6314, this is still building upon the idea of defining test
suites as maps, preserving the known-good order of tests and thereby not
introducing flakiness into our builds.

CHANGELOG_BEGIN

- [Ledger API Test Tool] ``--exclude`` and ``--include`` now match the
  full test name as a prefix, rather than just suite names. Test name is
built by combining the suite name with a test identifier, so this change
should be fully backwards compatible. Run with ``--list-all`` to list
all tests (as opposed to just the test suites with ``--list``).

CHANGELOG_END
2020-06-23 14:27:36 +02:00
Oliver Seeliger
fa652e8fce
Revert "Multinode ledgers reflect whether party is non-local (#6382)" (#6461)
This reverts commit 004d2800f0.

CHANGELOG_BEGIN
NOTE: the following line needs to be removed from the change log:
- [Ledger Api] The Package Management Service's `ListKnownParties` response's `PartyDetails` now
  properly reflects where a party is non-local on distributed, multi-participant ledgers that
  expose parties to remote participants.

CHANGELOG_END
2020-06-23 09:44:22 +00:00
Oliver Seeliger
b68333c29e
Reenable multi-node ledger-api-test-tool conformance test against Canton (#6449)
Canton test suite had been disabled shortly before DAML 1.0. Reenabling
those tests that have been running flake-free in Canton for over a month.

In addition:
- Switched test selection from --include to --exclude so that we see how newly
  added suites run multi-node.
- Switched Canton from in-memory to h2. Also adopted other config settings in
  canton.conf from how tests are invoked in canton continuous integration.
- Increased number of participants from 2 to 4.
- Upgraded Canton from 0.11.0 to 0.15.0

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-23 09:06:28 +02:00
Oliver Seeliger
004d2800f0
Multinode ledgers reflect whether party is non-local (#6382)
* Multinode ledgers reflect whether party is non-local

Closes #2026

The new `PartyManagement` test `PMListKnowPartiesIsLocal` checks whether any known non-local
party is either not known or marked with `PartyDetails.isLocal == false`. This check is not
run for single-participant ledger setups. The test also verifies that `PartyDetails.displayName`
is preserved.

CHANGELOG_BEGIN
- [Ledger Api] The Package Management Service's `ListKnownParties` response's `PartyDetails` now
  properly reflects where a party is non-local on distributed, multi-participant ledgers that
  expose parties to remote participants.
CHANGELOG_END

* Review feedback from Stefano and sql fix from Ratko

* Simplify #6382 (#6413)

* Simplify https://github.com/digital-asset/daml/pull/6382

changelog_begin
changelog_end

* Test fixes switching alpha/beta and alice/bob

* STRANGENESS / DONT MERGE: getParties don't seem to become available

when run against statically created parties until a transaction is run:

when testing

bazel test //ledger/sandbox:next-conformance-test-wall-clock-time-postgresql

Co-authored-by: Oliver Seeliger <oliver.seeliger@digitalasset.com>

* More review feedback

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>
2020-06-22 15:22:04 +02:00
Gary Verhaegen
f101085bc8
api test tool: remove suite name duplication (#6441)
This is the last refactoring extracted from #6314. In #6314, this was
done by turning the `Tests.Tests` type into a Seq (instead of a Map),
which changed the order in which tests ran, thereby introducing
flakiness. This approach, however, still removes the source-level
duplication, but keeps the same Maps at runtime. This makes it a true
refactoring, and thus does not introduce flakiness.

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-22 13:15:48 +02:00
Samir Talwar
a749928172
caching: Wait for the cache to evict some values in tests. (#6438)
* caching: Wait for the cache to evict some values in tests.

Windows, especially, might not do it the first time. Not sure why;
caching is weird.

CHANGELOG_BEGIN
CHANGELOG_END

* caching: Pull out duplicate tests into CacheEvictionSpecBase.
2020-06-19 19:30:58 +02:00
Miklos
9dd78fc508
Ledger data export for non-determinism checks (#6418)
CHANGELOG_BEGIN
CHANGELOG_END
2020-06-19 17:52:11 +02:00
Samir Talwar
6496ddd903
caching | kvutils | sandbox: Use a size-based cache for LF value translation. (#6432)
* caching: Split caches into new files.

* caching: Rename `Cache.from` to `WeightedCache.from`.

* caching: Move `Configuration` inside `WeightedCache`.

* caching: Add test cases.

* caching: Allow for Caffeine builders to be covariant.

* caching: When instrumenting the Caffeine cache, compose, don't inherit.

* caching: Add a size-based cache.

* caching: Extract out common test cases into base classes.

* caching: Use the size-based cache for LF value translation.

CHANGELOG_BEGIN
CHANGELOG_END

* caching: Simplify the eviction tests.

* caching: Increase the encapsulation in CaffeineCache.

* caching: Commas are important.

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>
2020-06-19 14:42:40 +00:00
Remy
1b1b4eab2c
Speedy: clean machine builder name (#6427)
* Address comment martin made in #6368

* changelog

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-19 14:58:13 +02:00
Moritz Kiefer
f5078046e4
Do not expect a specific location in ledger-api-test-tool (#6429)
* Do not expect a specific source location in ledger-api-test-tool

This broke running the ledger-api-test-tool against older ledgers
since the behavior of Speedy has changed slightly.

This PR changes `assertGrpcError` to accept a regex and uses that to
match for a wildcard in place of a specific location. I’ve gone
through the existing calls and added appropriate levels of escaping.

changelog_begin
changelog_end

* Pass an Option[Pattern] to avoid having to convert back to a String

changelog_begin
changelog_end
2020-06-19 14:28:43 +02:00
Gary Verhaegen
ddd8eec701
remove LedgerSession from LedgerTestSuite constructor (#6414)
This is another refactoring extracted from #6314. This is removing the
`LedgerSession` argument from `LedgerTestSuite`. The goal of this change
is to remove the closures from the `Tests.Tests` type, so it becomes a
plain map of name to test suite, rather than a map of name to
function-that-returns-a-test-suite.

In context, this is another step towards removing the name duplication
that occurs in the `Tests.default` and `Tests.optional` maps. I have
separated this step from the one that actually removes the duplication
because removing the duplication in #6314 was done by turning the maps
into seqs, thereby changing the order in which tests are run, which
caused the flakiness issues I've been investigating over the past week.

This commit does not yet change the order in which tests are run and is
therefore safe from that perspective. It's still a true refactoring.

It's a fairly simple one at that as `LedgerTestSuite` itself never uses
the session, and there was only one subclass that did. The subclass,
`TransactionScaleIT`, only used it to get at one config parameter. In
this PR, that config parameter is instead passed down directly to the
`Tests.default` method.

The other use of the `session` attribute was to extract it from the test
suite in order to pass it to the `run` method of
`LedgerTestSuiteRunner`. This was done right after creating the test
suites and giving them that same session, so we're now skipping that
round trip and just giving the session directly to `run`.

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-18 20:32:46 +02:00
Remy
86ceeea8d8
LF: shield value versioning in Transaction builder. (#6415)
We want to avoid that code outside LF version is own LF values.

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-18 17:20:47 +02:00
Remy
5a9e7ebc7c
Speedy: refactor Machine builders (#6368)
In this PR we cleanup the constructor for the speedy Machine.

* We remove the `case`  keyword since `Machine` is a stateful class,
* We replace the pre-existing builders with
  + one generic builder `Machine.apply`,
  + scenario specific builder,

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-18 15:39:55 +02:00
Gary Verhaegen
3e0fe58c53
rename test suites to match their names (#6409)
This is extracted from #6314. This is a simple renaming of a few
classes. The goal here is to have the `LedgerTestSuite#name` match the
key currently used in the `Tests.default` and `Tests.optional` maps so
that we can eventually remove that duplication (after the
`LedgerSession` argument is removed so we can actually construct the
`LedgerTestSuite` objects and ask them their name).

Note that `LedgerTestSuite#name` is [already defined][0] as:

```
  val name: String = getClass.getSimpleName
```

In the context of #6314, this is useful to align the existing behaviour
of `--include` with the desired future behaviour of `--exclude`, so we
can use the same names in both. Alternatives could be to remove the
`LedgerTestSuite#name` method and thread the key `String`s through to
the individual tests somehow, or make the `name` field a constructor
argument rather than reconstruct it based on the class name. This
approach of using the class name is the cleanest I could think of.

CHANGELOG_BEGIN
CHANGELOG_END

[0]: d01715bf2f/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuite.scala (L14)
2020-06-18 15:16:12 +02:00
Gary Verhaegen
3f5f907212
api test tool: remove dead code (#6408)
This is extracted from #6314, but actually has nothing to do with it.
This is removing two functions that are never called, as well as a type
that is never constructed (and the one pattern match on it).

CHANGELOG_BEGIN
CHANGELOG_END
2020-06-18 14:52:11 +02:00
Gary Verhaegen
300895a802
remove ec from LedgerTestSuite (#6387)
`LedgerTestSuite` itself does not do anything with the `ExecutionContext`;
it is only used to provide it as an "ambient" implicit throughout each
test definition. Instead, with this PR, the `ExecutionContext` is
explicitly passed down as an additional argument to the `runTestCase`
closure.

For this not to change the behaviour of the program, we need to be
confident that the `ExecutionContext` is still the same. Let's first
look at how the `ExecutionContext` used to reach a test case. For any
execution of the test tool, there is only one `LedgerTestSuiteRunner`
created [by the main method][0], on which [we call][1] the
`verifyRequirementsAndRun` method. This in turn [calls][2] the `run`
method after checking that the given configuration is valid, and
[that][3] is where the `ExecutionContext` gets created. It is declared
as implicit so it gets picked up by the [`LedgerSession`][4] constructor
[call][5]. This (single) `LedgerSession` then [gets passed][6] to the
[constructor][7] of each individual `LedgerTestSuite`, which [extracts
the `ExecutionContext` from the session][8] to make it available to each
individual test created in the enclosing scope of a subclass when
calling the [`test`][9] method.

With this PR, the `ExecutionContext` is no longer extracted from the
`LedgerSession` in the `LedgerTestSuite` constructor, but is instead
threaded through to the `apply` method of `LedgerTestCase` through the
`run` (different signature) [call][10] for the individual test, which
itself [calls][11] `start`, which then [calls][12] the `apply` method of
`LedgerTestCase`. Because each of these methods (`run` and `start` on
`LedgerTestSuiterunner` and `apply` on `LedgerTestCase`) already
expected an implicit `ExecutionContext`, no change is required on the
`LedgerTestSuiteRunner` side.

A handful of helper functions in various test suites also needed to be
changed to fetch the `ExecutionContext` implicitly from their calling
context rather than capturing it lexically from the enclosing
`LedgerTestSuite`. This is, again, the same `ExecutionContext` it used
to be, but instead of getting it from the `LedgerSession` they get it
from the `LedgerTestCase` closure.

This was originally part of #6314, but despite it being a pure
refactoring, it is quite a large (and somewhat subtle) changeset, so I
believe it is better to review/merge separately.

CHANGELOG_BEGIN
CHANGELOG_END

[0]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/LedgerApiTestTool.scala (L125-L136)
[1]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/LedgerApiTestTool.scala (L138)
[2]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L155)
[3]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L119)
[4]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerSession.scala (L13-L16)
[5]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L122)
[6]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L123)
[7]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuite.scala (L13)
[8]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuite.scala (L20)
[9]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuite.scala (L22-L32)
[10]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L134)
[11]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L114)
[12]: 53bddb54d7/ledger/ledger-api-test-tool/src/main/scala/com/daml/ledger/api/testtool/infrastructure/LedgerTestSuiteRunner.scala (L60)
2020-06-18 13:29:56 +02:00