예제 #1
0
 def test_sizeof_fmt(self):
     sizeof_str = sizeof_fmt(12345678)
     sizeof_str_res = "12MiB"
     self.assertEqual(
         sizeof_str_res, sizeof_str,
         "wrong sizeof_fmt, expected: %s, got: '%s'" %
         (sizeof_str_res, sizeof_str))
예제 #2
0
 def _update_info_label(self, info=''):
     info_text = info
     vbar_value = self.textBrowser.verticalScrollBar().value()
     if not info_text:
         if vbar_value == 0:
             if self._seek_start == 0:
                 info_text = 'START'
             else:
                 info_text += "%d %%" % (self._seek_start * 100 /
                                         self._seek_end)
         elif vbar_value == self.textBrowser.verticalScrollBar().maximum():
             info_text = 'END'
         else:
             info_text = "%d / %d" % (
                 vbar_value / 20,
                 self.textBrowser.verticalScrollBar().maximum() / 20)
     self.infoLabel.setText(info_text + '\t%s / %s' %
                            (sizeof_fmt(self._seek_end - self._seek_start),
                             sizeof_fmt(self._seek_end)))
예제 #3
0
 def _log_dir_size(self, grpc_url='grpc://localhost:12321'):
     rospy.logdebug("get log_dir size on %s" % (grpc_url))
     try:
         uri, _ = nmdurl.split(grpc_url)
         sm = self.get_screen_manager(uri)
         log_dir_size = sm.log_dir_size()
         rospy.logdebug("log_dir size on %s: %s" %
                        (grpc_url, sizeof_fmt(log_dir_size)))
         self.log_dir_size_signal.emit(grpc_url, log_dir_size)
     except Exception as e:
         self.error.emit("log_dir_size", "grpc://%s" % uri, "", e)
     if hasattr(self, '_threads'):
         self._threads.finished("lds_%s" % grpc_url)
예제 #4
0
    def check_sensor(self):
        mem = psutil.virtual_memory()
        diag_level = 0
        diag_vals = []
        warn_on_mem = mem.total * (1.0 - self._mem_usage_warn)
        diag_msg = 'warn at >%s%% (<%s)' % (self._mem_usage_warn * 100., sizeof_fmt(warn_on_mem))
        warn_level = warn_on_mem
        if diag_level == DiagnosticStatus.WARN:
            warn_level = warn_level * 1.1
        if mem.total - mem.used <= warn_on_mem:
            diag_level = DiagnosticStatus.WARN
            diag_msg = 'Memory available %s (warn <%s)' % (sizeof_fmt(mem.total - mem.used), sizeof_fmt(warn_on_mem))
        # print "MEM available ", mem.available, diag_level
        diag_vals.append(KeyValue(key='Free', value=mem.total - mem.used))
        diag_vals.append(KeyValue(key='Free [%]', value='%.2f' % (float(mem.total - mem.used) * 100.0 / float(mem.total))))

        # Update status
        with self.mutex:
            self._ts_last = time.time()
            self._stat_msg.level = diag_level
            self._stat_msg.values = diag_vals
            self._stat_msg.message = diag_msg
예제 #5
0
    def check_sensor(self):
        diag_level = 0
        diag_vals = []
        diag_msg = ''
        try:
            hdd = psutil.disk_usage(self._path)
            diag_level = 0
            diag_vals = []
            warn_on_space = hdd.total * (1.0 - self._hdd_usage_warn)
            diag_msg = 'warn at >%s%% (<%s)' % (self._hdd_usage_warn * 100.,
                                                sizeof_fmt(warn_on_space))
            warn_level = warn_on_space
            if diag_level == DiagnosticStatus.WARN:
                warn_level = warn_level * 1.1
            if hdd.free <= warn_on_space:
                diag_level = DiagnosticStatus.WARN
                diag_msg = 'Free disk space on log path only %s (warn on <%s)' % (
                    sizeof_fmt(hdd.free), sizeof_fmt(warn_on_space))
            # print "Percent Disk %.2f" % (hdd.percent), diag_level
            diag_vals.append(KeyValue(key='Free', value=hdd.free))
            diag_vals.append(
                KeyValue(key='Free [%]', value='%.2f' % (100.0 - hdd.percent)))
            diag_vals.append(KeyValue(key='Path', value=self._path))
        except Exception as err:
            warn_level = DiagnosticStatus.WARN
            diag_msg = '%s' % err
            diag_vals.append(KeyValue(key='Free', value="---"))
            diag_vals.append(KeyValue(key='Free [%]', value="---"))
            diag_vals.append(KeyValue(key='Path', value=self._path))

        # Update status
        with self.mutex:
            self._ts_last = time.time()
            self._stat_msg.level = diag_level
            self._stat_msg.values = diag_vals
            self._stat_msg.message = diag_msg
