Beispiel #1
0
 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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #5
0
    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
Beispiel #6
0
 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))
Beispiel #7
0
 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
Beispiel #8
0
 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
Beispiel #9
0
 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
Beispiel #10
0
 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
Beispiel #11
0
 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 = []
Beispiel #12
0
 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
Beispiel #13
0
 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
Beispiel #14
0
 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
Beispiel #15
0
 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
Beispiel #16
0
 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
Beispiel #17
0
 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
Beispiel #18
0
 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
Beispiel #19
0
 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
Beispiel #20
0
 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
Beispiel #21
0
 def check_dim_static(n1, n2):
     if(n1 != n2):
         Error.error("Dimension mismatch")
Beispiel #22
0
    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
Beispiel #23
0
 def check_dim(self, n):
     '''Constraint.check_dim_static(self.num_vars, n)'''
     if(self.num_vars != n):
         Error.error("Dimension mismatch")