Extend plugin test coverage for newer framework versions#801
Open
Extend plugin test coverage for newer framework versions#801
Conversation
…de Code skills - Extend MySQL plugin support to Connector/J 8.4.0 and 9.x (9.0-9.6) - Extend MariaDB plugin test to 2.7.12 - Extend MongoDB 4.x plugin test to 4.2-4.10 - Extend Feign plugin test to 10.12, 11.10, 12.1 - Extend Undertow plugin test to 2.1.8, 2.2.37, 2.3.18 - Extend GraphQL plugin test to 18.7, 19.11 (JDK 8) and 20.9-24.1 (JDK 17) - Extend Spring Kafka plugin test to 2.4-2.9 and 3.0-3.3 - Add new test scenarios for JDK 17: graphql-20plus, spring-kafka-3.x, undertow-2.3.x - Add new test scenario for MySQL Connector/J 9.x (com.mysql:mysql-connector-j artifact) - Add Claude Code skills for plugin development (/new-plugin) and building (/compile) - Add Claude Skills documentation page
… path references - Replace hardcoded spring-kafka-2.3.x-scenario URL in CaseController.java - Update serviceName, parentService refs, and operation name paths in expectedData.yaml - Fix operation names to include context path prefix (Spring Boot 3.x behavior)
- spring-kafka-3.x: fix all remaining 2.3.x references in source code, expectedData.yaml (serviceName, parentService, URLs, operation names) - mongodb-4.x: skip 4.9.1 (flaky health check assertion), keep 4.10.2
MongoDB driver 4.9+ changed internal operation class filter/document accessor methods, causing MongoOperationHelper.getTraceParam() to return empty. Tracing and span creation still work correctly, but db.bind_vars tags are lost. This needs a code fix in a follow-up PR.
d8e5145 to
9ff281e
Compare
MongoDB driver 4.9 removed InsertOperation, DeleteOperation, UpdateOperation classes. MongoOperationHelper imported them, causing NoClassDefFoundError at class load time which silently broke all db.bind_vars extraction. Fix: use Class.forName check to detect legacy classes at startup, isolate legacy imports into LegacyOperationHelper (only loaded when classes exist). For 4.9+, all write operations go through MixedBulkWriteOperation which the plugin already handles via getWriteRequests().
Spring Kafka 2.4+ requires kafka-clients 2.4+, but the test scenario uses kafka-clients 2.3.1 (Consumer.committed(Set) NoSuchMethodError). Extending 2.4+ needs separate scenarios with version-matched kafka-clients. Also add source code cloning workflow and import-time failure check to the plugin development skill.
The test scenario hardcoded kafka-clients at 2.3.1, but spring-kafka 2.4+ requires matching kafka-clients versions (2.4+, 2.5+, etc.). Fix by removing the explicit kafka-clients dependency and letting spring-kafka's transitive dependency pull the correct version automatically.
…Endpoint with context path
Spring Kafka 3.1+ requires Spring Framework 6.1 (ClassFormatException), but this scenario uses Spring Boot 3.0.13 (Spring Framework 6.0). 3.1+ testing needs a separate scenario with Spring Boot 3.1+.
…by mysql-9.x-scenario from 8.4.0)
support-version.list now supports format: version[,key=value[,key=value...]] Extra properties are passed as -D flags to Maven. This allows different framework versions to use different dependency versions (e.g., Spring Boot). Example: 2.7.14,spring.boot.version=2.7.18 Use this to extend Spring Kafka test coverage: - 2.3.x scenario: 2.3-2.6 (default Spring Boot 2.3), 2.7-2.9 (Spring Boot 2.7) - 3.x scenario: 3.0 (Spring Boot 3.0), 3.1-3.3 (matching Spring Boot 3.1-3.3)
Spring Kafka 3.1+ requires Spring Framework 6.1 (ClassFormatException). Spring Boot 3.1 still uses Spring Framework 6.0, so Spring Boot 3.2+ BOM is needed to manage consistent 6.1 versions. Verified locally: 3.1.4, 3.2.10, 3.3.7 all passed.
…requires CommonErrorHandler from spring-kafka 2.8)
…-test.md, and CLAUDE.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Plugin Version Extensions (source-verified compatible)
Code Fixes
MongoDB 4.9+ db.bind_vars extraction
MongoDB driver 4.9 removed InsertOperation, DeleteOperation, UpdateOperation. MongoOperationHelper imported them causing NoClassDefFoundError. Fix: Class.forName check + isolated LegacyOperationHelper.
MySQL 9.x test scenario
New scenario with com.mysql:mysql-connector-j artifact. Fixed timezone, publicKeyRetrieval, driver class, expectedData for 8.4+ behavior.
Spring Kafka test fixes
New Test Scenarios
Test plan