예제 #6
0
 def _append_items(self, item, deep, items=[]):
     sub_items = []
     inc_item = None
     for inc_file in items:
         if inc_file.rec_depth == deep:
             if inc_item is not None:
                 if sub_items:
                     self._append_items(inc_item, deep + 1, sub_items)
                     sub_items = []
                 item.appendRow(inc_item)
                 inc_item = None
             if inc_item is None:
                 pkg, _ = package_name(os.path.dirname(inc_file.inc_path))
                 size_color = 'gray'
                 if inc_file.size == 0 or inc_file.size > 1000000:
                     size_color = 'orange'
                 itemstr = '%s   <span style="color:%s;"><em>%s</em></span>   [%s]' % (
                     os.path.basename(inc_file.inc_path), size_color,
                     sizeof_fmt(inc_file.size), pkg)
                 inc_item = QStandardItem('%d: %s' %
                                          (inc_file.line_number, itemstr))
                 inc_item.setData(inc_file.path_or_str, self.DATA_FILE)
                 inc_item.setData(inc_file.line_number, self.DATA_LINE)
                 inc_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                 inc_item.setData(inc_file.rec_depth + 1, self.DATA_LEVEL)
                 inc_item.setData(inc_file.size, self.DATA_SIZE)
                 inc_item.setData(inc_file.raw_inc_path, self.DATA_RAW)
                 inc_item.setData(inc_file.args, self.DATA_ARGS)
         elif inc_file.rec_depth > deep:
             sub_items.append(inc_file)
     if inc_item is not None:
         if sub_items:
             self._append_items(inc_item, deep + 1, sub_items)
             sub_items = []
         item.appendRow(inc_item)
         inc_item = None
예제 #7
0
 def _append_items(self, item, deep, items=[]):
     sub_items = []
     inc_item = None
     for inc_file in items:
         if inc_file.rec_depth == deep:
             if inc_item is not None:
                 if sub_items:
                     self._append_items(inc_item, deep + 1, sub_items)
                     sub_items = []
                 item.appendRow(inc_item)
                 inc_item = None
             if inc_item is None:
                 pkg, _ = package_name(os.path.dirname(inc_file.inc_path))
                 size_color = 'gray'
                 if inc_file.size == 0 or inc_file.size > 1000000:
                     size_color = 'orange'
                 itemstr = '%s   <span style="color:%s;"><em>%s</em></span>   [%s]' % (os.path.basename(inc_file.inc_path), size_color, sizeof_fmt(inc_file.size), pkg)
                 inc_item = QStandardItem('%d: %s' % (inc_file.line_number, itemstr))
                 inc_item.setData(self.ITEM_TYPE_INC_FILE, self.ITEM_TYPE)
                 inc_item.setData(inc_file.path_or_str, self.DATA_FILE)
                 inc_item.setData(inc_file.line_number, self.DATA_LINE)
                 inc_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                 inc_item.setData(inc_file.rec_depth + 1, self.DATA_LEVEL)
                 inc_item.setData(inc_file.size, self.DATA_SIZE)
                 inc_item.setData(inc_file.raw_inc_path, self.DATA_RAW)
                 inc_item.setData(inc_file.args, self.DATA_ARGS)
                 inc_item.setData(inc_file.unset_default_args, self.DATA_DEF_ARGS_NOT_SET)
                 # add included arguments
                 if inc_file.unset_default_args or inc_file.args:
                     arg_item = QStandardItem('arguments')
                     arg_item.setData(self.ITEM_TYPE_INC_GROUP_ARG, self.ITEM_TYPE)
                     if inc_file.unset_default_args:
                         self.has_warnings = True
                         arg_item.setIcon(self._info_icon)
                         for da_name, da_value in inc_file.unset_default_args.items():
                             da_item = QStandardItem('<arg_not_set>%s: %s' % (da_name, da_value))
                             da_item.setData(self.ITEM_TYPE_INC_ARG, self.ITEM_TYPE)
                             da_item.setData(inc_file.path_or_str, self.DATA_FILE)
                             da_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                             da_item.setData(da_name, self.DATA_ARG_NAME)
                             da_item.setToolTip("This argument is definded as default, but no set while include.")
                             arg_item.appendRow(da_item)
                     if inc_file.args:
                         for da_name, da_value in inc_file.args.items():
                             da_item = QStandardItem('<arg>%s: %s' % (da_name, da_value))
                             da_item.setData(self.ITEM_TYPE_INC_ARG, self.ITEM_TYPE)
                             da_item.setData(inc_file.path_or_str, self.DATA_FILE)
                             da_item.setData(inc_file.inc_path, self.DATA_INC_FILE)
                             da_item.setData(da_name, self.DATA_ARG_NAME)
                             arg_item.appendRow(da_item)
                     inc_item.appendRow(arg_item)
         elif inc_file.rec_depth > deep:
             sub_items.append(inc_file)
     if inc_item is not None:
         if sub_items:
             self._append_items(inc_item, deep + 1, sub_items)
             sub_items = []
         item.appendRow(inc_item)
         inc_item = None