diff --git a/mod/forum/tests/generator_test.php b/mod/forum/tests/generator_test.php index bf074b5..02b68d3 100644 --- a/mod/forum/tests/generator_test.php +++ b/mod/forum/tests/generator_test.php @@ -146,4 +146,74 @@ class mod_forum_generator_testcase extends advanced_testcase { $this->assertEquals(4, $DB->count_records_select('forum_posts', 'discussion = :discussion', array('discussion' => $discussion->id))); } + public function test_forumdataset() { + global $DB, $CFG; + require_once $CFG->dirroot.'/blocks/course_overview/locallib.php'; + // use STDERR stream to get around buffering. + $this->resetAfterTest(true); + $run = 2; + $users = array(); + $courses = array(); + // Create a bunch of users + for ($i = 0; $i < $run; $i++) { + fwrite(STDERR, "Creating course $i" . PHP_EOL); + $users[] = self::getDataGenerator()->create_user(); + } + + // Create course to add the forum. + for ($i = 0; $i < $run; $i++) { + fwrite(STDERR, "Creating user $i" . PHP_EOL); + $record = new stdClass(); + $record->groupmodeforce = false; + $record->groupmode = VISIBLEGROUPS; + $courses[] = self::getDataGenerator()->create_course($record); + } + foreach ($courses as $course) { + for ($i = 0; $i < $run; $i++) { + fwrite(STDERR, "Creating group $i in course with id $course->id" . PHP_EOL); + $record = new stdClass(); + $record->courseid = $course->id; + $this->getDataGenerator()->create_group($record); + } + } + //die(); + $users2 = $users; + $i = 0; + $role = $DB->get_record('role', array('shortname' => 'student')); + + // Each user creates a forum in each course and than posts on everything. + foreach ($courses as $course) { + foreach ($users as $user) { + self::getDataGenerator()->enrol_user($user->id, $course->id, $role->id); + $record = new stdClass(); + $record->course = $course->id; + $forum = self::getDataGenerator()->create_module('forum', $record, array("groupmode" => SEPARATEGROUPS)); + + // Add a discussion. + $record->forum = $forum->id; + $record->userid = $user->id; + $discussion = self::getDataGenerator()->get_plugin_generator('mod_forum')->create_discussion($record); + foreach ($users2 as $user) { + $i++; + fwrite(STDERR, "post number $i up" . PHP_EOL); + // Add a bunch of replies, changing the userid. + $record = new stdClass(); + $record->discussion = $discussion->id; + $record->userid = $user->id; + self::getDataGenerator()->get_plugin_generator('mod_forum')->create_post($record); + } + } + } + + $html = array(); + $this->setUser(array_shift($users)); + list($sortedcourses, $xcourses, $totalcourses) = block_course_overview_get_sorted_courses(); + $before = $DB->perf_get_queries(); + forum_print_overview($xcourses, $html); + $after = $DB->perf_get_queries(); + $count = $after - $before; + fwrite(STDERR, "DB calls before calling api : $before".PHP_EOL); + fwrite(STDERR, "DB calls after calling the api : $after".PHP_EOL); + fwrite(STDERR, "DB calls by the api : $count"); + } }