def add_crash(self, node_id, crash): ''' 添加一条rabbitmq崩溃记录 :param crash: :return: ''' result = dict() if 'pid' not in crash or 'start_time' not in crash or 'crash_time' not in crash: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result crash_info = RmqCrash() crash_info.node_id = node_id crash_info.pid = crash['pid'] crash_info.start_time = crash['start_time'] crash_info.crash_time = crash['crash_time'] try: self.database.add(crash_info) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = crash_info.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_machine_stat(self, node_id, res): ''' 添加物理服务器统计记录 :param res: :return: ''' result = dict() if 'stat_time' not in res or 'cpu_usage' not in res or 'mem_usage' not in res or 'disk_free' not in res: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result try: stat = MachineStat() stat.node_id = node_id stat.stat_time = res['stat_time'] stat.cpu_usage = res['cpu_usage'] stat.mem_usage = res['mem_usage'] stat.mem_total = res['mem_total'] stat.disk_free = res['disk_free'] self.database.add(stat) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = stat.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_rmq_res_stat(self, node_id, res): ''' 添加一条rabbitmq资源使用统计 :param res: :return: ''' result = dict() if 'stat_time' not in res or 'cpu_usage' not in res or 'mem_usage' not in res or 'disk_spend' not in res or 'msg_summary' not in res: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result try: stat = RmqStat() stat.node_id = node_id stat.stat_time = res['stat_time'] stat.cpu_usage = res['cpu_usage'] stat.mem_usage = res['mem_usage'] stat.disk_spend = res['disk_spend'] stat.net_speed = res['net_speed'] stat.msg_summary = json.dumps(res['msg_summary']) self.database.add(stat) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = stat.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def __init__(self, learning_rate=0.1, iterations=1000, hidden_layer_neurons=100, output_layer_neurons=1, weight_hidden_layer=None, weight_output_layer=None, bias_hidden_layer=None, bias_output_layer=None, gradient_threshold=5, rms_threshold=0.01): Error.__init__(self) self.X = None self.y = None self.learning_rate = learning_rate self.iterations = iterations self.hidden_layer_neurons = hidden_layer_neurons self.output_layer_neurons = output_layer_neurons self.input_layer_neurons = None if weight_hidden_layer is None and self.input_layer_neurons is not None: self.weight_hidden_layer = np.random.uniform( size=(self.input_layer_neurons, self.hidden_layer_neurons)) else: self.weight_hidden_layer = weight_hidden_layer if bias_hidden_layer is None: self.bias_hidden_layer = np.random.uniform( size=(1, self.hidden_layer_neurons)) else: self.bias_hidden_layer = bias_hidden_layer if weight_output_layer is None: self.weight_output_layer = np.random.uniform( size=(self.hidden_layer_neurons, self.output_layer_neurons)) else: self.weight_output_layer = weight_output_layer if bias_output_layer is None: self.bias_output_layer = np.random.uniform( size=(1, self.output_layer_neurons)) else: self.bias_output_layer = bias_output_layer self.output = None self.hidden_layer_activations = None self.gradient_threshold = gradient_threshold self.Error = None self.rms_threshold = rms_threshold self.rms_error = None self.gradient_norm = [] self.multi_weight_matrix = None self.weight_multiclass = [] self.min_gradient_norm = None self.min_weight_matrix = None
def add_task(self, task): ''' 创建测试任务 :param task: :return: ''' result = dict() if 'name' not in task or 'key' not in task or 'type' not in task or 'start_time' not in task or 'params' not in task: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result # 先检查任务是否存在 try: find_task = self.database.query(OrmTask).filter_by( name=task['name']).first() # key不同,说明不是子任务,属于重复添加 if find_task != None and find_task.key != task['key']: result['errno'] = -1 result['errstr'] = Error.task_exists() return result # key相同,说明是子任务,不需要再添加,返回成功 if find_task != None and find_task.key == task['key']: result['errno'] = 0 result['task_id'] = find_task.id result['errstr'] = Error.success() return result except Exception as err: print(err) result['errno'] = -1 result['errstr'] = str(err) return result # 任务不存在,添加 db_task = OrmTask() db_task.name = task['name'] db_task.key = task['key'] db_task.type = task['type'] db_task.start_time = task['start_time'] db_task.params = task['params'] try: self.database.add(db_task) self.database.commit() result['errno'] = 0 result['id'] = db_task.id result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def __init__(self, num_vars, rSet=None): ''' Constructor ''' if rSet == None: self.rSet = [] else: self.rSet = list(Set(rSet)) is_valid_set = True for x in self.rSet: if not (x >=0 and x < self.num_vars): is_valid_set = False break if (not is_valid_set): Error.error("Invalid Reset Set" + str(self.rSet))
def get_machine_stats(self, node_id, time_from, time_to): ''' 获取节点物理服务器统计数据 :param node_id: :param time_from: :param time_to: :return: ''' result = dict() try: objs = self.database.query(MachineStat).filter(MachineStat.node_id == node_id) \ .filter(and_(MachineStat.stat_time >= time_from, MachineStat.stat_time < time_to)) \ .order_by(MachineStat.stat_time.asc()).all() ret = [] for obj in objs: ret.append(obj._asdict()) result['errno'] = 0 result['errstr'] = Error.success() result['result'] = ret except Exception as err: traceback.print_stack() result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_error(self, code, custom_message=""): """ Description: Adds an error message into the queue_error, that will Params: code (int): The code of the error code that will be triggered custom_message (str): The extra message that will be added. Optional param. Return: """ error = Error(code, custom_message) self.queue_error.append(error) self.error_cont = self.error_cont + 1
def get_node_name(self, node_id): ''' 获取节点名 :param node_id: :return: ''' result = dict() try: name = self.database.query(Node).filter(Node.id == node_id).first() if name == None: result['errno'] = -1 result['errstr'] = Error.data_not_in_db() else: result['errno'] = 0 result['errstr'] = Error.success() result['name'] = name.name except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def get_task(self, task_id): ''' 获取测试任务详情 :param task_id: :return: ''' result = dict() try: task = self.database.query(OrmTask).filter( OrmTask.id == task_id).first() if not task: self.set_status(404, Error.task_not_exists()) result['errno'] = -1 result['errstr'] = Error.task_not_exists() if task: result['errno'] = 0 result['errstr'] = Error.success() result['result'] = task._asdict() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def __init__(self, num_vars, flow_vector, name=None): ''' Constructor ''' if (num_vars != len(flow_vector)): Error.error("Mismatch between dimensions of flow_vector and num_vars ") self.index = Mode.__modeindex__ Mode.__modeindex__ = Mode.__modeindex__ + 1 self.num_vars = num_vars self.flow_vector = flow_vector if name is None: self.name = 'm' + self.index else: self.name = name self.invariant = None self.from_neighbor_list = [] self.to_neighbor_list = [] self.neighbor_list = [] self.in_transition_list = [] self.out_transition_list = [] self.transition_list = []
def clear_crashes(self, node_id): ''' 清空崩溃记录 :return: ''' result = dict() try: self.database.query(RmqCrash).filter(RmqCrash.node_id == node_id).delete() self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def delete_node(self, node_id): ''' 删除rabbitmq节点 :param node_id: :return: ''' result = dict() try: self.database.query(Node).filter(Node.id == node_id).delete() self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def delete_machine_stats(self, node_id): ''' 删除节点物理服务器统计数据 :param node_id: :return: ''' result = dict() try: self.database.query(MachineStat).filter(MachineStat.node_id == node_id).delete() self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def delete_task_seqs(self, task_id): ''' 删除任务统计序列 :param task_id: :return: ''' result = dict() try: self.database.query(TaskSeq).filter( TaskSeq.task_id == task_id).delete() self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def get_nodes(self): ''' 获取节点列表 :return: ''' result = dict() try: nodes = [] objs = self.database.query(Node).all() for obj in objs: nodes.append(obj._asdict()) result['errno'] = 0 result['errstr'] = Error.success() result['result'] = nodes except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def get_crashes(self, node_id): ''' 获取全部崩溃记录 :return: ''' result = dict() try: crashes = [] ret = self.database.query(RmqCrash).filter(RmqCrash.node_id == node_id).order_by(RmqCrash.crash_time.desc()).all() for item in ret: crashes.append(item._asdict()) result['errno'] = 0 result['errstr'] = Error.success() result['result'] = crashes except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def add_node(self, node_name): ''' 添加rabbitmq节点 :param node_name: :return: ''' result = dict() try: node = Node() node.name = node_name self.database.add(node) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() result['id'] = node.id except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def get_task_seqs(self, task_id): ''' 获取任务的全部指标统计序列 :param task_id: :return: ''' result = dict() try: seqs = self.database.query(TaskSeq).filter( TaskSeq.task_id == task_id).order_by( TaskSeq.stat_time.asc()).all() items = [] for seq in seqs: items.append(seq._asdict()) result['errno'] = 0 result['errstr'] = Error.success() result['result'] = items except Exception as err: result['errno'] = -1 result['errstr'] = str(err) finally: return result
def get_tasks(self): ''' 获取测试任务列表 :return: ''' result = dict() try: tasks = self.database.query(OrmTask).order_by( OrmTask.start_time.desc()).all() task_list = [] for task in tasks: dict_task = task._asdict() task_list.append(dict_task) result['errno'] = 0 result['errstr'] = Error.success() result['result'] = task_list except Exception as err: print(err) result['errno'] = -1 result['errstr'] = str(err) finally: return result
def check_dim_static(n1, n2): if(n1 != n2): Error.error("Dimension mismatch")
def add_task_seq(self, task_id, seq): ''' 添加任务指标统计序列 :param seq: :return: ''' result = dict() # 如果不存在统计时间,则参数错误 if seq['stat_time'] == None: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result # 生产者消费者在同一个进程情况 if 'sent' in seq and 'received' in seq: try: task_seq = TaskSeq() task_seq.task_id = task_id task_seq.stat_time = seq['stat_time'] task_seq.sent = seq['sent'] task_seq.received = seq['received'] task_seq.latency_min = seq['latency_min'] task_seq.latency_median = seq['latency_median'] task_seq.latency_75th = seq['latency_75th'] task_seq.latency_95th = seq['latency_95th'] task_seq.latency_99th = seq['latency_99th'] self.database.add(task_seq) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) # 生产者消费者分离模式下的生产者 elif 'sent' in seq and 'received' not in seq: sql = 'insert into task_seq(task_id,stat_time,sent) values(%s,%d,%d) ON DUPLICATE KEY UPDATE sent=sent+%d' % \ (task_id, int(seq['stat_time']), seq['sent'], seq['sent']) try: self.database.execute(sql) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) # 分离模式下的消费者上报数据 elif 'sent' not in seq and 'received' in seq: sql = 'insert into task_seq(task_id,stat_time,received,latency_min,latency_median,latency_75th,latency_95th,latency_99th) ' \ 'values(%s,%d,%d,%d,%d,%d,%d,%d) ON DUPLICATE KEY UPDATE received=received+%d,latency_min=%d,latency_median=%d,latency_75th=%d,' \ 'latency_95th=%d,latency_99th=%d'% \ (task_id, int(seq['stat_time']), seq['received'], seq['latency_min'], seq['latency_median'], seq['latency_75th'], seq['latency_95th'], seq['latency_99th'], \ seq['received'], seq['latency_min'], seq['latency_median'], seq['latency_75th'], seq['latency_95th'], seq['latency_99th']) try: self.database.execute(sql) self.database.commit() result['errno'] = 0 result['errstr'] = Error.success() except Exception as err: result['errno'] = -1 result['errstr'] = str(err) else: result['errno'] = -1 result['errstr'] = Error.params_fields_not_found() return result
def check_dim(self, n): '''Constraint.check_dim_static(self.num_vars, n)''' if(self.num_vars != n): Error.error("Dimension mismatch")