Skip to content

Commit f7910ce

Browse files
canton-network-daDA Automation
andauthored
Update Splice from CCI (#321)
Signed-off-by: DA Automation <splice-maintainers@digitalasset.com> Co-authored-by: DA Automation <splice-maintainers@digitalasset.com>
1 parent c8e2b9f commit f7910ce

File tree

153 files changed

+6333
-1908
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+6333
-1908
lines changed

.envrc.vars

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,19 @@ export POSTGRES_PASSWORD=postgres
2727

2828
export DEPLOYMENT_DIR="${SPLICE_ROOT}/cluster/deployment"
2929

30+
export GHCR=ghcr.io
31+
export DEV_REGISTRY=$GHCR/digital-asset/decentralized-canton-sync-dev
32+
export DEV_HELM_REGISTRY=$DEV_REGISTRY/helm
33+
export OCI_DEV_HELM_REGISTRY=oci://$DEV_HELM_REGISTRY
34+
export DEV_DOCKER_REGISTRY=$DEV_REGISTRY/docker
35+
export CACHE_GHCR=us-central1-docker.pkg.dev/da-cn-shared/ghcr
36+
export CACHE_DEV_REGISTRY=$CACHE_GHCR/digital-asset/decentralized-canton-sync-dev
37+
export CACHE_DEV_DOCKER_REGISTRY=$CACHE_DEV_REGISTRY/docker
38+
export RELEASE_REGISTRY=$GHCR/digital-asset/decentralized-canton-sync
39+
export RELEASE_HELM_REGISTRY=$RELEASE_REGISTRY/helm
40+
export OCI_RELEASE_HELM_REGISTRY=oci://$RELEASE_HELM_REGISTRY
41+
export RELEASE_DOCKER_REGISTRY=$RELEASE_REGISTRY/docker
42+
3043
# Include all organization specific `.envrc.vars.*` files
3144
if stat --printf='' .envrc.vars.* 2>/dev/null; then
3245
for file in .envrc.vars.*; do

apps/app/src/main/scala/org/lfdecentralizedtrust/splice/console/LedgerApiExtensions.scala

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@ import com.daml.ledger.api.v2.transaction.TransactionTree
1010
import com.daml.ledger.javaapi
1111
import com.daml.ledger.javaapi.data.TransactionTree as JavaTransactionTree
1212
import com.daml.ledger.javaapi.data.codegen.{ContractId, Exercised, Update}
13-
import org.lfdecentralizedtrust.splice.environment.{SpliceLedgerConnection, PackageIdResolver}
14-
import org.lfdecentralizedtrust.splice.util.{Contract, JavaDecodeUtil, PackageQualifiedName}
1513
import com.digitalasset.canton.admin.api.client.commands.LedgerApiCommands
1614
import com.digitalasset.canton.admin.api.client.data.TemplateId
1715
import com.digitalasset.canton.config.NonNegativeDuration
16+
import com.digitalasset.canton.console.commands.BaseLedgerApiAdministration
1817
import com.digitalasset.canton.console.{
1918
ConsoleCommandResult,
2019
ConsoleMacros,
2120
FeatureFlag,
2221
Help,
2322
LedgerApiCommandRunner,
2423
}
25-
import com.digitalasset.canton.console.commands.BaseLedgerApiAdministration
2624
import com.digitalasset.canton.data.DeduplicationPeriod
2725
import com.digitalasset.canton.topology.{DomainId, PartyId}
2826
import com.digitalasset.canton.tracing.TraceContext
27+
import org.lfdecentralizedtrust.splice.environment.{PackageIdResolver, SpliceLedgerConnection}
28+
import org.lfdecentralizedtrust.splice.util.{Contract, JavaDecodeUtil, PackageQualifiedName}
2929

3030
import java.time.Instant
3131
import java.util.concurrent.atomic.AtomicReference
@@ -70,9 +70,15 @@ trait LedgerApiExtensions {
7070
readAs: Seq[PartyId] = Seq.empty,
7171
applicationId: String = LedgerApiCommands.defaultApplicationId,
7272
disclosedContracts: Seq[CommandsOuterClass.DisclosedContract] = Seq.empty,
73+
packageIdResolverCustom: Option[PackageIdResolver] = None,
7374
): JavaTransactionTree = {
7475
val cmds = commands.map(cmd =>
75-
Await.result(packageIdResolver.resolvePackageId(cmd)(TraceContext.empty), 1.second)
76+
Await.result(
77+
packageIdResolverCustom
78+
.getOrElse(packageIdResolver)
79+
.resolvePackageId(cmd)(TraceContext.empty),
80+
1.second,
81+
)
7682
)
7783
val tx = ledgerApi.consoleEnvironment.run {
7884
ledgerApi.ledgerApiCommand(
@@ -107,6 +113,7 @@ trait LedgerApiExtensions {
107113
commandId: Option[String] = None,
108114
domainId: Option[DomainId] = None,
109115
disclosedContracts: Seq[CommandsOuterClass.DisclosedContract] = Seq.empty,
116+
packageIdResolverCustom: Option[PackageIdResolver] = None,
110117
): T = {
111118
val tree = submitJava(
112119
actAs,
@@ -117,6 +124,7 @@ trait LedgerApiExtensions {
117124
applicationId = userId,
118125
optTimeout = None,
119126
disclosedContracts = disclosedContracts,
127+
packageIdResolverCustom = packageIdResolverCustom,
120128
)
121129
SpliceLedgerConnection.decodeExerciseResult(
122130
update,

apps/app/src/main/scala/org/lfdecentralizedtrust/splice/console/ScanAppReference.scala

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,13 @@ import com.digitalasset.canton.console.{BaseInspection, ConsoleCommandResult, He
4343
import com.digitalasset.canton.data.CantonTimestamp
4444
import com.digitalasset.canton.topology.{DomainId, Member, ParticipantId, PartyId}
4545
import com.google.protobuf.ByteString
46+
import org.lfdecentralizedtrust.splice.codegen.java.splice.dsorules.{
47+
DsoRules_CloseVoteRequestResult,
48+
VoteRequest,
49+
}
50+
import org.lfdecentralizedtrust.splice.sv.admin.api.client.commands.HttpSvAdminAppClient
4651

52+
import scala.jdk.OptionConverters.*
4753
import java.time.Instant
4854

4955
/** Single scan app reference. Defines the console commands that can be run against a client or backend scan
@@ -475,6 +481,60 @@ abstract class ScanAppReference(
475481
}
476482
}
477483

484+
@Help.Summary("List vote requests")
485+
def listVoteRequests(): Seq[Contract[VoteRequest.ContractId, VoteRequest]] = {
486+
consoleEnvironment.run {
487+
httpCommand(
488+
HttpScanAppClient.ListVoteRequests
489+
)
490+
}
491+
}
492+
493+
@Help.Summary("Get the latest vote request trackingCid")
494+
def getLatestVoteRequestTrackingCid(): VoteRequest.ContractId = {
495+
val latestVoteRequest = this
496+
.listVoteRequests()
497+
.headOption
498+
.getOrElse(
499+
throw new RuntimeException("No latest vote request found")
500+
)
501+
latestVoteRequest.payload.trackingCid.toScala.getOrElse(latestVoteRequest.contractId)
502+
}
503+
504+
@Help.Summary("Lookup vote request")
505+
def lookupVoteRequest(
506+
trackingCid: VoteRequest.ContractId
507+
): Contract[VoteRequest.ContractId, VoteRequest] = {
508+
consoleEnvironment.run {
509+
httpCommand(
510+
HttpSvAdminAppClient.LookupVoteRequest(trackingCid)()
511+
)
512+
}
513+
}
514+
515+
@Help.Summary("List vote results")
516+
def listVoteRequestResults(
517+
actionName: Option[String],
518+
accepted: Option[Boolean],
519+
requester: Option[String],
520+
effectiveFrom: Option[String],
521+
effectiveTo: Option[String],
522+
limit: BigInt,
523+
): Seq[DsoRules_CloseVoteRequestResult] = {
524+
consoleEnvironment.run {
525+
httpCommand(
526+
HttpScanAppClient.ListVoteRequestResults(
527+
actionName,
528+
accepted,
529+
requester,
530+
effectiveFrom,
531+
effectiveTo,
532+
limit,
533+
)
534+
)
535+
}
536+
}
537+
478538
}
479539

480540
final class ScanAppBackendReference(

apps/app/src/main/scala/org/lfdecentralizedtrust/splice/console/SvAppReference.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ abstract class SvAppReference(
171171
reasonUrl: String,
172172
reasonDescription: String,
173173
expiration: RelTime,
174+
effectiveTime: Option[Instant],
174175
)(implicit tc: TraceContext): Unit = {
175176
consoleEnvironment.run {
176177
httpCommand(
@@ -180,6 +181,7 @@ abstract class SvAppReference(
180181
reasonUrl,
181182
reasonDescription,
182183
expiration,
184+
effectiveTime,
183185
)
184186
)
185187
}

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/AppUpgradeIntegrationTest.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ class AppUpgradeIntegrationTest
240240
),
241241
java.util.Optional.empty(),
242242
)
243+
// TODO(#16139): adaptation to this test required
243244
val upgradeAction = new ARC_AmuletRules(
244245
new CRARC_AddFutureAmuletConfigSchedule(
245246
new AmuletRules_AddFutureAmuletConfigSchedule(
@@ -262,6 +263,7 @@ class AppUpgradeIntegrationTest
262263
"url",
263264
"description",
264265
sv1Backend.getDsoInfo().dsoRules.payload.config.voteRequestTimeout,
266+
None,
265267
)
266268
},
267269
)("vote request has been created", _ => sv1Backend.listVoteRequests().loneElement)
@@ -325,6 +327,7 @@ class AppUpgradeIntegrationTest
325327
"url",
326328
"description",
327329
sv1Backend.getDsoInfo().dsoRules.payload.config.voteRequestTimeout,
330+
None,
328331
)
329332
},
330333
)("vote request has been created", _ => sv1Backend.listVoteRequests().loneElement)

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/AutomationControlIntegrationTest.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import com.digitalasset.canton.integration.BaseEnvironmentDefinition
1919

2020
class AutomationControlIntegrationTest
2121
extends IntegrationTest
22-
with ConfigScheduleUtil
2322
with WalletTestUtil
2423
with TimeTestUtil {
2524

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/BftScanConnectionIntegrationTest.scala

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,15 @@ import org.lfdecentralizedtrust.splice.integration.tests.SpliceTests.{
66
IntegrationTest,
77
SpliceTestConsoleEnvironment,
88
}
9-
import org.lfdecentralizedtrust.splice.util.{ConfigScheduleUtil, SvTestUtil, WalletTestUtil}
9+
import org.lfdecentralizedtrust.splice.util.{SvTestUtil, WalletTestUtil}
1010
import com.digitalasset.canton.integration.BaseEnvironmentDefinition
1111
import com.digitalasset.canton.logging.SuppressionRule
1212
import org.slf4j.event.Level
1313

1414
import scala.jdk.CollectionConverters.*
1515
import scala.jdk.OptionConverters.*
1616

17-
class BftScanConnectionIntegrationTest
18-
extends IntegrationTest
19-
with ConfigScheduleUtil
20-
with WalletTestUtil
21-
with SvTestUtil {
17+
class BftScanConnectionIntegrationTest extends IntegrationTest with WalletTestUtil with SvTestUtil {
2218

2319
override def environmentDefinition
2420
: BaseEnvironmentDefinition[EnvironmentImpl, SpliceTestConsoleEnvironment] =
@@ -57,8 +53,10 @@ class BftScanConnectionIntegrationTest
5753
logs =>
5854
(logs
5955
.map(_.message)
60-
.forall(
61-
_.contains(s"Failed to connect to scan of ${getSvName(2)} (http://localhost:5112).")
56+
.forall(msg =>
57+
msg
58+
.contains(s"Failed to connect to scan of ${getSvName(2)} (http://localhost:5112).") ||
59+
msg.contains("Encountered 4 consecutive transient failures")
6260
) should be(true)).withClue(s"Actual Logs: $logs"),
6361
)
6462

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/BootstrapPackageConfigIntegrationTest.scala

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33

44
package org.lfdecentralizedtrust.splice.integration.tests
55

6+
import com.digitalasset.canton.admin.participant.v30.DarDescription
7+
import com.digitalasset.canton.config.CantonRequireTypes.InstanceName
8+
import com.digitalasset.canton.crypto.Hash
9+
import com.digitalasset.canton.data.CantonTimestamp
10+
import com.digitalasset.canton.integration.BaseEnvironmentDefinition
611
import com.digitalasset.daml.lf.data.Ref.{PackageName, PackageVersion}
12+
import com.google.protobuf.ByteString
713
import org.lfdecentralizedtrust.splice.codegen.java.splice.amuletconfig.{
814
AmuletConfig,
915
PackageConfig,
@@ -30,16 +36,11 @@ import org.lfdecentralizedtrust.splice.integration.tests.SpliceTests.{
3036
import org.lfdecentralizedtrust.splice.sv.automation.singlesv.LocalSequencerConnectionsTrigger
3137
import org.lfdecentralizedtrust.splice.sv.config.SvOnboardingConfig.InitialPackageConfig
3238
import org.lfdecentralizedtrust.splice.util.{DarUtil, ProcessTestUtil, StandaloneCanton}
33-
import com.digitalasset.canton.admin.participant.v30.DarDescription
34-
import com.digitalasset.canton.config.CantonRequireTypes.InstanceName
35-
import com.digitalasset.canton.crypto.Hash
36-
import com.digitalasset.canton.data.CantonTimestamp
37-
import com.digitalasset.canton.integration.BaseEnvironmentDefinition
38-
import com.google.protobuf.ByteString
39+
import org.scalatest.time.{Minute, Span}
40+
3941
import java.time.Instant
4042
import java.time.temporal.ChronoUnit
4143
import scala.jdk.CollectionConverters.*
42-
import org.scalatest.time.{Minute, Span}
4344

4445
class BootstrapPackageConfigIntegrationTest
4546
extends IntegrationTest
@@ -210,6 +211,7 @@ class BootstrapPackageConfigIntegrationTest
210211
"url",
211212
"description",
212213
sv1Backend.getDsoInfo().dsoRules.payload.config.voteRequestTimeout,
214+
None,
213215
)
214216
},
215217
)("vote request has been created", _ => sv1Backend.listVoteRequests().loneElement)

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/DecentralizedSynchronizerMigrationIntegrationTest.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ class DecentralizedSynchronizerMigrationIntegrationTest
675675
.plus(12, ChronoUnit.SECONDS)
676676
scheduleDomainMigration(
677677
sv1Backend,
678-
Seq(sv2Backend, sv3Backend, sv4Backend),
678+
Seq(sv2Backend, sv3Backend),
679679
Some(new SynchronizerUpgradeSchedule(scheduledTime, 1L)),
680680
)
681681
},
@@ -1043,6 +1043,7 @@ class DecentralizedSynchronizerMigrationIntegrationTest
10431043
"url",
10441044
"description",
10451045
sv1LocalBackend.getDsoInfo().dsoRules.payload.config.voteRequestTimeout,
1046+
None,
10461047
),
10471048
)(
10481049
"VoteRequest and Vote should be there",

apps/app/src/test/scala/org/lfdecentralizedtrust/splice/integration/tests/DsoElectionTimeBasedIntegrationTest.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package org.lfdecentralizedtrust.splice.integration.tests
22

3-
import org.lfdecentralizedtrust.splice.codegen.java.splice.round.OpenMiningRound
3+
import com.digitalasset.canton.logging.SuppressionRule
4+
import com.digitalasset.canton.topology.DomainId
45
import org.lfdecentralizedtrust.splice.codegen.java.splice
56
import org.lfdecentralizedtrust.splice.codegen.java.splice.dsorules.DsoRules_OffboardSv
67
import org.lfdecentralizedtrust.splice.codegen.java.splice.dsorules.actionrequiringconfirmation.ARC_DsoRules
78
import org.lfdecentralizedtrust.splice.codegen.java.splice.dsorules.dsorules_actionrequiringconfirmation.SRARC_OffboardSv
9+
import org.lfdecentralizedtrust.splice.codegen.java.splice.round.OpenMiningRound
810
import org.lfdecentralizedtrust.splice.integration.tests.SpliceTests.BracketSynchronous.bracket
9-
import org.lfdecentralizedtrust.splice.sv.automation.delegatebased.CloseVoteRequestWithEarlyClosingTrigger
11+
import org.lfdecentralizedtrust.splice.sv.automation.delegatebased.CloseVoteRequestTrigger
1012
import org.lfdecentralizedtrust.splice.sv.util.SvUtil
11-
import com.digitalasset.canton.logging.SuppressionRule
12-
import com.digitalasset.canton.topology.DomainId
1313
import org.slf4j.event.Level
1414

1515
import java.time.Duration as JavaDuration
@@ -89,10 +89,11 @@ class DsoElectionTimeBasedIntegrationTest
8989
"url",
9090
"remove current delegate",
9191
sv1Backend.getDsoInfo().dsoRules.payload.config.voteRequestTimeout,
92+
None,
9293
)
9394
},
9495
)("vote request has been created", _ => sv1Backend.listVoteRequests().loneElement)
95-
Seq(sv2Backend, sv3Backend, sv4Backend)
96+
Seq(sv2Backend, sv3Backend)
9697
.filter(
9798
// current delegate not voting
9899
_.getDsoInfo().svParty.toProtoPrimitive != currentLeader
@@ -112,7 +113,7 @@ class DsoElectionTimeBasedIntegrationTest
112113
clue("Leader has changed") {
113114
loggerFactory.assertEventuallyLogsSeq(SuppressionRule.LevelAndAbove(Level.INFO))(
114115
leaderBackend.dsoDelegateBasedAutomation
115-
.trigger[CloseVoteRequestWithEarlyClosingTrigger]
116+
.trigger[CloseVoteRequestTrigger]
116117
.resume(),
117118
entries => {
118119
forExactly(4, entries) { line =>

0 commit comments

Comments
 (0)