mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
104 lines
4.7 KiB
PHP
104 lines
4.7 KiB
PHP
<?php
|
|
|
|
class QueueTest extends \Codeception\Test\Unit
|
|
{
|
|
public function testDummyQueue()
|
|
{
|
|
config('queue.driver', 'dummy');
|
|
|
|
$handler = 'myfunc';
|
|
$args = (object)['foo' => 'bar'];
|
|
$options = (object)['key' => 'val'];
|
|
|
|
Rhymix\Framework\Queue::addTask($handler, $args, $options);
|
|
|
|
$output = Rhymix\Framework\Queue::getDriver('dummy')->getNextTask();
|
|
$this->assertEquals('myfunc', $output->handler);
|
|
$this->assertEquals('bar', $output->args->foo);
|
|
$this->assertEquals('val', $output->options->key);
|
|
|
|
$output = Rhymix\Framework\Queue::getDriver('dummy')->getNextTask();
|
|
$this->assertNull($output);
|
|
}
|
|
|
|
public function testScheduledTaskAt()
|
|
{
|
|
$timestamp = time() + 43200;
|
|
$handler = 'MyClass::myFunc';
|
|
$args = (object)['foo' => 'bar'];
|
|
$options = null;
|
|
|
|
$task_srl = Rhymix\Framework\Queue::addTaskAt($timestamp, $handler, $args, $options);
|
|
$this->assertGreaterThan(0, $task_srl);
|
|
|
|
$output = Rhymix\Framework\Queue::getScheduledTask($task_srl);
|
|
$this->assertTrue(is_object($output));
|
|
$this->assertEquals('once', $output->task_type);
|
|
$this->assertEquals(date('Y-m-d H:i:s', $timestamp), $output->first_run);
|
|
$this->assertEquals('MyClass::myFunc', $output->handler);
|
|
$this->assertEquals('bar', $output->args->foo);
|
|
$this->assertNull($output->options);
|
|
|
|
$output = Rhymix\Framework\Queue::cancelScheduledTask($task_srl);
|
|
$this->assertTrue($output);
|
|
}
|
|
|
|
public function testScheduledTaskAtInterval()
|
|
{
|
|
$interval = '30 9 1-15 */2 *';
|
|
$handler = 'MyClass::getInstance()->myMethod';
|
|
$args = (object)['foo' => 'bar'];
|
|
$options = null;
|
|
|
|
$task_srl = Rhymix\Framework\Queue::addTaskAtInterval($interval, $handler, $args, $options);
|
|
$this->assertGreaterThan(0, $task_srl);
|
|
|
|
$output = Rhymix\Framework\Queue::getScheduledTask($task_srl);
|
|
$this->assertTrue(is_object($output));
|
|
$this->assertEquals('interval', $output->task_type);
|
|
$this->assertEquals($interval, $output->run_interval);
|
|
$this->assertEquals('MyClass::getInstance()->myMethod', $output->handler);
|
|
$this->assertEquals('bar', $output->args->foo);
|
|
$this->assertNull($output->options);
|
|
|
|
$output = Rhymix\Framework\Queue::cancelScheduledTask($task_srl);
|
|
$this->assertTrue($output);
|
|
}
|
|
|
|
public function testCheckIntervalSyntax()
|
|
{
|
|
$this->assertTrue(Rhymix\Framework\Queue::checkIntervalSyntax('* * * * *'));
|
|
$this->assertTrue(Rhymix\Framework\Queue::checkIntervalSyntax('*/2 15 * * 0,3'));
|
|
$this->assertTrue(Rhymix\Framework\Queue::checkIntervalSyntax('10-19,40-49 * 1-12 * *'));
|
|
$this->assertTrue(Rhymix\Framework\Queue::checkIntervalSyntax('*/10 */4 * * *'));
|
|
$this->assertFalse(Rhymix\Framework\Queue::checkIntervalSyntax('* * * *'));
|
|
$this->assertFalse(Rhymix\Framework\Queue::checkIntervalSyntax('1 2 3 4 5,6 */7'));
|
|
$this->assertFalse(Rhymix\Framework\Queue::checkIntervalSyntax('@hourly'));
|
|
$this->assertFalse(Rhymix\Framework\Queue::checkIntervalSyntax('5/* 12h * * *'));
|
|
}
|
|
|
|
public function testParseInterval()
|
|
{
|
|
$interval = '* * * * *';
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-01-01 00:00:00')));
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-31 23:59:59')));
|
|
|
|
$interval = '*/2 15 * * 0,3';
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 15:00:00')));
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-04 15:30:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-02 15:00:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 03:00:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-04 15:31:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-11-30 15:44:00')));
|
|
|
|
$interval = '3-5,14-21,*/10 * * 12 *';
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 12:05:00')));
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 14:19:00')));
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 16:30:00')));
|
|
$this->assertTrue(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 18:00:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 09:01:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-12-01 11:13:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-01-02 06:20:00')));
|
|
$this->assertFalse(Rhymix\Framework\Queue::parseInterval($interval, strtotime('2024-11-30 18:50:00')));
|
|
}
|
|
}
|