Skip to content

Fix/flaky integration tests#1740

Closed
siri-varma wants to merge 27 commits intodapr:masterfrom
siri-varma:fix/flaky-integration-tests
Closed

Fix/flaky integration tests#1740
siri-varma wants to merge 27 commits intodapr:masterfrom
siri-varma:fix/flaky-integration-tests

Conversation

@siri-varma
Copy link
Copy Markdown
Contributor

Description

Please explain the changes you've made

Issue reference

We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.

Please reference the issue this PR will close: #[issue number]

Checklist

Please make sure you've completed the relevant tasks for this PR, out of the following list:

  • Code compiles correctly
  • Created/updated tests
  • Extended the documentation

Siri Varma Vegiraju and others added 27 commits March 13, 2026 14:58
Port the BookTrip compensation (Saga) workflow from the plain Java
examples into the Spring Boot workflow patterns module, adding
@Component-annotated activities and a /wfp/compensation REST endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Siri Varma Vegiraju <svegiraju@Siris-MacBook-Pro.local>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>
* Add baggage

Signed-off-by: siri-varma <siri.varma@outlook.com>

* Update sdk/src/test/java/io/dapr/client/DaprClientGrpcBaggageTest.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>

* Remove empty tearDown method in test class

Removed empty tearDown method from DaprClientGrpcBaggageTest.

Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>

* Refactor contextWrite calls to remove casting

Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>

---------

Signed-off-by: siri-varma <siri.varma@outlook.com>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>
Co-authored-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
The dapr/durabletask-protobuf#32 PR refactored protos by concept,
splitting orchestrator_service.proto into orchestration.proto,
history_events.proto, and orchestrator_actions.proto. This broke
the build because only the single file was being downloaded.

- Download all 4 proto files in durabletask-client/pom.xml
- Replace single-file URL property with base URL in parent pom
- Update Java type references from OrchestratorService.* to the
  correct new outer classes: Orchestration, HistoryEvents,
  OrchestratorActions

Signed-off-by: Javier Aliaga <javier@diagrid.io>
* create the release + release notes automatically

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* pr feedback

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…buf#33) (dapr#1704)

Update Java type references to match the Workflow terminology rename
in dapr/durabletask-protobuf#33. Point proto base URL to JoshVanL's
fix-named-reserved branch (durabletask-protobuf#36) which fixes the
mixed reserved syntax incompatible with protoc 3.x, and remove the
antrun workaround.

Signed-off-by: Javier Aliaga <javier@diagrid.io>
* chore: Deprecate invoke methods

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* chore: Deprecate invoke methods

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* chore: Deprecate invoke methods

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* chore: Change examples

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: Siri Varma Vegiraju <siri.varma@outlook.com>
Co-authored-by: salaboy <Salaboy@gmail.com>
Co-authored-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
* fix: upgrade dependencies to address critical CVEs

Upgrade jackson-bom 2.16.2 → 2.18.6 (CVE-2025-52999, CVSS 8.7 DoS),
add netty-bom 4.1.132.Final (CVE-2026-33871 CVSS 8.7, CVE-2026-33870
CVSS 7.5), and bump Spring Boot 3.4.9 → 3.4.10 which pulls Tomcat
10.1.46 (CVE-2025-55754 CVSS 9.6, CVE-2025-55752 CVSS 7.5).

Reorder BOM imports so netty-bom and jackson-bom take precedence over
Spring Boot's managed versions. Align springframework.version 6.2.11
with Spring Boot 3.4.10.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* chore: add TODO to remove netty-bom once gRPC bundles >= 4.1.132

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: upgrade Spring Boot 4.0.2 to 4.0.5 to fix jackson-core 3.0.4 (GHSA-72hv-8253-57qq)

Spring Boot 4.0.4+ ships with jackson 3.1.0, fixing the async JSON
parser DoS vulnerability in jackson-core 3.0.4. Upgrade all 6 modules
that pin springboot4.version from 4.0.2 to 4.0.5 (latest patch).

No jackson-bom override needed — Spring Boot 4.0.5 manages it natively.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Javier Aliaga <javier@diagrid.io>
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.2 to 5.5.3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v5.5.2...v5.5.3)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Dapr Bot <daprweb@microsoft.com>
* fix: bump jackson to 2.21.2 to address CVE (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551)

Upgrade jackson-bom from 2.16.2 to 2.21.2 to fix the high-severity
Allocation of Resources Without Limits or Throttling vulnerability
in jackson-core reported in dapr#1714.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix(deps): upgrade dependencies to address multiple CVEs

