33
44use Imi \Queue \Model \Message ;
55use Imi \Queue \Driver \IQueueDriver ;
6+ use Swoole \Coroutine \Channel ;
67
78abstract class BaseQueueTest extends BaseTest
89{
@@ -16,15 +17,36 @@ public function testPush()
1617 $ message ->setMessage ('a ' );
1718 $ messageId = $ driver ->push ($ message );
1819 $ this ->assertNotEmpty ($ messageId );
19-
20- $ message ->setMessage ('b ' );
21- $ messageId = $ driver ->push ($ message , 3600 );
22- $ this ->assertNotEmpty ($ messageId );
2320 }
2421
2522 public function testPop ()
2623 {
2724 $ message = $ this ->getDriver ()->pop ();
25+ $ this ->assertInstanceOf (\Imi \Queue \Contract \IMessage::class, $ message );
26+ $ this ->assertNotEmpty ($ message ->getMessageId ());
27+ }
28+
29+ public function testPushDelay ()
30+ {
31+ $ driver = $ this ->getDriver ();
32+ $ driver ->clear ();
33+ $ message = new Message ;
34+ $ message ->setMessage ('b ' );
35+ $ messageId = $ driver ->push ($ message , 3 );
36+ $ this ->assertNotEmpty ($ messageId );
37+
38+ $ time = microtime (true );
39+ for ($ i = 0 ; $ i < 3 ; ++$ i )
40+ {
41+ sleep (1 );
42+ $ message = $ driver ->pop ();
43+ if (null !== $ message )
44+ {
45+ break ;
46+ }
47+ }
48+ $ this ->assertEquals (3 , (int )(microtime (true ) - $ time ));
49+ $ this ->assertInstanceOf (\Imi \Queue \Contract \IMessage::class, $ message );
2850 $ this ->assertNotEmpty ($ message ->getMessageId ());
2951 }
3052
0 commit comments