On Wed, Jan 14, 2026, 15:05 Ryan Schmitt <[email protected]> wrote:
> The idea in this case is that speed and robustness reinforce each other. > If these tests are robust, they can run in parallel with the other tests > instead of being `@Isolated`. If they run in parallel, they can use longer > timeouts. (I have changes locally to parallelize the client tests, similar > to what I did with the core tests, but I haven't published them yet. The > client tests won't run reliably until I can get a new version of httpcore5 > that has the loopback binding fixes.) > That all sounds pretty awesome. Gary > On Wed, Jan 14, 2026 at 9:47 AM Gary Gregory <[email protected]> > wrote: > >> >> >> On Wed, Jan 14, 2026, 12:33 Ryan Schmitt <[email protected]> wrote: >> >>> Maybe, I'll look into it. I've been rethinking the assertions in these >>> tests as part of my general push to make the test suite faster and more >>> robust. >>> >> >> I think robustness is much more important. For my money, the build is >> currently fast enough ;-) >> >> Gary >> >>> >>> On Tue, Jan 13, 2026 at 10:03 AM Oleg Kalnichevski <[email protected]> >>> wrote: >>> >>> > Hi Ryan >>> > >>> > Should we move this one to the `slow` group as well? >>> > >>> > >>> > >>> https://github.com/apache/httpcomponents-client/actions/runs/20966906846/job/60259719742 >>> > >>> > --- >>> > Error: Tests run: 10, Failures: 1, Errors: 0, Skipped: 0, Time >>> elapsed: >>> > 3.763 s <<< FAILURE! -- in >>> > org.apache.hc.client5.testing.sync.TestSocketTimeout$Uds >>> > Error: >>> > >>> org.apache.hc.client5.testing.sync.TestSocketTimeout$Uds.testReadTimeouts(String)[10] >>> > >>> > -- Time elapsed: 0.703 s <<< FAILURE! >>> > org.opentest4j.AssertionFailedError: Socket read timed out too late >>> (589 >>> > out of 150 ms) ==> expected: <true> but was: <false> >>> > at >>> > >>> > >>> org.apache.hc.client5.testing.sync.AbstractTestSocketTimeout.testReadTimeouts(TestSocketTimeout.java:115) >>> > at java.base/java.lang.reflect.Method.invoke(Method.java:569) >>> > at java.base/java.util.Optional.ifPresent(Optional.java:178) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) >>> > at >>> > >>> > >>> java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276) >>> > at >>> > >>> > >>> java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) >>> > at >>> > >>> > >>> java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) >>> > at >>> > >>> > >>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) >>> > at >>> > >>> > >>> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) >>> > at >>> > >>> > >>> java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) >>> > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) >>> > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) >>> > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) >>> > >>> > >>> >>
