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:
|
||||
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:
|
||||
runs-on: macos-latest
|
||||
|
@@ -140,6 +140,13 @@ subprojects {
|
||||
"-XX:+HeapDumpOnOutOfMemoryError"
|
||||
)
|
||||
|
||||
if (platform == "loom") {
|
||||
jvmArgs = jvmArgs!! + listOf(
|
||||
"-Djdk.tracePinnedThread=full",
|
||||
"--enable-preview"
|
||||
)
|
||||
}
|
||||
|
||||
val javaToolchains = project.extensions.getByType<JavaToolchainService>()
|
||||
javaLauncher.set(javaToolchains.launcherFor {
|
||||
languageVersion.set(JavaLanguageVersion.of(testJavaVersion))
|
||||
|
@@ -214,6 +214,8 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
|
||||
fun isOpenJsse() = getPlatformSystemProperty() == OPENJSSE_PROPERTY
|
||||
|
||||
fun isLoom() = getPlatformSystemProperty() == LOOM_PROPERTY
|
||||
|
||||
fun isGraalVMImage() = TestUtil.isGraalVmImage
|
||||
|
||||
fun hasHttp2Support() = !isJdk8()
|
||||
@@ -250,6 +252,10 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
assumeTrue(getPlatformSystemProperty() == OPENJSSE_PROPERTY)
|
||||
}
|
||||
|
||||
fun assumeLoom() {
|
||||
assumeTrue(getPlatformSystemProperty() == LOOM_PROPERTY)
|
||||
}
|
||||
|
||||
fun assumeHttp2Support() {
|
||||
assumeTrue(getPlatformSystemProperty() != JDK8_PROPERTY)
|
||||
}
|
||||
@@ -282,6 +288,10 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
assumeTrue(getPlatformSystemProperty() != OPENJSSE_PROPERTY)
|
||||
}
|
||||
|
||||
fun assumeNotLoom() {
|
||||
assumeTrue(getPlatformSystemProperty() != LOOM_PROPERTY)
|
||||
}
|
||||
|
||||
fun assumeNotCorretto() {
|
||||
assumeTrue(getPlatformSystemProperty() != CORRETTO_PROPERTY)
|
||||
}
|
||||
@@ -346,6 +356,7 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
const val JDK8_PROPERTY = "jdk8"
|
||||
const val OPENJSSE_PROPERTY = "openjsse"
|
||||
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
|
||||
|
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