|
|
- from fe.bench.workload import Workload
- from fe.bench.workload import NewOrder
- from fe.bench.workload import Payment
- import time
- import threading
-
-
- class Session(threading.Thread):
- def __init__(self, wl: Workload):
- threading.Thread.__init__(self)
- self.workload = wl
- self.new_order_request = []
- self.payment_request = []
- self.payment_i = 0
- self.new_order_i = 0
- self.payment_ok = 0
- self.new_order_ok = 0
- self.time_new_order = 0
- self.time_payment = 0
- self.thread = None
- self.gen_procedure()
-
- def gen_procedure(self):
- for i in range(0, self.workload.procedure_per_session):
- new_order = self.workload.get_new_order()
- self.new_order_request.append(new_order)
-
- def run(self):
- self.run_gut()
-
- def run_gut(self):
- for new_order in self.new_order_request:
- before = time.time()
- ok, order_id = new_order.run()
- after = time.time()
- self.time_new_order = self.time_new_order + after - before
- self.new_order_i = self.new_order_i + 1
- if ok:
- self.new_order_ok = self.new_order_ok + 1
- payment = Payment(new_order.buyer, order_id)
- self.payment_request.append(payment)
- if self.new_order_i % 100 or self.new_order_i == len(self.new_order_request):
- self.workload.update_stat(self.new_order_i, self.payment_i, self.new_order_ok, self.payment_ok,
- self.time_new_order, self.time_payment)
- for payment in self.payment_request:
- before = time.time()
- ok = payment.run()
- after = time.time()
- self.time_payment = self.time_payment + after - before
- self.payment_i = self.payment_i + 1
- if ok:
- self.payment_ok = self.payment_ok + 1
- self.payment_request = []
|