MDL-55944 testing: Reduce sleep usage.

Remove sleep() and replace with waiting for a second to roll over,
this results in a simpler call the guarantee time() has moved forward
This commit is contained in:
Russell Smith
2016-09-14 10:26:14 +10:00
parent b022c2cd1c
commit 85efc6975a
6 changed files with 19 additions and 6 deletions
@@ -384,7 +384,7 @@ class tool_monitor_eventobservers_testcase extends advanced_testcase {
// Now let us trigger 7 instances of the event.
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
$event->trigger();
sleep(1); // Add a second delay, to prevent time collisions.
$this->waitForSecond(); // Add a second delay, to prevent time collisions.
}
$this->run_adhock_tasks();
$messages = $messagesink->get_messages();
+13
View File
@@ -607,4 +607,17 @@ abstract class advanced_testcase extends base_testcase {
}
}
}
/**
* Wait for a second to roll over, ensures future calls to time() return a different result.
*
* This is implemented instead of sleep() as we do not need to wait a full second. In some cases
* due to calls we may wait more than sleep() would have, on average it will be less.
*/
public function waitForSecond() {
$starttime = time();
while (time() == $starttime) {
usleep(50000);
}
}
}
+1 -1
View File
@@ -358,7 +358,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase {
$this->setCurrentTimeStart();
$this->assertTimeCurrent(time());
sleep(2);
$this->waitForSecond();
$this->assertTimeCurrent(time());
$this->assertTimeCurrent(time()-1);
+1 -1
View File
@@ -236,7 +236,7 @@ class core_coursecatlib_testcase extends advanced_testcase {
$timecreated = $category1->timemodified;
$this->assertSame('Cat1', $category1->name);
$this->assertTrue(empty($category1->description));
sleep(2);
$this->waitForSecond();
$testdescription = 'This is cat 1 а также русский текст';
$category1->update(array('description' => $testdescription));
$this->assertSame($testdescription, $category1->description);
+2 -2
View File
@@ -72,7 +72,7 @@ class mod_assign_lib_testcase extends mod_assign_base_testcase {
$assign->testable_apply_grade_to_user($data, $this->students[0]->id, 0);
// This is required so that the submissions timemodified > the grade timemodified.
sleep(2);
$this->waitForSecond();
// Edit the submission again.
$this->setUser($this->students[0]);
@@ -80,7 +80,7 @@ class mod_assign_lib_testcase extends mod_assign_base_testcase {
$assign->testable_update_submission($submission, $this->students[0]->id, true, false);
// This is required so that the submissions timemodified > the grade timemodified.
sleep(2);
$this->waitForSecond();
// Allow the student another attempt.
$this->teachers[0]->ignoresesskey = true;
+1 -1
View File
@@ -822,7 +822,7 @@ class mod_assign_locallib_testcase extends mod_assign_base_testcase {
$plugin->save($submission, $data);
// Wait 1 second so the submission and grade do not have the same timemodified.
sleep(1);
$this->waitForSecond();
// Simulate adding a grade.
$this->setUser($this->teachers[0]);
$data = new stdClass();