def start_sims(): if not os.path.exists(log_path): os.mkdir(log_path) if del_log_before_start: del_all_files(log_path) addr_len = 0 if bind_self: addr_list = get_connected_ipv4_list() addr_len = len(addr_list) mac_mid = "Air" # Ascii of "Air_" mac_head = ("%s%s" % (mac_prefix[0:1], mac_mid)) for i in range(0, sim_num): #mac_tmp = mac_prefix + sim_type+"mac"+str(i) mac_tmp = ("%s%02x" % (mac_head, i)) log = MyLogger(join(log_path, '%s-%s.log' % (sim_type, mac_tmp)), clevel=eval(cl_level), flevel=eval(fl_level)) log.warn("device mac:%s" % (mac_tmp, )) sim = eval(sim_type) if bind_self and addr_len > 0: if force_dev_num and i >= addr_len: log.error("devices should not more than net cards number!") break addr_index = i % (addr_len) sim_temp = sim(logger=log, mac=mac_tmp, addr=rout_addr, self_addr=(addr_list[addr_index], int(start_port))) else: log.error("no any net card is connected!") sys.exit(-666) #sim_temp = sim(logger=log, mac=mac_tmp) #sim_temp.sdk_obj.heartbeat_interval = heartbeat_interval sim_temp.run_forever() device_online_list.append(sim_temp) if start_one_by_one: log.warn("press any key to start next devices") raw_input()
else: log_level = logging.DEBUG sims = [] for i in range(arg_handle.get_args('device_count')): dev_LOG = MyLogger('dev_sim_%d.log' % (i), clevel=log_level, flevel=log_level, fenable=True) if ipv4_list: id = i % len(ipv4_list) #self_addr = (ipv4_list[id], random.randint( #arg_handle.get_args('server_port'), 65535)) self_addr = (ipv4_list[id], 0) dev_LOG.warn('self addr is: %s' % (str(self_addr))) else: self_addr = None sim = Dev(logger=dev_LOG, config_file=arg_handle.get_args('config_file'), server_addr=(arg_handle.get_args('server_IP'), arg_handle.get_args('server_port')), N=arg_handle.get_args('xx') + i, tt=arg_handle.get_args('tt'), encrypt_flag=arg_handle.get_args('encrypt'), self_addr=self_addr) if self_addr: sim.set_item('_ip', self_addr[0]) sim.run_forever() sims.append(sim)
class Task(): def __init__(self, name='default-task', logger=None): self.tasks = {} self.lock = threading.RLock() if logger: self.LOG = logger else: self.LOG = MyLogger(name + '.log', clevel=logging.DEBUG) self.need_stop = False def stop(self): self.need_stop = True self.LOG.warn('Thread %s stoped!' % (__name__)) def add_task(self, name, func, run_times=1, interval=5, *argv): self.lock.acquire() if name and func and int(run_times) >= 1 and int(interval) >= 1: pass else: self.LOG.error("Invalid task: %s, run_times: %d, internal: %d" % (name, int(run_times), int(interval))) self.LOG.info("To add task: %s, run_times: %d, internal: %d" % (name, int(run_times), int(interval))) self.tasks[name] = { 'func': func, 'run_times': int(run_times), 'interval': int(interval), 'now_seconds': 0, 'argv': argv, 'state': 'active', 'name': name } self.lock.release() def del_task(self, name): self.lock.acquire() self.LOG.warn("To delete task:%s" % (name)) if name in self.tasks: del self.tasks[name] self.lock.release() def show_tasks(self): if self.tasks: for task in self.tasks: self.LOG.info(task + ":") for item in sorted(self.tasks[task]): self.LOG.yinfo(" " + item.ljust(20) + ':' + str(self.tasks[task][item]).rjust(20)) else: self.LOG.warn("No task...") def task_proc(self): while self.need_stop == False: if len(self.tasks) == 0: self.LOG.debug("No task!\n") ''' for task in self.tasks: if self.tasks[task]['state'] == 'inactive': self.del_task(task) ''' try: self.lock.acquire() for task in self.tasks: if self.tasks[task]['state'] != 'active': continue self.tasks[task]['now_seconds'] += 1 if self.tasks[task]['now_seconds'] >= self.tasks[task][ 'interval']: if callable(self.tasks[task]['func']): # self.LOG.info("It is time to run %s: " % ( # task) + self.tasks[task]['func'].__name__ + str(self.tasks[task]['argv'])) self.tasks[task]['func']( *(self.tasks[task]['argv'])) elif callable(eval(self.tasks[task]['func'])): # self.LOG.info("It is time to run %s: " % ( # task) + self.tasks[task]['func'] + str(self.tasks[task]['argv'])) eval(self.tasks[task]['func'] + '(*' + str(self.tasks[task]['argv']) + ')') else: self.LOG.error( "Uncallable task: %s, will disable it!") self.tasks[task]['state'] = 'inactive' self.tasks[task]['now_seconds'] = 0 self.tasks[task]['run_times'] -= 1 if self.tasks[task]['run_times'] == 0: self.LOG.info("stop task:%s" % (task)) self.tasks[task]['state'] = 'inactive' else: pass self.lock.release() time.sleep(0.1) except RuntimeError: pass
for item in app.msgst: if 'delaytime' in app.msgst[item]: if app.msgst[item]['delaytime'] > max_delay: max_delay = app.msgst[item]['delaytime'] if app.msgst[item]['delaytime'] < min_delay: min_delay = app.msgst[item]['delaytime'] total_delay += app.msgst[item]['delaytime'] else: pkg_lost += 1 pkg_lost_list.append(item) LOG.info('Total package: %d' % len(app.msgst)) if pkg_lost_list: LOG.error('Package with these ids have lost:') for i in pkg_lost_list: LOG.warn('%d' % i) LOG.error('Loss Rate: ' + "%.2f" % (pkg_lost * 100.0 / arg_handle.get_args('number_to_send')) + '%') LOG.info('MAX delay time: %dms' % max_delay) LOG.yinfo('MIN delay time: %dms' % min_delay) LOG.info('Average delay time(%d / %d): %.2fms' % (total_delay, (len(app.msgst) - pkg_lost), (total_delay + 0.0) / (len(app.msgst) - pkg_lost))) except KeyboardInterrupt: LOG.info('KeyboardInterrupt!') sys.exit() except Exception as e: LOG.error('something wrong!' + str(e))
global thread_list thread_list = [] device_type = arg_handle.get_args('device_type') device_cls = chr(ord(device_type.lower()[0]) - 32) + device_type.lower()[1:] Sim = eval(device_cls) #wifi_list = [('192.168.10.10',12345), ('192.168.10.13',12346), ('192.168.10.14',12347)] wifi_list = [('192.168.10.12', 12347)] mac_index = 0 for wk in wifi_list: try: mac_index += 1 newmac = arg_handle.get_args('mac') + str(mac_index) LOG.warn("mac:" + newmac + " bind IP:" + str(wk)) sim = Sim(logger=LOG, time_delay=arg_handle.get_args('time_delay'), mac=newmac, self_addr=wk) sim.run_forever() except Exception as e: LOG.error("bind rror:%s" % e) task_obj = Task('test-task', LOG) thread_list.append([task_obj.task_proc]) sys_proc() if arg_handle.get_args('debug'): dmsg = { "method": "dm_set",
i = 0 rs = [] for pic in all_pics * 10: if i >= arg_handle.get_args('count'): break LOG.debug('create info for pic: %s' % pic) r = copy.deepcopy(msg) with open(picpath + os.path.sep + pic, "rb") as f: pic_str = base64.b64encode(f.read()).decode('utf-8') pic_type = 'jpeg' id = '%04d' % i r["name"] = "小狗狗" + id r["idenNum"] = "21122319850606" + id r["phone"] = "1888885" + id r["fileName"] = r["name"] + '.jpg' r["facePicBase64"] = "data:image/" + \ pic_type + ';base64,' + pic_str r["fingerCode1"] = fingerCode_list[random.randint( 0, len(fingerCode_list) - 1)] i += 1 rs.append(r) LOG.warn('name: %s, picname: %s, fingerCode1: %s' % (r["name"], pic, r["fingerCode1"])) update_token() for r in rs: LOG.info('Insert user: %s' % r["name"]) send(url='http://%s:%s/scp-mdmapp/user/insertUser' % (arg_handle.get_args('server_IP'), arg_handle.get_args('server_port')), method='POST', payload=r) time.sleep(0.05)