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:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user