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))
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)))
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)
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
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
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
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