@@ -13,8 +13,11 @@ namespace workerd::api::streams {
1313namespace {
1414
1515// Mock WritableStreamSink for testing pumpTo functionality
16- class MockWritableStreamSink : public WritableStreamSink {
16+ class MockWritableStreamSink final : public WritableStreamSink {
1717 public:
18+ MockWritableStreamSink () = default ;
19+ ~MockWritableStreamSink () = default ;
20+
1821 kj::Promise<void > write (kj::ArrayPtr<const kj::byte> buffer) override {
1922 writeCallCount++;
2023 totalBytesWritten += buffer.size ();
@@ -245,7 +248,7 @@ KJ_TEST("ReadableStreamSource pumpTo with end") {
245248 MockWritableStreamSink sink;
246249
247250 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
248- co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, true ));
251+ co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES ));
249252 KJ_ASSERT (sink.totalBytesWritten == 10 );
250253 KJ_ASSERT (sink.isEnded );
251254 KJ_ASSERT (sink.writtenData == testData);
@@ -263,7 +266,7 @@ KJ_TEST("ReadableStreamSource pumpTo without end") {
263266 MockWritableStreamSink sink;
264267
265268 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
266- co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, false ));
269+ co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::NO ));
267270 KJ_ASSERT (sink.totalBytesWritten == 10 );
268271 KJ_ASSERT (!sink.isEnded );
269272 KJ_ASSERT (sink.writtenData == testData);
@@ -282,7 +285,7 @@ KJ_TEST("ReadableStreamSource large pumpTo with end") {
282285 MockWritableStreamSink sink;
283286
284287 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
285- co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, true ));
288+ co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES ));
286289 KJ_ASSERT (sink.totalBytesWritten == 52 * 1024 );
287290 KJ_ASSERT (sink.isEnded );
288291 KJ_ASSERT (sink.writtenData == testData);
@@ -301,7 +304,8 @@ KJ_TEST("ReadableStreamSource large pumpTo canceled") {
301304 MockWritableStreamSink sink;
302305
303306 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
304- auto promise = environment.context .waitForDeferredProxy (source->pumpTo (sink, true ));
307+ auto promise =
308+ environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES));
305309 source->cancel (KJ_EXCEPTION (FAILED, " test abort" ));
306310 try {
307311 co_await promise;
@@ -325,7 +329,8 @@ KJ_TEST("ReadableStreamSource large pumpTo canceled before") {
325329
326330 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
327331 source->cancel (KJ_EXCEPTION (FAILED, " test abort" ));
328- auto promise = environment.context .waitForDeferredProxy (source->pumpTo (sink, true ));
332+ auto promise =
333+ environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES));
329334 try {
330335 co_await promise;
331336 } catch (...) {
@@ -349,7 +354,7 @@ KJ_TEST("ReadableStreamSource large pumpTo closed") {
349354 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
350355 auto & context = environment.context ;
351356 co_await source->readAllBytes (kj::maxValue);
352- co_await context.waitForDeferredProxy (source->pumpTo (sink, true ));
357+ co_await context.waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES ));
353358 KJ_ASSERT (sink.totalBytesWritten == 0 );
354359 });
355360}
@@ -366,7 +371,8 @@ KJ_TEST("ReadableStreamSource large pumpTo, concurrent read fails") {
366371 MockWritableStreamSink sink;
367372
368373 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
369- auto promise = environment.context .waitForDeferredProxy (source->pumpTo (sink, true ));
374+ auto promise =
375+ environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES));
370376
371377 // Concurrent read should fail.
372378 try {
@@ -536,7 +542,7 @@ KJ_TEST("ReadableStreamSource tee (small, no limit)") {
536542 auto fakeOwn = kj::Own<MemoryAsyncInputStream>(&input, kj::NullDisposer::instance);
537543 auto source = newReadableStreamSource (kj::mv (fakeOwn));
538544
539- auto tee = source->tee (kj::none );
545+ auto tee = source->tee (200 );
540546 auto branch1 = kj::mv (tee.branch1 );
541547 auto branch2 = kj::mv (tee.branch2 );
542548
@@ -563,7 +569,7 @@ KJ_TEST("ReadableStreamSource tee (small, no limit, independent)") {
563569 auto fakeOwn = kj::Own<MemoryAsyncInputStream>(&input, kj::NullDisposer::instance);
564570 auto source = newReadableStreamSource (kj::mv (fakeOwn));
565571
566- auto tee = source->tee (kj::none );
572+ auto tee = source->tee (200 );
567573 auto branch1 = kj::mv (tee.branch1 );
568574 auto branch2 = kj::mv (tee.branch2 );
569575 branch2->cancel (KJ_EXCEPTION (FAILED, " test abort" ));
@@ -596,7 +602,7 @@ KJ_TEST("ReadableStreamSource tee (large, no limit)") {
596602 auto fakeOwn = kj::Own<MemoryAsyncInputStream>(&input, kj::NullDisposer::instance);
597603 auto source = newReadableStreamSource (kj::mv (fakeOwn));
598604
599- auto tee = source->tee (kj::none );
605+ auto tee = source->tee (0xffffffff );
600606 auto branch1 = kj::mv (tee.branch1 );
601607 auto branch2 = kj::mv (tee.branch2 );
602608
@@ -655,7 +661,7 @@ KJ_TEST("ReadableStreamSource after read") {
655661 KJ_ASSERT (bytesRead == 512 );
656662 KJ_ASSERT (buffer.asPtr ().first (bytesRead) == testData.asPtr ().first (bytesRead));
657663
658- auto tee = source->tee (kj::none );
664+ auto tee = source->tee (0xffffffff );
659665 auto branch1 = kj::mv (tee.branch1 );
660666 auto branch2 = kj::mv (tee.branch2 );
661667
@@ -839,7 +845,7 @@ KJ_TEST("newReadableStreamSourceFromDelegate") {
839845 return toRead;
840846 };
841847
842- auto source = newReadableStreamSourceFromDelegate (kj::mv (producer), 5 );
848+ auto source = newReadableStreamSourceFromProducer (kj::mv (producer), 5 );
843849
844850 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
845851 kj::FixedArray<kj::byte, 5 > buffer;
@@ -874,7 +880,7 @@ KJ_TEST("newReadableStreamSourceFromDelegate (not enough bytes)") {
874880 return toRead;
875881 };
876882
877- auto source = newReadableStreamSourceFromDelegate (kj::mv (producer), 10 );
883+ auto source = newReadableStreamSourceFromProducer (kj::mv (producer), 10 );
878884
879885 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
880886 kj::FixedArray<kj::byte, 5 > buffer;
@@ -919,7 +925,7 @@ KJ_TEST("Gzip encoded stream (pumpTo)") {
919925 MockWritableStreamSink sink;
920926
921927 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
922- co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, true ));
928+ co_await environment.context .waitForDeferredProxy (source->pumpTo (sink, EndAfterPump::YES ));
923929 });
924930
925931 KJ_ASSERT (sink.writtenData == " some data to gzip" _kjb);
@@ -937,7 +943,7 @@ KJ_TEST("Gzip encoded stream (pumpTo same encoding)") {
937943 auto sink = newEncodedWritableStreamSink (rpc::StreamEncoding::GZIP, kj::mv (fakeOwn));
938944
939945 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
940- co_await environment.context .waitForDeferredProxy (source->pumpTo (*sink, true ));
946+ co_await environment.context .waitForDeferredProxy (source->pumpTo (*sink, EndAfterPump::YES ));
941947 });
942948
943949 // The data should pass through unchanged.
@@ -956,7 +962,7 @@ KJ_TEST("Gzip encoded stream (pumpTo different encoding)") {
956962 auto sink = newEncodedWritableStreamSink (rpc::StreamEncoding::BROTLI, kj::mv (fakeOwn));
957963
958964 fixture.runInIoContext ([&](const auto & environment) -> kj::Promise<void > {
959- co_await environment.context .waitForDeferredProxy (source->pumpTo (*sink, true ));
965+ co_await environment.context .waitForDeferredProxy (source->pumpTo (*sink, EndAfterPump::YES ));
960966 });
961967
962968 // The data shuld be brotli compressed.
0 commit comments