Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: adding Java 7 check #2306

Draft
wants to merge 6 commits into
base: main
Choose a base branch
from
Draft

test: adding Java 7 check #2306

wants to merge 6 commits into from

Conversation

suztomo
Copy link
Member

@suztomo suztomo commented May 15, 2023

Using the same method as googleapis/google-http-java-client#1847
to use surefire's jvm system property

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Make sure to open an issue as a bug/issue before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> ☕️

If you write sample code, please follow the samples format.

@suztomo suztomo requested a review from a team as a code owner May 15, 2023 17:49
@generated-files-bot
Copy link

Warning: This pull request is touching the following templated files:

  • .github/sync-repo-settings.yaml

@product-auto-label product-auto-label bot added the size: m Pull request size is medium. label May 15, 2023
Using the same method as googleapis/google-http-java-client#1847
to use surefire's jvm system property
pom.xml Outdated
@@ -510,6 +510,8 @@
<project.datanucleus-api-jdo.version>3.2.1</project.datanucleus-api-jdo.version>
<project.datanucleus-maven-plugin.version>4.0.3</project.datanucleus-maven-plugin.version>
<project.servlet-api.version>2.5</project.servlet-api.version>
<!-- Declaring surefire version as property lets us ot specify its version as Maven's argument -->
<project.surefire.version>3.0.0-M7</project.surefire.version>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a downgrade for 3.1.0.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

@@ -8,6 +8,7 @@ branchProtectionRules:
requiresCodeOwnerReviews: true
requiresStrictStatusChecks: false
requiredStatusCheckContexts:
- units (7)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is copied by owlbot?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's right. I'll need manually set the required check via Settings of this repository once it's merged.

@suztomo
Copy link
Member Author

suztomo commented May 15, 2023

Marking this as draft while I troubleshoot the build failure.

@suztomo suztomo marked this pull request as draft May 15, 2023 19:29
@suztomo
Copy link
Member Author

suztomo commented May 15, 2023

The Guava's 31.1-android is already compiled for Java 8 (major version: 52).

suztomo@suztomo2:~/google-api-java-client$ javap -v -cp  ~/.m2/repository/com/google/guava/guava/31.1-android/guava-31.1-android.jar com/google/common/base/Preconditions |head
Classfile jar:file:///usr/local/google/home/suztomo/.m2/repository/com/google/guava/guava/31.1-android/guava-31.1-android.jar!/com/google/common/base/Preconditions.class
  Last modified Feb 28, 2022; size 19671 bytes
  MD5 checksum 1e51d9f91b10442e19210db0277aa322
  Compiled from "Preconditions.java"
public final class com.google.common.base.Preconditions
  minor version: 0
  major version: 52
  flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: #37                         // com/google/common/base/Preconditions
  super_class: #7                         // java/lang/Object

The google-http-java-client uses 30.1.1-android https://github.com/googleapis/google-http-java-client/blob/6b195272749e2ea1466fa83d7d021dbf71b5d8a6/pom.xml#L578

@suztomo
Copy link
Member Author

suztomo commented May 15, 2023

Current status:

Error:  testProtoExecuteWithoutLength(com.google.api.client.googleapis.batch.BatchRequestTest)  Time elapsed: 0.005 s  <<< ERROR!
java.lang.UnsupportedClassVersionError: com/google/protobuf/MessageOrBuilder : Unsupported major.minor version 52.0
	at com.google.api.client.googleapis.batch.BatchRequestTest.getBatchPopulatedWithRequests(BatchRequestTest.java:532)
	at com.google.api.client.googleapis.batch.BatchRequestTest.testProtoExecuteWithoutLength(BatchRequestTest.java:863)

Error:  testProtoExecute(com.google.api.client.googleapis.batch.BatchRequestTest)  Time elapsed: 0.001 s  <<< ERROR!
java.lang.UnsupportedClassVersionError: com/google/api/client/googleapis/batch/MockData$Class1
	at com.google.api.client.googleapis.batch.BatchRequestTest.getBatchPopulatedWithRequests(BatchRequestTest.java:532)
	at com.google.api.client.googleapis.batch.BatchRequestTest.testProtoExecute(BatchRequestTest.java:837)

Error:  testProtoExecuteWithError(com.google.api.client.googleapis.batch.BatchRequestTest)  Time elapsed: 0 s  <<< ERROR!
java.lang.UnsupportedClassVersionError: com/google/api/client/googleapis/batch/MockData$Class1
	at com.google.api.client.googleapis.batch.BatchRequestTest.getBatchPopulatedWithRequests(BatchRequestTest.java:532)
	at com.google.api.client.googleapis.batch.BatchRequestTest.testProtoExecuteWithError(BatchRequestTest.java:849)

