From 23e78d85b1a4afc4430f18cdeaaaed1ce251f773 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 3 Nov 2010 19:21:24 +0100
Subject: [PATCH] The Shuffler backend tests now actually work.

---
 src/post_modules/Shuffler/testsuite.in | 33 +++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/post_modules/Shuffler/testsuite.in b/src/post_modules/Shuffler/testsuite.in
index 3c89515803..0443425e86 100644
--- a/src/post_modules/Shuffler/testsuite.in
+++ b/src/post_modules/Shuffler/testsuite.in
@@ -21,7 +21,16 @@ cond([[master()->resolv("Pike.PollDeviceBackend")]], [[
     sfr->set_backend (pb);
     Shuffler.Shuffle sf = sfr->shuffle(f);
     sf->add_source("xyz\n" * 100000);
-    return f2->read();
+    sf->set_done_callback( lambda() { sf->stop(); destruct(sf); });
+    sf->start();
+    string res = "";
+    f2->set_backend(pb);
+    f2->set_read_callback( lambda(mixed id, string s) { res += s; });
+    while (sf) {
+      pb(1.0);
+    }
+    f->close();
+    return res + f2->read();
   ]], "xyz\n" * 100000)
 ]])
 
@@ -33,7 +42,16 @@ cond([[master()->resolv("Pike.PollBackend")]], [[
     sfr->set_backend (pb);
     Shuffler.Shuffle sf = sfr->shuffle(f);
     sf->add_source("xyz\n" * 100000);
-    return f2->read();
+    sf->set_done_callback( lambda() { sf->stop(); destruct(sf); });
+    sf->start();
+    string res = "";
+    f2->set_backend(pb);
+    f2->set_read_callback( lambda(mixed id, string s) { res += s; });
+    while (sf) {
+      pb(1.0);
+    }
+    f->close();
+    return res + f2->read();
   ]], "xyz\n" * 100000)
 ]])
 
@@ -45,7 +63,16 @@ cond([[master()->resolv("Pike.SelectBackend")]], [[
     sfr->set_backend (pb);
     Shuffler.Shuffle sf = sfr->shuffle(f);
     sf->add_source("xyz\n" * 100000);
-    return f2->read();
+    sf->set_done_callback( lambda() { sf->stop(); destruct(sf); });
+    sf->start();
+    string res = "";
+    f2->set_backend(pb);
+    f2->set_read_callback( lambda(mixed id, string s) { res += s; });
+    while (sf) {
+      pb(1.0);
+    }
+    f->close();
+    return res + f2->read();
   ]], "xyz\n" * 100000)
 ]])
 
-- 
GitLab