mirror of
https://github.com/square/okhttp.git
synced 2025-08-08 23:42:08 +03:00
Add CI tests for Loom (#7613)
This commit is contained in:
27
.github/workflows/build.yml
vendored
27
.github/workflows/build.yml
vendored
@@ -413,6 +413,33 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
API_LEVEL: ${{ matrix.api-level }}
|
API_LEVEL: ${{ matrix.api-level }}
|
||||||
|
|
||||||
|
testloom:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'loom')
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Configure JDK
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: 'zulu'
|
||||||
|
java-version: 19
|
||||||
|
|
||||||
|
- name: Configure JDK
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: 'zulu'
|
||||||
|
java-version: 11
|
||||||
|
|
||||||
|
- name: Run Checks
|
||||||
|
uses: gradle/gradle-build-action@v2
|
||||||
|
with:
|
||||||
|
arguments: jvmTest -Dokhttp.platform=loom -Dtest.java.version=19
|
||||||
|
|
||||||
|
|
||||||
testandroidregression:
|
testandroidregression:
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
|
@@ -140,6 +140,13 @@ subprojects {
|
|||||||
"-XX:+HeapDumpOnOutOfMemoryError"
|
"-XX:+HeapDumpOnOutOfMemoryError"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (platform == "loom") {
|
||||||
|
jvmArgs = jvmArgs!! + listOf(
|
||||||
|
"-Djdk.tracePinnedThread=full",
|
||||||
|
"--enable-preview"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
val javaToolchains = project.extensions.getByType<JavaToolchainService>()
|
val javaToolchains = project.extensions.getByType<JavaToolchainService>()
|
||||||
javaLauncher.set(javaToolchains.launcherFor {
|
javaLauncher.set(javaToolchains.launcherFor {
|
||||||
languageVersion.set(JavaLanguageVersion.of(testJavaVersion))
|
languageVersion.set(JavaLanguageVersion.of(testJavaVersion))
|
||||||
|
@@ -214,6 +214,8 @@ open class PlatformRule @JvmOverloads constructor(
|
|||||||
|
|
||||||
fun isOpenJsse() = getPlatformSystemProperty() == OPENJSSE_PROPERTY
|
fun isOpenJsse() = getPlatformSystemProperty() == OPENJSSE_PROPERTY
|
||||||
|
|
||||||
|
fun isLoom() = getPlatformSystemProperty() == LOOM_PROPERTY
|
||||||
|
|
||||||
fun isGraalVMImage() = TestUtil.isGraalVmImage
|
fun isGraalVMImage() = TestUtil.isGraalVmImage
|
||||||
|
|
||||||
fun hasHttp2Support() = !isJdk8()
|
fun hasHttp2Support() = !isJdk8()
|
||||||
@@ -250,6 +252,10 @@ open class PlatformRule @JvmOverloads constructor(
|
|||||||
assumeTrue(getPlatformSystemProperty() == OPENJSSE_PROPERTY)
|
assumeTrue(getPlatformSystemProperty() == OPENJSSE_PROPERTY)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun assumeLoom() {
|
||||||
|
assumeTrue(getPlatformSystemProperty() == LOOM_PROPERTY)
|
||||||
|
}
|
||||||
|
|
||||||
fun assumeHttp2Support() {
|
fun assumeHttp2Support() {
|
||||||
assumeTrue(getPlatformSystemProperty() != JDK8_PROPERTY)
|
assumeTrue(getPlatformSystemProperty() != JDK8_PROPERTY)
|
||||||
}
|
}
|
||||||
@@ -282,6 +288,10 @@ open class PlatformRule @JvmOverloads constructor(
|
|||||||
assumeTrue(getPlatformSystemProperty() != OPENJSSE_PROPERTY)
|
assumeTrue(getPlatformSystemProperty() != OPENJSSE_PROPERTY)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun assumeNotLoom() {
|
||||||
|
assumeTrue(getPlatformSystemProperty() != LOOM_PROPERTY)
|
||||||
|
}
|
||||||
|
|
||||||
fun assumeNotCorretto() {
|
fun assumeNotCorretto() {
|
||||||
assumeTrue(getPlatformSystemProperty() != CORRETTO_PROPERTY)
|
assumeTrue(getPlatformSystemProperty() != CORRETTO_PROPERTY)
|
||||||
}
|
}
|
||||||
@@ -346,6 +356,7 @@ open class PlatformRule @JvmOverloads constructor(
|
|||||||
const val JDK8_PROPERTY = "jdk8"
|
const val JDK8_PROPERTY = "jdk8"
|
||||||
const val OPENJSSE_PROPERTY = "openjsse"
|
const val OPENJSSE_PROPERTY = "openjsse"
|
||||||
const val BOUNCYCASTLE_PROPERTY = "bouncycastle"
|
const val BOUNCYCASTLE_PROPERTY = "bouncycastle"
|
||||||
|
const val LOOM_PROPERTY = "loom"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For whatever reason our BouncyCastle provider doesn't work with ECDSA keys. Just configure it
|
* For whatever reason our BouncyCastle provider doesn't work with ECDSA keys. Just configure it
|
||||||
|
72
okhttp/src/jvmTest/java/okhttp3/LoomTest.kt
Normal file
72
okhttp/src/jvmTest/java/okhttp3/LoomTest.kt
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 Square, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package okhttp3
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService
|
||||||
|
import java.util.concurrent.Executors
|
||||||
|
import mockwebserver3.MockResponse
|
||||||
|
import mockwebserver3.MockWebServer
|
||||||
|
import okhttp3.testing.PlatformRule
|
||||||
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.junit.jupiter.api.extension.RegisterExtension
|
||||||
|
|
||||||
|
class LoomTest {
|
||||||
|
@JvmField
|
||||||
|
@RegisterExtension
|
||||||
|
val platform = PlatformRule()
|
||||||
|
@JvmField
|
||||||
|
@RegisterExtension
|
||||||
|
val clientTestRule = OkHttpClientTestRule()
|
||||||
|
|
||||||
|
private lateinit var server: MockWebServer
|
||||||
|
|
||||||
|
private lateinit var client: OkHttpClient
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
fun setUp(
|
||||||
|
server: MockWebServer,
|
||||||
|
) {
|
||||||
|
platform.assumeLoom()
|
||||||
|
|
||||||
|
this.server = server
|
||||||
|
|
||||||
|
client = clientTestRule.newClientBuilder()
|
||||||
|
.dispatcher(Dispatcher(newVirtualThreadPerTaskExecutor()))
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun newVirtualThreadPerTaskExecutor(): ExecutorService {
|
||||||
|
return Executors::class.java.getMethod("newVirtualThreadPerTaskExecutor").invoke(null) as ExecutorService
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testRequest() {
|
||||||
|
server.enqueue(MockResponse())
|
||||||
|
|
||||||
|
val request = Request(server.url("/"))
|
||||||
|
|
||||||
|
client.newCall(request).execute().use {
|
||||||
|
assertThat(it.code).isEqualTo(200)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testIfSupported() {
|
||||||
|
assertThat(platform.isLoom()).isTrue()
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user