diff --git a/os/run/bomb.run b/os/run/bomb.run
index eeef0f6f5..1d297d464 100644
--- a/os/run/bomb.run
+++ b/os/run/bomb.run
@@ -21,17 +21,19 @@ install_config {
-
+
+
}
build_boot_image "core init bomb timer"
-append qemu_args "-nographic -m 64"
+append qemu_args "-nographic -m 128"
-run_genode_until forever
+run_genode_until "Done\. Going to sleep\." 300
+puts "Test succeeded."
diff --git a/os/src/test/bomb/main.cc b/os/src/test/bomb/main.cc
index b8c9e1bdc..faba69584 100644
--- a/os/src/test/bomb/main.cc
+++ b/os/src/test/bomb/main.cc
@@ -27,6 +27,9 @@
#include
#include
+#include
+#include
+
using namespace Genode;
@@ -213,6 +216,12 @@ Timer::Session *timer()
int main(int argc, char **argv)
{
+ unsigned long rounds = 5;
+
+ try {
+ config()->xml_node().attribute("rounds").value(&rounds);
+ } catch(...) { }
+
printf("--- bomb started ---\n");
/* connect to core's cap service used for creating parent capabilities */
@@ -236,7 +245,7 @@ int main(int argc, char **argv)
sleep_forever();
}
- for (unsigned round = 1; ; ++round) {
+ for (unsigned round = 1; round < rounds ; ++round) {
for (unsigned i = children; i; --i)
start_child("bomb", &cap, amount, &parent_services);
@@ -258,9 +267,11 @@ int main(int argc, char **argv)
else break;
}
- PINF("Done.");
+ PINF("[%03d] Done.", round);
}
+ PINF("Done. Going to sleep");
+
sleep_forever();
return 0;
}