GoogleCloudPlatform / GoogleCloudPlatform/cloud-opensource-java

Idea: checking the behavioral compatibility in the libraries in the LTS BOM

Offen
#1,974 12 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @suztomo Auf GitHub ansehen
enhancement p3
Vorherrschende Sprache
Java
Sterne
163
Forks
80
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

# Problem

We'd like to see the libraries in LTS BOM are compatible with each other. This is not just for Java class file signature but also for behavioral change.

# Idea: run the tests with LTS BOM

To capture behavioral change, we can leverage the tests in the repository of the each library in LTS BOM.

For example, if I want to check the compatibility of protobuf-java in LTS BOM and grpc-protobuf, then I can modify build.gradle to include `api enforcedPlatform('com.google.cloud:gcp-lts-bom:0.1.0-SNAPSHOT')` to see the compatibility.

I checkout grpc-java Git repository and insert the `enforcedPlatform` to one of build.gradle:

```
suztomo@suztomo:~/grpc-java$ git diff
diff --git a/protobuf/build.gradle b/protobuf/build.gradle
index af7f51c83..1c00e0a63 100644
--- a/protobuf/build.gradle
+++ b/protobuf/build.gradle
@@ -10,6 +10,8 @@ plugins {
description = 'gRPC: Protobuf'

dependencies {
+ api enforcedPlatform('com.google.cloud:gcp-lts-bom:0.1.0-SNAPSHOT')
+
api project(':grpc-api'),
libraries.jsr305,
libraries.protobuf
```

If the tests pass, then the LTS BOM is compatible with the grpc-protobuf.

```
suztomo@suztomo:~/grpc-java$ ./gradlew :grpc-protobuf:check
*** Skipping the build of codegen and compilation of proto files because skipCodegen=true
* Skipping the build of Android projects because skipAndroid=true

BUILD SUCCESSFUL in 3s
19 actionable tasks: 1 executed, 18 up-to-date
```

## Implementation Design

### Repositories

Checkout the following repositories with a release tag.

- Beam
- org.apache.beam:beam-sdks-java-core
- org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core
- org.apache.beam:beam-runners-google-cloud-dataflow-java
- org.apache.beam:beam-sdks-java-io-google-cloud-platform
- grpc-java
- java-spanner
- google-cloud-spanner

#### Checking out a specific revision

For example, to checkout java-spannner repository with a specific release tag, run the following command:

```
git clone -b v4.0.1 --depth=1 https://github.com/googleapis/java-spanner
```

### For Gradle project

For the target modules, insert the BOM after keyword "dependencies":

```
dependencies {
```

so that it would look like:

```
dependencies {
+ api enforcedPlatform('com.google.cloud:gcp-lts-bom:0.1.0-SNAPSHOT')
+
```

### For Maven project

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.