- Spring Boot 3.4.10 → 3.4.13
- Spring Framework 6.2.11 → 6.2.17 (CVE injection)
- Jackson 3.x BOM 3.1.0 → 3.1.1 (SNYK-JAVA-TOOLSJACKSONCORE-15907550)
- Logback 1.5.18 → 1.5.25 (SNYK-JAVA-CHQOSLOGBACK-13169722, -15062482)
- Commons Compress 1.24.0 → 1.26.0 (SNYK-JAVA-ORGAPACHECOMMONS-6254296, -6254297)
- Tomcat Embed 10.1.46 → 10.1.52 (SNYK-JAVA-ORGAPACHETOMCATEMBED-15307781, -15307822)

Note: spring-boot-actuator auth bypass CVEs remain in example apps
only — requires Spring Boot 3.5.x which is a breaking change.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix(deps): upgrade Spring Boot to 3.5.12 and remove redundant overrides

Spring Boot 3.5.12 natively manages logback 1.5.32, tomcat 10.1.52,
and spring-framework 6.2.17 — removing all manual overrides that are
now unnecessary. This also resolves the spring-boot-actuator auth
bypass CVEs that required SB 3.5.x.

Only commons-compress 1.26.0 override remains (testcontainers transitive).

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* chore(deps): remove unnecessary Jackson 3.x BOM overrides

Only dapr-spring-boot-4-autoconfigure and spring-boot-4-examples
actually use Jackson 3.x (tools.jackson.core). Removed the override
from 4 modules that don't pull it in transitively.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix(deps): add commons-codec dependency for commons-compress 1.26.0

Commons-compress 1.26.0 declares commons-codec as optional, but
testcontainers uses it at runtime causing ClassNotFoundException
for org.apache.commons.codec.Charsets.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix(deps): add commons-codec as direct dependency in testcontainers-dapr

