Skip to content

Add MigrateToKafkaNative recipe for Testcontainers (#568)#967

Merged
timtebeek merged 7 commits intomainfrom
tim/fix-568
Apr 11, 2026
Merged

Add MigrateToKafkaNative recipe for Testcontainers (#568)#967
timtebeek merged 7 commits intomainfrom
tim/fix-568

Conversation

@timtebeek
Copy link
Copy Markdown
Member

@timtebeek timtebeek commented Apr 11, 2026

Summary

  • Adds a MigrateToKafkaNative recipe that replaces confluentinc/cp-kafka with the faster apache/kafka-native image and migrates org.testcontainers.containers.KafkaContainer to org.testcontainers.kafka.KafkaContainer

  • Introduces a reusable ReplaceContainerImageName recipe that replaces Docker image names in DockerImageName.parse(...) constructor arguments

  • Wires MigrateToKafkaNative into TestContainersBestPractices

  • Closes Replace confluentinc/cp-kafka with apache/kafka-native #568

Test plan

  • MigrateToKafkaNativeTest — verifies type/import change and Docker image replacement
  • ReplaceContainerImageNameTest — verifies image replacement only within DockerImageName.parse(), ignores non-matching images and bare string literals
  • TestcontainersBestPracticesTest — verifies integration with the composite recipe

- Use @requiredargsconstructor with @Getter final fields for displayName/description
- Make MethodMatcher a static field
- Use UsesMethod precondition instead of UsesType
- Also handle new DockerImageName(String) constructor calls
Replace deprecated Docker image names with their current equivalents:
- yandex/clickhouse-server -> clickhouse/clickhouse-server
- shopify/toxiproxy -> ghcr.io/shopify/toxiproxy
- vault -> hashicorp/vault

When newImage has no tag, the original tag is preserved.
@timtebeek timtebeek merged commit 58bcc12 into main Apr 11, 2026
1 check passed
@timtebeek timtebeek deleted the tim/fix-568 branch April 11, 2026 21:32
@github-project-automation github-project-automation Bot moved this from In Progress to Done in OpenRewrite Apr 11, 2026
mergify Bot added a commit to robfrank/linklift that referenced this pull request May 3, 2026
…rom 3.30.0 to 3.35.2 [skip ci]

Bumps [org.openrewrite.recipe:rewrite-testing-frameworks](https://github.com/openrewrite/rewrite-testing-frameworks) from 3.30.0 to 3.35.2.
Release notes

*Sourced from [org.openrewrite.recipe:rewrite-testing-frameworks's releases](https://github.com/openrewrite/rewrite-testing-frameworks/releases).*

> 3.35.2
> ------
>
> What's Changed
> --------------
>
> * OpenRewrite v8.81.0: <openrewrite/rewrite@v8.81.0...main>
>
> **Full Changelog**: <openrewrite/rewrite-testing-frameworks@v3.35.1...v3.35.2>
>
> 3.35.1
> ------
>
> What's Changed
> --------------
>
> * Fix `UpdateMockWebServerDispatcher` classpath lookup by [`@​knutwannheden`](https://github.com/knutwannheden) in [openrewrite/rewrite-testing-frameworks#975](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/975)
>
> **Full Changelog**: <openrewrite/rewrite-testing-frameworks@v3.35.0...v3.35.1>
>
> 3.35.0
> ------
>
> What's Changed
> --------------
>
> * Skip FieldAccess arguments in AssertThrowsOnLastStatement by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#965](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/965)
> * Add MigrateToKafkaNative recipe for Testcontainers ([#568](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/568)) by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#967](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/967)
> * Fix ClassCastException in RemoveTimesZeroAndOne by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#969](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/969)
> * Fix RemoveTryCatchFailBlocks failing when removing blocks within lambda expressions by [`@​sambsnyd`](https://github.com/sambsnyd) in [openrewrite/rewrite-testing-frameworks#970](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/970)
> * Use KotlinTypeUtils.isKotlinUnit to match Kotlin void return types by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#971](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/971)
> * Fix MockWebServer Dispatcher return type and RecordedRequest renames by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#972](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/972)
> * Add [`@​MockitoSettings`](https://github.com/MockitoSettings)(strictness = Strictness.WARN) for Mockito migration by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#966](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/966)
>
> **Full Changelog**: <openrewrite/rewrite-testing-frameworks@v3.34.0...v3.35.0>
>
> 3.34.0
> ------
>
> What's Changed
> --------------
>
> * Remove empty if blocks after initMocks/openMocks cleanup by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#952](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/952)
> * Extend SimplifyMockitoVerifyWhenGiven for more S6068 cases by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#953](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/953)
> * Add RemoveDoNothingForDefaultMocks to Mockito1to3Migration by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#956](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/956)
> * Skip private method stubbing in PowerMockitoDoStubbingToMockito by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#957](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/957)
> * Fix AssertToAssertionsTest expectations for static imports by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#958](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/958)
> * Add ThenThrowCheckedExceptionToRuntimeException recipe by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#954](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/954)
> * Fix AnyToNullable removing any() import when untyped any() still used by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#960](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/960)
> * Rename implicit [`@​MethodSource`](https://github.com/MethodSource) methods in RemoveTestPrefix by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#961](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/961)
> * Add UpgradeWiremockDependencyVersion recipe by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#963](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/963)
> * Support intermediate methods in SimplifyChainedAssertJAssertion by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#962](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/962)
> * Add MigrateToOracleFree recipe for Testcontainers by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#964](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/964)
>
> **Full Changelog**: <openrewrite/rewrite-testing-frameworks@v3.33.0...v3.34.0>
>
> 3.33.0
> ------
>
> What's Changed
> --------------
>
> * OpenRewrite recipe best practices by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-testing-frameworks#949](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/949)
> * Add RemoveDoNothingForDefaultMocks recipe by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#947](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/947)
> * Add PowerMockitoDoStubbingToMockito recipe by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#948](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/948)
> * Remove [`@​SuppressStaticInitializationFor`](https://github.com/SuppressStaticInitializationFor) during PowerMockito migration by [`@​bmuschko`](https://github.com/bmuschko) in [openrewrite/rewrite-testing-frameworks#946](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/pull/946)

... (truncated)


Commits

* [`1302589`](openrewrite/rewrite-testing-frameworks@1302589) Make declarative recipes singletons
* [`92de89a`](openrewrite/rewrite-testing-frameworks@92de89a) Fix UpdateMockWebServerDispatcher classpath lookup ([#975](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/975))
* [`64260b8`](openrewrite/rewrite-testing-frameworks@64260b8) Extract documentation examples from tests
* [`e09430b`](openrewrite/rewrite-testing-frameworks@e09430b) Add [`@​MockitoSettings`](https://github.com/MockitoSettings)(strictness = Strictness.WARN) for Mockito migration ([#966](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/966))
* [`f041383`](openrewrite/rewrite-testing-frameworks@f041383) Fix MockWebServer Dispatcher return type and RecordedRequest renames ([#972](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/972))
* [`13f0a17`](openrewrite/rewrite-testing-frameworks@13f0a17) OpenRewrite recipe best practices
* [`83d1f44`](openrewrite/rewrite-testing-frameworks@83d1f44) Use KotlinTypeUtils.isKotlinUnit to match Kotlin void return types ([#971](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/971))
* [`675b57d`](openrewrite/rewrite-testing-frameworks@675b57d) Fix RemoveTryCatchFailBlocks failing when removing blocks within lambda expre...
* [`ea72478`](openrewrite/rewrite-testing-frameworks@ea72478) Fix ClassCastException in RemoveTimesZeroAndOne ([#969](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/969))
* [`58bcc12`](openrewrite/rewrite-testing-frameworks@58bcc12) Add MigrateToKafkaNative recipe for Testcontainers ([#568](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/568)) ([#967](https://redirect.github.com/openrewrite/rewrite-testing-frameworks/issues/967))
* Additional commits viewable in [compare view](openrewrite/rewrite-testing-frameworks@v3.30.0...v3.35.2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

Replace confluentinc/cp-kafka with apache/kafka-native

1 participant