def generateNewOrderParams(self): """Return parameters for NEW_ORDER""" w_id = self.makeWarehouseId() d_id = self.makeDistrictId() c_id = self.makeCustomerId() ol_cnt = rand.number(constants.MIN_OL_CNT, constants.MAX_OL_CNT) o_entry_d = datetime.now() ## 1% of transactions roll back rollback = False # FIXME rand.number(1, 100) == 1 i_ids = [ ] i_w_ids = [ ] i_qtys = [ ] for i in range(0, ol_cnt): if rollback and i + 1 == ol_cnt: i_ids.append(self.scaleParameters.items + 1) else: i_ids.append(self.makeItemId()) ## 1% of items are from a remote warehouse remote = (rand.number(1, 100) == 1) if self.scaleParameters.warehouses > 1 and remote: i_w_ids.append(rand.numberExcluding(self.scaleParameters.starting_warehouse, self.scaleParameters.ending_warehouse, w_id)) else: i_w_ids.append(w_id) i_qtys.append(rand.number(1, constants.MAX_OL_QUANTITY)) ## FOR return makeParameterDict(locals(), "w_id", "d_id", "c_id", "o_entry_d", "i_ids", "i_w_ids", "i_qtys")
def generateNewOrderParams(self): """Return parameters for NEW_ORDER""" w_id = self.makeWarehouseId() d_id = self.makeDistrictId() c_id = self.makeCustomerId() ol_cnt = rand.number(constants.MIN_OL_CNT, constants.MAX_OL_CNT) o_entry_d = datetime.now() ## 1% of transactions roll back rollback = False # FIXME rand.number(1, 100) == 1 i_ids = [] i_w_ids = [] i_qtys = [] for i in range(0, ol_cnt): if rollback and i + 1 == ol_cnt: i_ids.append(self.scaleParameters.items + 1) else: i_ids.append(self.makeItemId()) ## 1% of items are from a remote warehouse remote = (rand.number(1, 100) == 1) if self.scaleParameters.warehouses > 1 and remote: i_w_ids.append( rand.numberExcluding( self.scaleParameters.starting_warehouse, self.scaleParameters.ending_warehouse, w_id)) else: i_w_ids.append(w_id) i_qtys.append(rand.number(1, constants.MAX_OL_QUANTITY)) ## FOR return makeParameterDict(locals(), "w_id", "d_id", "c_id", "o_entry_d", "i_ids", "i_w_ids", "i_qtys")
def generatePaymentParams(self): """Return parameters for PAYMENT""" x = rand.number(1, 100) y = rand.number(1, 100) w_id = self.makeWarehouseId() d_id = self.makeDistrictId() c_w_id = None c_d_id = None c_id = None c_last = None h_amount = rand.fixedPoint(2, constants.MIN_PAYMENT, constants.MAX_PAYMENT) h_date = datetime.now() ## 85%: paying through own warehouse (or there is only 1 warehouse) if self.scaleParameters.warehouses == 1 or x <= 85: c_w_id = w_id c_d_id = d_id ## 15%: paying through another warehouse: else: ## select in range [1, num_warehouses] excluding w_id c_w_id = rand.numberExcluding(self.scaleParameters.starting_warehouse, self.scaleParameters.ending_warehouse, w_id) assert c_w_id != w_id c_d_id = self.makeDistrictId() ## 60%: payment by last name if y <= 60: c_last = rand.makeRandomLastName(self.scaleParameters.customersPerDistrict) ## 40%: payment by id else: assert y > 60 c_id = self.makeCustomerId() return makeParameterDict(locals(), "w_id", "d_id", "h_amount", "c_w_id", "c_d_id", "c_id", "c_last", "h_date")
def generatePaymentParams(self): """Return parameters for PAYMENT""" x = rand.number(1, 100) y = rand.number(1, 100) w_id = self.makeWarehouseId() d_id = self.makeDistrictId() c_w_id = None c_d_id = None c_id = None c_last = None h_amount = rand.fixedPoint(2, constants.MIN_PAYMENT, constants.MAX_PAYMENT) h_date = datetime.now() ## 85%: paying through own warehouse (or there is only 1 warehouse) if self.scaleParameters.warehouses == 1 or x <= 85: c_w_id = w_id c_d_id = d_id ## 15%: paying through another warehouse: else: ## select in range [1, num_warehouses] excluding w_id c_w_id = rand.numberExcluding( self.scaleParameters.starting_warehouse, self.scaleParameters.ending_warehouse, w_id) assert c_w_id != w_id c_d_id = self.makeDistrictId() ## 60%: payment by last name if y <= 60: c_last = rand.makeRandomLastName( self.scaleParameters.customersPerDistrict) ## 40%: payment by id else: assert y > 60 c_id = self.makeCustomerId() return makeParameterDict(locals(), "w_id", "d_id", "h_amount", "c_w_id", "c_d_id", "c_id", "c_last", "h_date")