""" 测试雪花 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