1
0
mirror of https://github.com/square/okhttp.git synced 2025-11-23 06:42:24 +03:00
Commit Graph

148 Commits

Author SHA1 Message Date
Yuri Schimke
1808173038 Support Android in Connection Spec Tests (#6435) 2020-11-25 08:46:00 +00:00
Yuri Schimke
a334f6f14f Fix single failing graal test (#6445) 2020-11-22 12:12:58 -05:00
Jesse Wilson
2f361c245f Don't assert about suppressed exceptions in GraalVM (#6441) 2020-11-22 00:35:23 -05:00
Yuri Schimke
ec1d18d143 Quick Android Test Fixes (#6428) 2020-11-21 09:50:01 +00:00
Yuri Schimke
4036fa55b7 Update remaining junit4 tests (#6421) 2020-11-14 12:21:04 -05:00
Yuri Schimke
daac9be139 Fix Android tests post junit 5 (#6408) 2020-11-14 07:12:48 +00:00
Yuri Schimke
b1ee602958 Fix for native image and assumptions (#6414) 2020-11-12 22:09:53 -05:00
Yuri Schimke
998633be00 Assert on effective cipher suite order (#6410) 2020-11-11 07:01:59 +00:00
Yuri Schimke
81b1b14a56 Use clean assumptions APIs (#6405) 2020-11-08 15:14:50 +00:00
Yuri Schimke
0d5a9cecb3 Workaround native image params issue (#6401) 2020-11-08 07:30:54 +00:00
Yuri Schimke
4677beea96 Add more n-i-t tests from okhttp (#6387) 2020-11-03 19:56:29 +00:00
Jesse Wilson
59ae0c138d Convert more tests to JUnit 5 (#6366) 2020-11-01 05:46:35 +00:00
Jesse Wilson
963c768643 Migrate all OkHttpClientTestRule uses to JUnit 5 (#6365) 2020-10-31 18:51:34 -04:00
Jesse Wilson
f8065acac2 Execute CallTest with JUnit 5 (#6349)
* Execute CallTest with JUnit 5
* Avoid Optional.isEmpty which is JDK11+
2020-10-30 06:59:02 +00:00
Yuri Schimke
ec221f36af Cache Corruption Test (#6287)
Working test but a base for cache expectations with corruptions and deliberate failure cases.
2020-10-02 08:24:24 +01:00
Yuri Schimke
a76c40a935 Kotlin 1.4 dependency upgrade and language features (#5947) 2020-09-06 16:36:12 +01:00
Yuri Schimke
15b7d47185 JSSE Debug in tests (#6041) 2020-05-17 18:10:09 +01:00
Yuri Schimke
198900de0b Fix isAndroid check (#6055)
Fix for OkHttp platform issues in AndroidStudio (e.g. when running as a plugin)

square/retrofit#3389
2020-05-16 09:09:46 +01:00
Yuri Schimke
fea8fbba5f Attempt to minimise WebSocket test flakiness (#6045) 2020-05-13 07:46:19 +01:00
Yuri Schimke
4bd93ad176 Rethrow original failure in OkHttpClientTestRule (#6037) 2020-05-09 17:12:34 +01:00
Yuri Schimke
8cebf9012b Cache Events (#6015)
Provide EventListener methods to understand the impact of caching.
2020-05-05 18:25:06 +01:00
Yuri Schimke
af1eadfebf Record Http2 Frames and TaskRunner optionally for Flaky tests (#6011) 2020-05-03 20:21:12 +01:00
Jesse Wilson
3ca806c24b Don't crash processing fragmented web sockets messages (#5983)
* Don't crash processing fragmented web sockets messages

Closes: https://github.com/square/okhttp/issues/5965

* Update okhttp-testing-support/src/main/kotlin/okhttp3/TestUtil.kt

Co-Authored-By: Jake Wharton <jakew@google.com>

* Update okhttp-testing-support/src/main/kotlin/okhttp3/TestUtil.kt

Co-Authored-By: Jake Wharton <jakew@google.com>

* Update okhttp-testing-support/src/main/kotlin/okhttp3/TestUtil.kt

Co-Authored-By: Jake Wharton <jakew@google.com>

Co-authored-by: Jake Wharton <jakew@google.com>
2020-04-23 23:31:36 -04:00
Jesse Wilson
64d3b079f2 Fix DiskLruCache to work on Windows
As originally designed DiskLruCache assumes an inode-like
file system, where it's fine to delete files that are
currently being read or written.

On Windows the file system forbids this, so we must be
more careful when deleting and renaming files. These
operations come up a lot internally in the cache:
 - deleting to evict an entry
 - renaming to commit a dirty file to a clean file

The workaround is simple if unsatisfying: we don't
permit concurrent reads and writes on Windows. We
can have multiple concurrent reders, or a single
writer.

One challenge in this implementation is detecting
whether we're running on Windows or a good operating
system. We deliberately don't look at System properties
here because the OS and file system may disagree, such
as when a Windows machine has an ext4 partition, or when
a Linux machine has an NTFS partition. Instead of detecting
we just attempt an edit and see what happens.

Another challenge in this implementation is what to
do when a file needs to be deleted but cannot be because
it is currently open. In such cases we now mark the
cache entry as a 'zombie'. When the files are later
closed they now check for zombie status and delete the
files if necessary. Note that it is not possible to
store a new cache entry while it is a zombie.

Closes: https://github.com/square/okhttp/issues/5761
2020-04-11 20:16:40 -04:00
Yuri Schimke
86b7ba5f2a Enable BouncyCastle on Android and add some testing (#5936) 2020-04-11 17:35:27 +01:00
Yuri Schimke
19771365f2 Rename to src/main/kotlin (#5938)
Follows the default path logic for kotlin classes.
2020-04-11 17:15:25 +01:00
Jesse Wilson
ac53284db4 Emulate Windows file system restrictions in a wrapper
This should make it possible to get DiskLruCacheTest passing on
Windows even when Windows isn't available.
2020-04-11 11:12:56 -04:00
Yuri Schimke
b3b788a942 Upgrade to Android 10 APIs when available (#5821)
* Upgrade robolectric dependency

* cleanup

* Suppress animal sniffer checks on known classes

* Update build.gradle

* Update build.gradle
2020-04-10 10:42:29 -04:00
Yuri Schimke
b48d30aa5c Move okhttp-testing-support to Kotlin (#5906)
Moving the last big block of src/main Java code (outside of Samples).
2020-04-09 07:23:43 +01:00
Yuri Schimke
e8cfef759f Force cancel all events on client (#5901) 2020-03-26 06:45:34 +00:00
Jesse Wilson
08e23fcd02 Add a canceled event to EventListener 2020-02-16 18:20:49 -05:00
Liam Newman
78016071b3 Add a windows executor to the build (#5769)
* Add a windows executor to the build

* Disable failing tests on windows

* Workaround find limitations
2020-02-05 21:09:37 -05:00
Yuri Schimke
c6ef70148b Bouncy Castle Provider working with HTTP/2 on JDK 8 (#5751) 2020-01-29 00:19:32 -06:00
Yuri Schimke
005c39b592 Fixes for bouncycastle tests 2020-01-20 22:47:13 +00:00
Yuri Schimke
bcfa004b6a Reduce platform logging for each test (#5723) 2020-01-12 23:44:34 +00:00
Jesse Wilson
c1d50e371f Upgrade Okio and some build dependencies
The new ktlint sorts imports which makes this diff large.

The new japicmp ignores 'final' modifier changes in final classes.

We adopt the Google style for checkstyle.xml.

Okio readByteString() now uses segments more aggressively, so we
need to mitigate that to avoid tracking those segments in a test.
2020-01-11 22:24:12 -05:00
Yuri Schimke
604e2705e7 Add bouncy castle platform for tests (#5695)
* Add basic bouncy castle test

* Remove other tests

* Activate platform for TLS tests
2020-01-11 10:29:17 -05:00
Yuri Schimke
3e61ce3cf0 Test Android with Play provider (#5679) 2020-01-02 07:04:58 +00:00
Jesse Wilson
a815093721 Document debug logging.
Also refine the formatting of TaskRunner logging.

Before:

    [2019-12-30 16:43:19] Q1 starting: OkHttp ConnectionPool
    [2019-12-30 16:43:19] Q1 scheduled after 300 s: OkHttp ConnectionPool
    [2019-12-30 16:43:19] Q1 finished in 94 µs: OkHttp ConnectionPool
    [2019-12-30 16:43:19] Q359 scheduled after 0 µs: OkHttp www.youtube.com applyAndAckSettings
    [2019-12-30 16:43:19] Q359 starting: OkHttp www.youtube.com applyAndAckSettings
    [2019-12-30 16:43:19] Q361 schedule canceled (queue is shutdown): OkHttp www.youtube.com onSettings
    [2019-12-30 16:43:19] Q359 finished in 382 µs: OkHttp www.youtube.com applyAndAckSettings
    [2019-12-30 16:43:20] Q1 scheduled after 0 µs: OkHttp ConnectionPool
    [2019-12-30 16:43:20] Q365 scheduled after 0 µs: OkHttp android-developers.googleblog.com applyAndAckSettings
    [2019-12-30 16:43:20] Q1 starting: OkHttp ConnectionPool
    [2019-12-30 16:43:20] Q365 starting: OkHttp android-developers.googleblog.com applyAndAckSettings
    [2019-12-30 16:43:20] Q1 scheduled after 300 s: OkHttp ConnectionPool
    [2019-12-30 16:43:20] Q1 finished in 151 µs: OkHttp ConnectionPool

After:

    [2019-12-30 16:43:19] Q10001 starting              : OkHttp ConnectionPool
    [2019-12-30 16:43:19] Q10001 run again after 300 s : OkHttp ConnectionPool
    [2019-12-30 16:43:19] Q10001 finished run in  94 µs: OkHttp ConnectionPool
    [2019-12-30 16:43:19] Q10359 scheduled after   0 µs: OkHttp www.youtube.com applyAndAckSettings
    [2019-12-30 16:43:19] Q10359 starting              : OkHttp www.youtube.com applyAndAckSettings
    [2019-12-30 16:43:19] Q10361 schedule canceled (queue is shutdown): OkHttp www.youtube.com onSettings
    [2019-12-30 16:43:19] Q10359 finished run in 382 µs: OkHttp www.youtube.com applyAndAckSettings
    [2019-12-30 16:43:20] Q10001 scheduled after   0 µs: OkHttp ConnectionPool
    [2019-12-30 16:43:20] Q10365 scheduled after   0 µs: OkHttp android-developers.googleblog.com applyAndAckSettings
    [2019-12-30 16:43:20] Q10001 starting              : OkHttp ConnectionPool
    [2019-12-30 16:43:20] Q10365 starting              : OkHttp android-developers.googleblog.com applyAndAckSettings
    [2019-12-30 16:43:20] Q10001 run again after 300 s : OkHttp ConnectionPool
    [2019-12-30 16:43:20] Q10001 finished run in 151 µs: OkHttp ConnectionPool
2019-12-31 14:21:05 -05:00
Jesse Wilson
edb5865b4c Fix crash on repeated MockWebServer shutdown
The problem was the awaitIdle() call was scheduling executor jobs after
the ExecutorService had been shut down. This fixes that and defends
against other races.
2019-12-30 23:34:42 -05:00
Jesse Wilson
53d2d794b9 Defer EventListener events until bytes are returned
This changes the timing of responseHeaderStart and responseBodyStart events to
fire when bytes are received from the server. This is a non-trivial behavior
change and should be documented as such in the release notes. In particular,
the responseFailed event may be fired without a preceding responseHeadersStart
event.

To test this I've added a timestamp to our CallEvent test facet.

Closes: https://github.com/square/okhttp/issues/5578
2019-12-30 13:11:17 -05:00
Jesse Wilson
d52e2d34d6 Convert RecordingEventListener to Kotlin 2019-12-29 20:40:02 -05:00
Jesse Wilson
96e596117e Use our test rule instead of the Maven Surefire listener
Closes: https://github.com/square/okhttp/issues/4894
2019-12-20 08:45:37 -10:00
Yuri Schimke
5201424da7 JDK 13 and Gradle 6 (#5561)
* JDK 13 and Gradle 6 RC 1

* Wrong JDK

* Passes test on JDK 13

* Fix

* Spotless upgrade

* Update gradle-wrapper.properties

* Gradle 6
2019-11-10 08:25:13 -05:00
Yuri Schimke
a128299fdb Flaky test improvements (#5577)
* Flaky test improvements

Keep the client event logging for flaky tests even when another listener is applied

* revert

* fix

* Keep logging
2019-10-27 16:15:43 -04:00
Yuri Schimke
dd292590d3 Corretto Test (#5545)
* Testing with Corretto

* CI config

* Cleanup

* Ignore same tests conscrypt fails on

* Test with external sites

* Revert
2019-10-25 21:37:51 -04:00
Jesse Wilson
5917d7a083 Add a way for MockWebServer to track truncated requests
It now tracks inbound requests that fail with an IOException.

Also add a fix for the bug where we'd send 'END OF STREAM' on a stream
that we'd previously canceled, which raced with the 'RST STREAM' and led
to flakiness.

Before we ship the new API in RecordedRequest we should go over the
other cases where inbound HTTP requests fail and make sure they
get reported through this channel.

Closes: https://github.com/square/okhttp/issues/5388
2019-10-05 21:50:00 -04:00
Jesse Wilson
aad8a1420d Name tasks only in TaskRunner (#5526)
* Name tasks only in TaskRunner

Naming queues seemed good initially, but the names are mostly
mutually-redundant with task names.

This PR reduces debug information when a queue is still busy
when the test completes. I have a fix for that in a follow-up
change.

* Update okhttp/src/main/java/okhttp3/internal/ws/RealWebSocket.kt

Co-Authored-By: Yuri Schimke <yuri@schimke.ee>
2019-10-02 22:38:24 -04:00
Jesse Wilson
9849ab8e3b Create OkHttpClient instances eagerly in tests
We used to do this lazily because OkHttpClient instances were
somewhat heavy: each standalone instance held its own
ExecutorService for the connection pool.

Now that we have TaskRunner each instance is much more
lightweight and the drawbacks of creating instances eagerly
is negligible.
2019-09-28 20:53:12 -04:00
Jesse Wilson
fe40324a4b TaskRunner support for shutting down queues
Shutting down queues makes it easier to implement HTTP/2
shutdown because we can enqueue everywhere and centralize
the logic that decides whether we're shutdown or not.

Use this new functionality to implement HTTP/2 on task queues.
It's mostly a drop-in replacement, though opting-into cancel
looks like a mistake when it's what we do most of the time.

When testing this the OkHttpClientTestRule was failing because
tasks were incomplete. I was puzzled by this until I realized
that the OkHttpClientTestRule performs that validation before
we stop the MockWebServer. I changed MockWebServer to have its
own TaskRunner and that made the problem go away.
2019-09-26 21:12:40 -04:00