1+ from datetime import datetime
12import grpc
3+ import random
24import time
35
46from locust import User , TaskSet , between , events , task
79import demo_bank_pb2_grpc
810
911
10- def init_tracer ():
11- config = Config (
12- config = {
13- 'sampler' : {
14- 'type' : 'const' ,
15- 'param' : 1 ,
16- },
17- 'logging' : True ,
18- 'propagation' : 'b3' , # zipkin headers
19- },
20- validate = True ,
21- service_name = 'load-generator' )
22- tracer = config .initialize_tracer ()
23- interceptor = open_tracing_client_interceptor (tracer , log_payloads = True )
24- return tracer , interceptor
12+ class DataPool :
13+ def __init__ (self , file ):
14+ with open (file , 'r' ) as f :
15+ self .id_pool = [line .rstrip () for line in f .readlines ()]
16+ self .pool_size = len (self .id_pool )
17+
18+ random .seed (int (datetime .today ().timestamp () * 100 ))
19+
20+ def next_id (self ):
21+ i = random .randrange (0 , self .pool_size - 1 , 1 )
22+ return self .id_pool [i ]
23+
24+
25+ pool = DataPool ('ids.txt' )
2526
2627
2728class DashboardTask (TaskSet ):
@@ -33,7 +34,7 @@ def on_start(self):
3334 def get_dashboard (self ):
3435 start_time = time .time ()
3536 try :
36- test_id = self . get_test_id ()
37+ test_id = pool . next_id ()
3738 req = demo_bank_pb2 .GetDashboardRequest (login_name = test_id )
3839 self .stub .GetDashboard (req )
3940 except grpc .RpcError as e :
@@ -54,19 +55,20 @@ def get_dashboard(self):
5455 response_length = 0 ,
5556 )
5657
57- def get_test_id (self ):
58- return 'user001'
59-
6058
6159class MobileAppUser (User ):
6260 tasks = [DashboardTask ]
6361 wait_time = between (1 , 2 )
6462
6563 def __init__ (self , * args , ** kwargs ):
6664 super (MobileAppUser , self ).__init__ (* args , ** kwargs )
65+ DataPool ('ids.txt' )
6766
6867
6968if __name__ == '__main__' :
69+ for i in range (100 ):
70+ print (pool .next_id ())
71+
7072 print ('''
7173This script does not work as a standalone program, please use locust utility instead.
7274
0 commit comments