datastax / cassandra-quarkus

An Apache Cassandra(R) extension for Quarkus
Apache License 2.0
40 stars 28 forks source link

[JAVA-2776] Integration test failure for quarkus-ecosystem-ci, Quarkus master commit 72a6ff10cfe7b6fe7f8a6a68e0979f39f1b8288a #28

Closed adutra closed 4 years ago

adutra commented 4 years ago

Imported from [JAVA-2776](https://datastax-oss.atlassian.net/browse/JAVA-2776), originally reported by absurdfarce on Thu, 14 May 2020 22:22:36 GMT.


Noted on a local branch against master (commit 72a6ff10cfe7b6fe7f8a6a68e0979f39f1b8288a) with [ JAVA-2775 ](https://datastax-oss.atlassian.net/browse/JAVA-2775) Resolved already applied. The unit tests pass in this case but now we get the following IT failure:

2020-05-14 16:44:50,778 INFO [io.quarkus] (main) Quarkus 999-SNAPSHOT started in 30.517s. Listening on: [http://0.0.0.0:8081](http://0.0.0.0:8081/)
2020-05-14 16:44:50,779 INFO [io.quarkus] (main) Profile test activated.
2020-05-14 16:44:50,779 INFO [io.quarkus] (main) Installed features: [cassandra-client, cdi, resteasy, smallrye-health]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 35.1 s <<< FAILURE! - in com.datastax.oss.quarkus.CassandraHealthCheckIT
[ERROR] com.datastax.oss.quarkus.CassandraHealthCheckIT.healthCheckShouldReportStatusUp Time elapsed: 0.643 s <<< ERROR!
java.lang.AbstractMethodError: io.restassured.internal.ResponseParserRegistrar.getProperty(Ljava/lang/String:wink:Ljava/lang/Object;
at com.datastax.oss.quarkus.CassandraHealthCheckIT.healthCheckShouldReportStatusUp(CassandraHealthCheckIT.java:36)

[INFO] Running com.datastax.oss.quarkus.ProductResourceIT
[ERROR] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.02 s <<< FAILURE! - in com.datastax.oss.quarkus.ProductResourceIT
[ERROR] com.datastax.oss.quarkus.ProductResourceIT.testSaveAndRetrieveProduct Time elapsed: 0.002 s <<< ERROR!
java.lang.AbstractMethodError: io.restassured.internal.ResponseParserRegistrar.getProperty(Ljava/lang/String:wink:Ljava/lang/Object;
at com.datastax.oss.quarkus.ProductResourceIT.testSaveAndRetrieveProduct(ProductResourceIT.java:33)

[ERROR] com.datastax.oss.quarkus.ProductResourceIT.shouldSaveAndRetrieveUsingCustomNameConverterThatUsesReflection Time elapsed: 0.003 s <<< ERROR!
java.lang.AbstractMethodError: io.restassured.internal.ResponseParserRegistrar.getProperty(Ljava/lang/String:wink:Ljava/lang/Object;
at com.datastax.oss.quarkus.ProductResourceIT.shouldSaveAndRetrieveUsingCustomNameConverterThatUsesReflection(ProductResourceIT.java:62)

2020-05-14 16:44:51,558 INFO [io.quarkus] (main) Quarkus stopped in 0.050s
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR] CassandraHealthCheckIT.healthCheckShouldReportStatusUp:36 » AbstractMethod io....
[ERROR] ProductResourceIT.shouldSaveAndRetrieveUsingCustomNameConverterThatUsesReflection:62 » AbstractMethod
[ERROR] ProductResourceIT.testSaveAndRetrieveProduct:33 » AbstractMethod io.restassure...
[INFO]
[ERROR] Tests run: 3, Failures: 0, Errors: 3, Skipped: 0

Looks to be a break in the linkage between REST-assured code and the Quarkus test framework

┆Issue is synchronized with this Jira Task by Unito

adutra commented 4 years ago

Imported from JAVA-2776, originally commented by @absurdfarce on Sat, 16 May 2020 04:22:50 GMT.


This was kind of a strange one.

Underlying error comes from here which represents an attempt to copy props from one Groovy object to another. The argument is of the same type as the class itself (they’re both ResponseParserRegistrar) yet the attempt to get the property from the arg fails because the arg doesn’t support the standard Groovy contract for getting and setting props. That’s quite odd since the class… is actually written in Groovy.

Quarkus master does upgrade rest-assured from 4.2.0 (the version in 1.3.0) to 4.3.0, and that upgrade includes a major upgrade to Groovy 3 (see the rest-assured changelog for more on that). My best guess about the underlying cause here is that we’re mingling underlying versions, either rest-assured 4.2.0 with the new Groovy version or the inverse. If that’s the case the fixing the rest-assured version for integration tests at 4.2.0 (in effect removing uses of 4.3.0 for now) should solve the problem… and in my testing it appears to do just that.