Skip to content

Commit 9d86ce5

Browse files
committed
Test signal handling when sleeping
1 parent f9af611 commit 9d86ce5

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

tests/test_sonyflake_turbo.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import signal
12
import sysconfig
3+
import threading
24
from concurrent.futures import ThreadPoolExecutor
35
from datetime import datetime
6+
from time import sleep
47

58
from pytest import mark, raises
69

@@ -73,6 +76,43 @@ def test_sonyflake(use_iter: bool, n: int) -> None:
7376
assert sorted(ids) == ids
7477

7578

79+
@mark.skipif(
80+
not hasattr(signal, "pthread_kill"),
81+
reason="pthread_kill not supported",
82+
)
83+
def test_sonyflake_sigint() -> None:
84+
sf = SonyFlake(0x0000, start_time=1749081600)
85+
thread_id = threading.get_ident()
86+
87+
def thread_func() -> None:
88+
sleep(0.1)
89+
signal.pthread_kill(thread_id, signal.SIGINT)
90+
91+
threading.Thread(target=thread_func).start()
92+
93+
with raises(KeyboardInterrupt):
94+
sf(50000)
95+
96+
97+
@mark.skipif(
98+
not hasattr(signal, "pthread_kill"),
99+
reason="pthread_kill not supported",
100+
)
101+
def test_sonyflake_sigusr() -> None:
102+
sf = SonyFlake(0x0000, start_time=1749081600)
103+
thread_id = threading.get_ident()
104+
105+
signal.signal(signal.SIGUSR1, lambda *_: None)
106+
107+
def thread_func() -> None:
108+
sleep(0.1)
109+
signal.pthread_kill(thread_id, signal.SIGUSR1)
110+
111+
threading.Thread(target=thread_func).start()
112+
113+
assert len(sf(50000)) == 50000
114+
115+
76116
def test_sonyflake_repr() -> None:
77117
sf = SonyFlake(0x0000, 0x7F7F, 0xFFFF, start_time=1749081600)
78118

0 commit comments

Comments
 (0)