@@ -1444,3 +1444,47 @@ TEST(server, forward_message) {
1444
1444
serv.start ();
1445
1445
t1.join ();
1446
1446
}
1447
+
1448
+ TEST (server, abnormal_pipeline_data) {
1449
+ Server *server = new Server (Server::MODE_PROCESS);
1450
+ server->worker_num = 2 ;
1451
+ server->add_port (SW_SOCK_TCP, TEST_HOST, 0 );
1452
+
1453
+ uint64_t msg_id = swoole_rand (1 , INT_MAX);
1454
+ string filename = " /tmp/swoole.log" ;
1455
+ swoole_set_log_file (filename.c_str ());
1456
+
1457
+ server->create ();
1458
+
1459
+ server->onReceive = [](Server *server, RecvData *req) -> int { return SW_OK; };
1460
+
1461
+ server->onWorkerStart = [&](Server *server, Worker *worker) {
1462
+ if (worker->id == 1 ) {
1463
+ auto send_fn = [server](int flags, uint64_t msg_id) {
1464
+ auto sock = server->get_worker_pipe_master (0 );
1465
+ size_t len = swoole_rand (1000 , 8000 );
1466
+ EventData ev;
1467
+ ev.info .msg_id = msg_id;
1468
+ ev.info .flags = flags;
1469
+ ev.info .len = len;
1470
+ swoole_random_bytes (ev.data , len);
1471
+
1472
+ sock->send_sync (&ev, sizeof (ev.info ) + len);
1473
+ };
1474
+
1475
+ send_fn (SW_EVENT_DATA_CHUNK | SW_EVENT_DATA_BEGIN, msg_id);
1476
+ send_fn (SW_EVENT_DATA_CHUNK, msg_id + 9999 );
1477
+
1478
+ usleep (100000 );
1479
+ server->shutdown ();
1480
+ }
1481
+ };
1482
+
1483
+ server->start ();
1484
+
1485
+ File fp (filename, File::READ);
1486
+ auto cont = fp.read_content ();
1487
+ ASSERT_TRUE (cont->contains (std::string (" abnormal pipeline data, msg_id=" ) + std::to_string (msg_id + 9999 )));
1488
+
1489
+ unlink (filename.c_str ());
1490
+ }
0 commit comments