The Mockdata is generated class via protobuf-maven-plugin.

image

Probably because it's using Java 17?

@suztomo
Copy link
Member Author

suztomo commented May 17, 2023

It's the same error with Java 8.

How to reproduce?

suztomo@suztomo2:~/google-api-java-client$ sdk use java 7.0.352-zulu
...
suztomo@suztomo2:~/google-api-java-client$ which java
/usr/local/google/home/suztomo/.sdkman/candidates/java/7.0.352-zulu/bin/java
suztomo@suztomo2:~/google-api-java-client$ sdk use java 8.0.302-open
...
$ mvn test -am -pl google-api-client -Dproject.surefire.version=2.22.2  -Djvm=/usr/local/google/home/suztomo/.sdkman/candidates/java/7.0.352-zulu/bin/java

The class file says it's for Java 7.

suztomo@suztomo2:~/google-api-java-client$ javap -v -cp ./google-api-client/target/test-classes/ 'com/google/api/client/googleapis/batch/MockData$Class1' |head
Classfile /usr/local/google/home/suztomo/google-api-java-client/google-api-client/target/test-classes/com/google/api/client/googleapis/batch/MockData$Class1.class
  Last modified May 17, 2023; size 12851 bytes
  MD5 checksum ffec7d01fade4e64f0ebe5fc4bb37fb9
  Compiled from "MockData.java"
public final class com.google.api.client.googleapis.batch.MockData$Class1 extends com.google.protobuf.GeneratedMessageV3 implements com.google.api.client.googleapis.batch.MockData$Class1OrBuilder
  minor version: 0
  major version: 51
  flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER
Constant pool:
    #1 = Fieldref           #9.#221       // com/google/api/client/googleapis/batch/MockData$Class1.bitField0_:I

It's not that MockData$Class1.class is incompatible but it's about the class is referencing the Java7-incompatible com.google.protobuf.MessageOrBuilder.

$ mvn test -am -pl google-api-client -Dproject.surefire.version=2.22.2  -Djvm=/usr/local/google/home/suztomo/.sdkman/candidates/java/7.0.352-zulu/bin/java  -Dtest='com.google.api.client.googleapis.batch.BatchRequestTest#testProtoExecuteWithError' -DfailIfNoTests=false
...
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.122 s <<< FAILURE! - in com.google.api.client.googleapis.batch.BatchRequestTest
[ERROR] testProtoExecuteWithError(com.google.api.client.googleapis.batch.BatchRequestTest)  Time elapsed: 0.089 s  <<< ERROR!
java.lang.UnsupportedClassVersionError: com/google/protobuf/MessageOrBuilder : Unsupported major.minor version 52.0
	at com.google.api.client.googleapis.batch.BatchRequestTest.getBatchPopulatedWithRequests(BatchRequestTest.java:532)
	at com.google.api.client.googleapis.batch.BatchRequestTest.testProtoExecuteWithError(BatchRequestTest.java:849)

@suztomo
Copy link
Member Author

suztomo commented May 17, 2023

New error:

Error:  Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project google-api-client: There are test failures.
Error:  
Error:  Please refer to /home/runner/work/google-api-java-client/google-api-java-client/google-api-client/target/surefire-reports for the individual test results.
Error:  Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
Error: [ERROR] There was an error in the forked process
Error:  com/google/protobuf/MessageOrBuilder : Unsupported major.minor version 52.0
Error:  org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
Error:  com/google/protobuf/MessageOrBuilder : Unsupported major.minor version 52.0
Error:  	at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:656)
Error:  	at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
Error:  	at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
Error:  	at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
Error:  	at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
Error:  	at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
Error:  	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
Error:  	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:370)
Error:  	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:351)
Error:  	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:215)
Error:  	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:171)
Error:  	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:163)
Error:  	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
Error:  	at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call(MultiThreadedBuilder.java:[210](https://github.com/googleapis/google-api-java-client/actions/runs/5007126712/jobs/8973309253?pr=2306#step:8:211))
Error:  	at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call(MultiThreadedBuilder.java:195)
Error:  	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Error:  	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
Error:  	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Error:  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
Error:  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
Error:  	at java.lang.Thread.run(Thread.java:750)
Error:  -> [Help 2]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size: m Pull request size is medium.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants