Skip to content

Commit 5b9d160

Browse files
authored
Fix core tests & optimize code (#5800)
1 parent c065def commit 5b9d160

File tree

19 files changed

+91
-99
lines changed

19 files changed

+91
-99
lines changed

.github/workflows/core.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747

4848
- name: build
4949
run: |
50-
cmake . -D CODE_COVERAGE=ON -D enable_thread=1 -D verbose=1 -D enable_asan=1 || exit 1
50+
cmake . -D CODE_COVERAGE=ON -D enable_thread=1 -D verbose=1 || exit 1
5151
make VERBOSE=1 -j $(nproc) core-tests || exit 1
5252
5353
- name: run tests

.github/workflows/unit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
matrix:
1212
php: ['8.1', '8.2', '8.3', '8.4']
1313
os: [ ubuntu-24.04, ubuntu-24.04-arm ]
14-
name: ${{ matrix.php }}-${{ matrix.os }}-test
14+
name: ${{ matrix.php }}-${{ matrix.os }}
1515
runs-on: ${{ matrix.os }}
1616
steps:
1717
- uses: actions/checkout@v4

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ endif()
120120
if (DEFINED enable_asan)
121121
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
122122
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
123+
add_definitions(-DSW_USE_ASAN)
123124
endif()
124125

125126
if (DEFINED enable_thread)

core-tests/src/os/timer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ TEST(timer, error) {
148148
SwooleTG.timer = nullptr;
149149

150150
swoole_timer_free();
151-
ASSERT_EQ(swoole_timer_select(), SW_ERR);
151+
swoole_timer_select(); // no effect
152152
ASSERT_EQ(swoole_timer_get(1), nullptr);
153153
ASSERT_FALSE(swoole_timer_clear(1));
154154
ASSERT_FALSE(swoole_timer_exists(1));

core-tests/src/reactor/base.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ static void test_error_event(Reactor::Type type, int retval) {
527527
ASSERT_TRUE(p.ready());
528528

529529
Reactor *reactor = new Reactor(1024, type);
530+
SwooleTG.reactor = reactor;
530531

531532
reactor->ptr = &retval;
532533

@@ -542,6 +543,7 @@ static void test_error_event(Reactor::Type type, int retval) {
542543
p.close(SW_PIPE_CLOSE_WORKER);
543544
ASSERT_EQ(reactor->wait(), SW_OK);
544545
delete reactor;
546+
SwooleTG.reactor = nullptr;
545547
}
546548

547549
TEST(reactor, error_event) {

core-tests/src/server/server.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,7 @@ TEST(server, thread) {
697697
ASSERT_EQ(test::counter_get(4), 2); // onPipeMessage called
698698
}
699699

700+
#ifndef SW_USE_ASAN
700701
TEST(server, task_thread) {
701702
DEBUG() << "new server\n";
702703
Server serv(Server::MODE_THREAD);
@@ -972,6 +973,7 @@ TEST(server, reload_thread_3) {
972973
test::wait_all_child_processes();
973974
}
974975
#endif
976+
#endif
975977

976978
TEST(server, reload_all_workers) {
977979
Server serv(Server::MODE_PROCESS);
@@ -1027,6 +1029,8 @@ TEST(server, reload_all_workers) {
10271029
kill(serv->gs->master_pid, SIGTERM);
10281030
}
10291031
}
1032+
1033+
DEBUG() << "onWorkerStart: id=" << worker->id << "\n";
10301034
};
10311035

10321036
ASSERT_EQ(serv.start(), 0);
@@ -1075,6 +1079,8 @@ TEST(server, reload_all_workers2) {
10751079
kill(serv->gs->master_pid, SIGTERM);
10761080
}
10771081
}
1082+
1083+
DEBUG() << "onWorkerStart: id=" << worker->id << "\n";
10781084
};
10791085

10801086
serv.onBeforeReload = [](Server *serv) {
@@ -2126,12 +2132,14 @@ static void test_task_ipc(Server &serv) {
21262132
serv.onTask = [](Server *serv, EventData *task) -> int {
21272133
EXPECT_EQ(string(task->data, task->info.len), string(packet));
21282134
EXPECT_TRUE(serv->finish(task->data, task->info.len, 0, task));
2135+
DEBUG() << "onTask: " << task->info.len << " bytes\n";
21292136
return 0;
21302137
};
21312138

21322139
serv.onFinish = [](Server *serv, EventData *task) -> int {
21332140
EXPECT_EQ(string(task->data, task->info.len), string(packet));
21342141
usleep(100000);
2142+
DEBUG() << "onFinish: " << task->info.len << " bytes\n";
21352143
serv->shutdown();
21362144
return 0;
21372145
};
@@ -2146,6 +2154,12 @@ static void test_task_ipc(Server &serv) {
21462154
buf.info.ext_flags |= (SW_TASK_NONBLOCK | SW_TASK_CALLBACK);
21472155
EXPECT_TRUE(serv->task(&buf, &_dst_worker_id));
21482156
}
2157+
2158+
DEBUG() << "onWorkerStart: id=" << worker->id << "\n";
2159+
};
2160+
2161+
serv.onBeforeShutdown = [](Server *serv) {
2162+
DEBUG() << "onBeforeShutdown\n";
21492163
};
21502164

21512165
ASSERT_EQ(serv.start(), 0);

include/swoole.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -602,11 +602,7 @@ int swoole_set_cpu_affinity(cpu_set_t *set);
602602
int swoole_get_cpu_affinity(cpu_set_t *set);
603603
#endif
604604

605-
void swoole_clock_realtime(timespec *time);
606-
timespec swoole_time_until(time_t milliseconds);
607-
608605
namespace swoole {
609-
610606
typedef long SessionId;
611607
typedef long TaskId;
612608
typedef uint8_t ReactorId;
@@ -781,6 +777,8 @@ std::string dirname(const std::string &file);
781777
int hook_add(void **hooks, int type, const Callback &func, int push_back);
782778
void hook_call(void **hooks, int type, void *arg);
783779
double microtime();
780+
void realtime_get(timespec *time);
781+
void realtime_add(timespec *time, int64_t add_msec);
784782
} // namespace swoole
785783

786784
extern swoole::Global SwooleG; // Local Global Variable

include/swoole_api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ SW_API void swoole_timer_delay(swoole::TimerNode *tnode, long delay_ms);
4747
SW_API swoole::TimerNode *swoole_timer_get(long timer_id);
4848
SW_API bool swoole_timer_clear(long timer_id);
4949
SW_API void swoole_timer_free();
50-
SW_API int swoole_timer_select();
50+
SW_API void swoole_timer_select();
5151
SW_API int64_t swoole_timer_get_next_msec();
5252
SW_API bool swoole_timer_is_available();
5353

include/swoole_process_pool.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,8 @@ struct ProcessPool {
437437
static int run_with_stream_protocol(ProcessPool *pool, Worker *worker);
438438
static int run_with_message_protocol(ProcessPool *pool, Worker *worker);
439439
static int run_async(ProcessPool *pool, Worker *worker);
440-
static void create_sync_timer();
440+
void at_worker_enter(Worker *worker);
441+
void at_worker_exit(Worker *worker);
441442

442443
bool wait_detached_worker(std::unordered_set<pid_t> &detached_workers, pid_t pid);
443444
};

include/swoole_timer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class Timer {
8080
~Timer();
8181

8282
int64_t get_relative_msec() const {
83-
return time<std::chrono::milliseconds>(true) - base_time;
83+
return get_absolute_msec() - base_time;
8484
}
8585

8686
int64_t get_next_msec() const {
@@ -106,7 +106,7 @@ class Timer {
106106
update(tnode);
107107
}
108108
void reinit(bool manually_trigger = false);
109-
int select();
109+
void select();
110110

111111
TimerNode *get(long id) {
112112
auto it = map.find(id);

0 commit comments

Comments
 (0)