Squashed 'paste-framework/' content from commit 34e8684
git-subtree-dir: paste-framework git-subtree-split: 34e8684c4bc3cebbe177509f42ab4ef5b5425a7a
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""
|
||||
测试雪花 ID 生成器。
|
||||
无外部依赖,可离线运行。
|
||||
"""
|
||||
|
||||
from paste.util.snow_id import IdWorker
|
||||
|
||||
|
||||
class TestSnowflakeId:
|
||||
"""雪花 ID 生成器测试"""
|
||||
|
||||
def test_snow_id_generates_string(self):
|
||||
"""测试 Snowflake ID 是否生成字符串"""
|
||||
id_worker = IdWorker.get_id_worker()
|
||||
sid = f'{id_worker.get_id()}'
|
||||
assert isinstance(sid, str), "雪花 ID 必须是字符串"
|
||||
assert len(sid) > 0, "雪花 ID 必须包含内容"
|
||||
|
||||
def test_snow_id_is_unique(self):
|
||||
"""测试生成的 ID 是否唯一(简单验证)"""
|
||||
id_worker = IdWorker.get_id_worker()
|
||||
ids = [id_worker.get_id() for _ in range(50)]
|
||||
assert len(set(ids)) == len(ids), "All generated IDs should be unique"
|
||||
|
||||
def test_snow_id_monotonic_increase(self):
|
||||
"""测试雪花 ID 单调递增"""
|
||||
id_worker = IdWorker.get_id_worker()
|
||||
ids = [id_worker.get_id() for _ in range(100)]
|
||||
for i in range(1, len(ids)):
|
||||
assert ids[i] > ids[i - 1], \
|
||||
f"ID at position {i} should be greater than previous"
|
||||
|
||||
def test_snow_id_worker_isolation(self):
|
||||
"""测试不同 worker 生成的 ID 不冲突"""
|
||||
worker1 = IdWorker.get_id_worker(datacenter_id=1, worker_id=1)
|
||||
worker2 = IdWorker.get_id_worker(datacenter_id=2, worker_id=2)
|
||||
ids = [worker1.get_id() for _ in range(50)] + \
|
||||
[worker2.get_id() for _ in range(50)]
|
||||
assert len(set(ids)) == len(ids), \
|
||||
"IDs from different workers should be unique"
|
||||
|
||||
def test_snow_id_high_throughput(self):
|
||||
"""测试短时间高并发生成"""
|
||||
id_worker = IdWorker.get_id_worker()
|
||||
ids = [id_worker.get_id() for _ in range(1000)]
|
||||
assert len(set(ids)) == 1000
|
||||
Reference in New Issue
Block a user