7
7
import redis .asyncio as aioredis
8
8
from dataclasses import dataclass
9
9
import time
10
+ import sys
10
11
11
12
try :
12
13
from importlib import resources as impresources
@@ -20,11 +21,18 @@ class SeederBase:
20
21
CACHED_SCRIPTS = {}
21
22
DEFAULT_TYPES = ["STRING" , "LIST" , "SET" , "HASH" , "ZSET" , "JSON" , "STREAM" ]
22
23
23
- def __init__ (self , types : typing .Optional [typing .List [str ]] = None ):
24
+ def __init__ (self , types : typing .Optional [typing .List [str ]] = None , seed = None ):
24
25
self .uid = SeederBase .UID_COUNTER
25
26
SeederBase .UID_COUNTER += 1
26
27
self .types = types if types is not None else SeederBase .DEFAULT_TYPES
27
28
29
+ self .seed = random .randrange (sys .maxsize )
30
+ if seed is not None :
31
+ self .seed = seed
32
+
33
+ random .seed (int (self .seed ))
34
+ logging .debug (f"Random seed: { self .seed } , check: { random .randrange (100 )} " )
35
+
28
36
@classmethod
29
37
async def capture (
30
38
clz , client : aioredis .Redis , types : typing .Optional [typing .List [str ]] = None
@@ -81,8 +89,9 @@ def __init__(
81
89
samples = 10 ,
82
90
collection_size = None ,
83
91
types : typing .Optional [typing .List [str ]] = None ,
92
+ seed = None ,
84
93
):
85
- SeederBase .__init__ (self , types )
94
+ SeederBase .__init__ (self , types , seed )
86
95
self .key_target = key_target
87
96
self .data_size = data_size
88
97
self .variance = variance
@@ -140,8 +149,9 @@ def __init__(
140
149
types : typing .Optional [typing .List [str ]] = None ,
141
150
huge_value_target = 5 ,
142
151
huge_value_size = 100000 ,
152
+ seed = None ,
143
153
):
144
- SeederBase .__init__ (self , types )
154
+ SeederBase .__init__ (self , types , seed )
145
155
self .key_target = key_target
146
156
self .data_size = data_size
147
157
if collection_size is None :
@@ -174,6 +184,7 @@ async def run(self, client: aioredis.Redis, target_ops=None, target_deviation=No
174
184
self .collection_size ,
175
185
self .huge_value_target / len (self .units ),
176
186
self .huge_value_size ,
187
+ self .seed ,
177
188
]
178
189
179
190
sha = await client .script_load (Seeder ._load_script ("generate" ))
0 commit comments