The dependencyManagement entry alone doesn't pull in optional transitive
deps. commons-codec must be declared as a direct dependency so it's
available at runtime for commons-compress/testcontainers.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Javier Aliaga <javier@diagrid.io>
Bumps [fossas/fossa-action](https://github.com/fossas/fossa-action) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/fossas/fossa-action/releases)
- [Commits](fossas/fossa-action@v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: fossas/fossa-action
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.3 to 6.0.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v5.5.3...v6.0.0)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
* adding sdk tracing capabilities on spring

Signed-off-by: salaboy <Salaboy@gmail.com>

* fix: guard highCardinalityKeyValue calls against null values in ObservationDaprClient

Micrometer's highCardinalityKeyValue throws NPE when the value is null.
Added a safe() helper that coalesces nulls to empty string, applied to
all observation tag values in both Spring Boot 3 and Boot 4 modules.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: add null validation in constructors and fix license header formatting

Add Objects.requireNonNull for delegate and observationRegistry in
ObservationDaprClient and ObservationDaprWorkflowClient constructors
to fail fast on misconfiguration. Fix missing ' * ' prefix on the
last line of license headers in all four new files.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: defer observation start to subscription time in ObservationDaprClient

Wrap observe() and observeFlux() helpers with Mono.defer/Flux.defer so
that obs.start() runs on subscription, not on method call. This prevents
leaked spans when a Mono is never subscribed and ensures span timing
reflects actual execution, not the gap before subscription.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: use proper Objects import, revert license header, add deferred-start test

Replace fully-qualified java.util.Objects with import statement and fix
alphabetical import order to satisfy checkstyle. Revert license header
change since the project's checkstyle config expects the original format.
Add test verifying that an unsubscribed Mono does not leak an observation.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: salaboy <Salaboy@gmail.com>
Signed-off-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
Update maven.compiler.source, target, and release from 11 to 17 in
root pom.xml and dapr-spring/pom.xml. Update all example README
prerequisites to reference JDK 17 download links.

Signed-off-by: Javier Aliaga <javier@diagrid.io>
Signed-off-by: Dapr Bot <daprweb@microsoft.com>
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v8...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ent (dapr#1722)

* feat: add dapr-sdk-bom module for dependency version management (dapr#1720)

Standalone BOM (no parent inheritance) so consumers only get Dapr SDK
artifact versions and security-critical transitive dependency overrides
without inheriting the parent's 1500+ internal managed dependencies.

Includes all published io.dapr and io.dapr.spring modules, plus
security overrides for netty-bom (CVE-2026-33870/33871),
jackson-bom, commons-compress, and commons-codec.

Closes dapr#1720

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* docs: add BOM usage instructions to README (dapr#1720)

Document dapr-sdk-bom as the recommended way to import the SDK,
with version-free dependency declarations for both Maven and Gradle.
Keep the manual version approach as an alternative.

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: update version script to handle standalone BOM (dapr#1720)

The BOM has no parent, so mvn versions:set skips it during the
reactor walk. Add explicit -f sdk-bom/pom.xml calls to update
both the artifact version and dapr.sdk.version property.

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: add deploy and signing config to standalone BOM (dapr#1720)

The BOM has no parent so it doesn't inherit distributionManagement,
nexus-staging-maven-plugin, or maven-gpg-plugin from the root POM.
Without these the publish step would fail to stage and sign the
artifact for Maven Central.

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: skip site generation for standalone BOM (dapr#1720)

The BOM has no parent, so it picks up maven-site-plugin 3.3 from
Maven's defaults instead of 3.12.1 from pluginManagement. Pin the
version and skip site since a POM-only BOM has no content to render.

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* refactor: split BOM into core and Spring BOMs (dapr#1720)

Per review feedback from @siri-varma, split the single BOM into two:

- io.dapr:dapr-sdk-bom — core SDK modules (dapr-sdk, dapr-sdk-actors,
  dapr-sdk-workflows, dapr-sdk-autogen, durabletask-client,
  testcontainers-dapr) plus security overrides
- io.dapr.spring:dapr-spring-bom — Spring-specific modules
  (dapr-sdk-springboot, dapr-spring-*). Imports dapr-sdk-bom so Spring
  users only need this single BOM.

This keeps the core BOM lightweight for non-Spring users, while letting
Spring users align naturally with their existing dependency management.

Also updates the version script and README to cover both BOMs.

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Javier Aliaga <javier@aliaga.dev>
Signed-off-by: Javier Aliaga <javier@diagrid.io>
* adding trace propagation to local observations

Signed-off-by: salaboy <Salaboy@gmail.com>
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* refactor(spring): extract Observation decorators into shared dapr-spring-boot-observation module

Eliminates the verbatim duplication between dapr-spring-boot-autoconfigure
(Spring Boot 3.x) and dapr-spring-boot-4-autoconfigure (Spring Boot 4.x):
both modules previously held 100%-identical copies of ObservationDaprClient
(~820 LOC) and ObservationDaprWorkflowClient (~400 LOC, including the W3C
traceparent/tracestate formatters, repeated 4 times overall).

Introduces a new Spring-agnostic module dapr-spring/dapr-spring-boot-observation
under package io.dapr.spring.observation.client holding a single canonical copy
of both decorators plus a package-private TraceContextFormat helper that
replaces the 4 duplicated formatter copies. The module has zero Spring imports
so it can be shared safely across Spring Boot 3.x and 4.x without API drift.

Autoconfigure modules now depend on dapr-spring-boot-observation (optional),
replacing their direct opentelemetry-api dependency. Consumers who skip
observation wiring still don't pull OTel onto the classpath.

OtelTracingClientInterceptor is now a private static final singleton on
ObservationDaprWorkflowClient instead of allocated per client — justified by
its existing javadoc which already stated it is stateless and shareable.

Tests for the decorators themselves moved to the new module (33 pass); the
Spring-wiring test DaprClientObservationAutoConfigurationTest stays in boot 3
with updated imports.

Net: -1104 lines.
Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix(spring): make dapr-spring-boot-observation non-optional in autoconfigure poms

The autoconfigure classes directly reference ObservationDaprClient and
ObservationDaprWorkflowClient in their bean factory methods. When the
observation module was marked <optional>, it was not propagated through
the starters, causing a potential NoClassDefFoundError at runtime for
users with a non-noop ObservationRegistry (e.g. actuator + tracing).

Removing <optional> restores the original behavior: the Observation
decorator classes are always on the classpath wherever the autoconfig
is loaded.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: salaboy <Salaboy@gmail.com>
Signed-off-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
Signed-off-by: Javier Aliaga <javier@diagrid.io>
Signed-off-by: Siri Varma Vegiraju <siri.varma@outlook.com>
* fix: detect shutdown and break DurableTaskGrpcWorker loop

The worker loop ran `while (true)` and only exited if an
InterruptedException happened during the 5-second retry sleep.
If `close()` was called while the gRPC stream was blocking, the
CANCELLED exception was logged but the loop kept retrying.

- Replace `while (true)` with a check on `isNormalShutdown` and
  the thread interrupt flag so the loop exits promptly.
- Break out of the retry path on CANCELLED when `isNormalShutdown`
  is set, avoiding a misleading 5-second sleep after `close()`.
- Re-set the interrupt flag before breaking on InterruptedException
  to preserve the interrupt contract for callers higher up.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: address PR review — skip retry sleep on shutdown, add tests

- Capture workerThread in startAndBlock() so close() can interrupt
  the thread even when startAndBlock() is called directly (not via
  start()), fixing the case where the 5s sleep blocks shutdown.
- Add isNormalShutdown guard before the retry sleep so any exception
  code (UNAVAILABLE, CANCELLED, etc.) exits promptly during shutdown.
- Add DurableTaskGrpcWorkerShutdownTest with 3 scenarios:
  - start() + close() terminates the worker thread promptly
  - startAndBlock() on a separate thread exits on close()
  - startAndBlock() exits on thread interrupt

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* fix: address second round of PR review comments

- Mark workerThread as volatile for cross-thread visibility
- Remove unused imports (ManagedChannel, ManagedChannelBuilder)
- Fail test explicitly when reflection fails instead of silently
  returning null
- Assert interrupt status is preserved in startAndBlockExitsOnInterrupt

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: Siri Varma Vegiraju <siri.varma@outlook.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
…tional timers (dapr#1733)

* feat(durabletask): implement timer origin and backwards-compatible optional timers

Annotate every CreateTimerAction the SDK emits with the new origin oneof
from durabletask-protobuf (CreateTimer / ExternalEvent / ActivityRetry /
ChildWorkflowRetry), and emit a synthetic "optional" timer for
waitForExternalEvent calls with a negative (indefinite) timeout.

- CreateTimer: TimerOriginCreateTimer on every user-facing timer.
- waitForExternalEvent: TimerOriginExternalEvent{name} on timeout timers;
  indefinite timeouts emit a single optional timer with fireAt = sentinel
  9999-12-31T23:59:59.999999999Z so the backend has a record of the wait.
- Activity retry delays: TimerOriginActivityRetry carrying a stable
  taskExecutionId shared with the ScheduleTaskAction.
- Child-workflow retry delays: TimerOriginChildWorkflowRetry carrying
  the first child's instanceId.

Add dropOptionalExternalEventTimerAt(atId) and wire it into
handleTaskScheduled, handleSubOrchestrationCreated, and handleTimerCreated
so pre-upgrade histories (which lack the synthetic timer emitted by
indefinite waitForExternalEvent calls) replay without non-determinism
errors. Mirrors the shape of durabletask-go's task/orchestrator.go.

Includes 13 unit tests covering origin assignment across all four call
sites and the optional-timer replay-compatibility machinery.

Fixes dapr#1729

Signed-off-by: Javier Aliaga <javier@diagrid.io>

* refactor(durabletask): address PR feedback — extract sentinel helper, drop unused taskExecutionId in tests

- Extract isSentinelFireAt(Timestamp) helper; use Timestamp.equals()
  instead of manual seconds/nanos comparison in both recognition
  predicates. Proto-generated equals() compares fields exactly, so
  nanosecond fidelity is preserved.
- Tests 10 and 13 exercise drop-and-shift replay-compat and do not
  verify taskExecutionId; pass null instead of hardcoded "exec-A" /
  "exec-B" filler values so the tests stay robust if the SDK ever adds
  stricter validation on that field.

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Javier Aliaga <javier@diagrid.io>
* Update github runners to oci gh arc runners

Signed-off-by: Koray Oksay <koray.oksay@gmail.com>

* correct the runner size

Signed-off-by: Koray Oksay <koray.oksay@gmail.com>

* Move to the VM instead of container runner

Signed-off-by: Koray Oksay <koray.oksay@gmail.com>

* chore: Increase timeout for Javadocs validation job to 60 minutes

Signed-off-by: Javier Aliaga <javier@diagrid.io>

---------

Signed-off-by: Koray Oksay <koray.oksay@gmail.com>
Signed-off-by: Javier Aliaga <javier@diagrid.io>
Co-authored-by: artur-ciocanu <artur.ciocanu@gmail.com>
Co-authored-by: salaboy <Salaboy@gmail.com>
Co-authored-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Co-authored-by: Javier Aliaga <javier@diagrid.io>
… to JUnit 5 (dapr#1736)

Upgrade Testcontainers to v2.0.5 which removes the transitive JUnit 4
dependency and modernizes the test infrastructure. This includes renaming
all module artifact IDs with the testcontainers- prefix, migrating
container class imports to their new packages, removing JUnit 4 runner
imports and TestRule apply() overrides from Network anonymous classes,
removing generic type parameters from PostgreSQLContainer, MySQLContainer
and CustomMySQLContainer (no longer generic in TC v2), converting
remaining JUnit 4 test annotations and assertions to JUnit 5, removing
junit-vintage-engine, and ensuring third-party TC dependencies
(testcontainers-redis 2.2.4, microcks-testcontainers 0.3.1) are
compatible via TC 1.x exclusions.

Signed-off-by: Artur Ciocanu <artur.ciocanu@gmail.com>
@siri-varma siri-varma force-pushed the fix/flaky-integration-tests branch from 2545e0b to 8e8fead Compare May 10, 2026 20:44
@siri-varma siri-varma closed this May 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants