1--TEST-- 2swoole_server/task: invalid packet 3--SKIPIF-- 4<?php require __DIR__ . '/../../include/skipif.inc'; 5skip_if_function_not_exist('msg_get_queue'); 6?> 7--FILE-- 8<?php 9require __DIR__ . '/../../include/bootstrap.php'; 10const MSGQ_KEY = 0x70001001; 11 12$file = __DIR__.'/tmp.log'; 13use Swoole\Server; 14 15$result = new Swoole\Atomic(0); 16$pm = new SwooleTest\ProcessManager; 17 18$pm->parentFunc = function ($pid) use ($pm) { 19 $data = '{"tid":17732683638813521,"out_trade_no":"dm5601993521","runMethod":"\\Action\\Mpay\\Uni\\UniApiV3Act:jsonDrive"}'; 20 $queueId = msg_get_queue(MSGQ_KEY); 21 if ($queueId === false) { 22 throw new \Swoole\Exception("msg_get_queue() failed."); 23 } 24 Assert::true(msg_send($queueId, 1, $data)); 25 Assert::true(msg_send($queueId, 1, Swoole\Server\Task::pack($data), false)); 26 $pm->wait(); 27 $pm->kill(); 28}; 29 30$pm->childFunc = function () use ($pm, $file, $result) { 31 ini_set('swoole.display_errors', 'Off'); 32 $serv = new Server('127.0.0.1', $pm->getFreePort(), SWOOLE_BASE); 33 $serv->set(array( 34 "worker_num" => 2, 35 'task_worker_num' => 1, 36 'task_ipc_mode' => 3, 37 'message_queue_key' => MSGQ_KEY, 38 'log_file' => $file, 39 )); 40 $serv->on("WorkerStart", function (Server $serv) use ($pm) { 41 $pm->wakeup(); 42 }); 43 $serv->on('receive', function (Server $serv, $fd, $rid, $data) { 44 45 }); 46 $serv->on('task', function (Server $serv, $task_id, $worker_id, $data) use ($pm, $result) { 47 $pm->wakeup(); 48 $result->add(1); 49 }); 50 51 $serv->start(); 52}; 53 54$pm->childFirst(); 55$pm->run(); 56 57// echo file_get_contents($file); 58Assert::true(swoole_string(file_get_contents($file))->contains('ProcessPool_worker_loop: bad task packet')); 59unlink($file); 60Assert::eq($result->get(), 1); 61?> 62--EXPECT-- 63