def dump(self): """Write the repo statistics to stdout.""" hfmt = "%-21s %-6s %-4s %-4s %-8s %-10s %-5s %-7s %-4s" dfmt = "%-21s %-6s %-4s %-4s %-8s %-10s %-5s %-6f %-4s" misc.msg(hfmt % ("URL", "Good", "Err", "Conn", "Speed", "Size", "Used", "CSpeed", "Qual")) for ds in self.__rsobj.values(): speedstr = misc.bytes_to_str(ds.transfer_speed, "%(num).0f %(unit)s/s") sizestr = misc.bytes_to_str(ds.bytes_xfr) url_tup = urlparse.urlsplit(ds.url) res_path = url_tup[1] if not res_path: # Some schemes don't have a netloc. res_path = url_tup[2] misc.msg(dfmt % (res_path, ds.success, ds.failures, ds.num_connect, speedstr, sizestr, ds.used, ds.connect_time, ds.quality))
def dump(self): """Write the repo statistics to stdout.""" hfmt = "{0:41.41} {1:30} {2:6} {3:4} {4:4} {5:8} {6:10} {7:5} {8:7} {9:4}" dfmt = "{0:41.41} {1:30} {2:6} {3:4} {4:4} {5:8} {6:10} {7:5} {8:6f} {9:4}" misc.msg(hfmt.format("URL", "Proxy", "Good", "Err", "Conn", "Speed", "Size", "Used", "CSpeed", "Qual")) for ds in self.__rsobj.values(): speedstr = misc.bytes_to_str(ds.transfer_speed, "{num:>.0f} {unit}/s") sizestr = misc.bytes_to_str(ds.bytes_xfr) proxy = self.__get_proxy(ds) misc.msg(dfmt.format(ds.url, proxy, ds.success, ds.failures, ds.num_connect, speedstr, sizestr, ds.used, ds.connect_time, ds.quality))
def dump(self): """Write the repo statistics to stdout.""" hfmt = "%-41.41s %-30s %-6s %-4s %-4s %-8s %-10s %-5s %-7s %-4s" dfmt = "%-41.41s %-30s %-6s %-4s %-4s %-8s %-10s %-5s %-6f %-4s" misc.msg(hfmt % ("URL", "Proxy", "Good", "Err", "Conn", "Speed", "Size", "Used", "CSpeed", "Qual")) for ds in self.__rsobj.values(): speedstr = misc.bytes_to_str(ds.transfer_speed, "%(num).0f %(unit)s/s") sizestr = misc.bytes_to_str(ds.bytes_xfr) proxy = self.__get_proxy(ds) misc.msg(dfmt % (ds.url, proxy, ds.success, ds.failures, ds.num_connect, speedstr, sizestr, ds.used, ds.connect_time, ds.quality))
def dump(self): """Write the repo statistics to stdout.""" fmt = "%-30s %-8s %-8s %-12s %-4s %-4s" print fmt % ("URL", "Good Tx", "Errors", "Speed", "Prio", "Used") for ds in self.__rsobj.values(): speedstr = misc.bytes_to_str(ds.transfer_speed, "%(num).0f %(unit)s/sec") print fmt % (ds.url, ds.success, ds.failures, speedstr, ds.priority, ds.used)
def set_package_details(pkg_name, local_info, remote_info, textview, installed_icon, not_installed_icon, update_available_icon, is_all_publishers_installed=None, pubs_info=None, renamed_info=None, pkg_renamed=False): installed = True has_remote = True if not local_info: # Package is not installed local_info = remote_info installed = False if not remote_info: remote_info = local_info has_remote = False installed = True labs = {} labs["name"] = _("Name:") labs["summ"] = _("Summary:") labs["desc"] = _("Description:") labs["size"] = _("Size:") labs["cat"] = _("Category:") labs["ins"] = _("Installed:") labs["available"] = _("Version Available:") labs["renamed_to"] = _("Renamed To:") labs["lat"] = _("Latest Version:") labs["repository"] = _("Publisher:") summary = _("None") if local_info.summary: summary = local_info.summary description = "" if local_info.description: description = local_info.description obsolete_str = "" text = {} text["name"] = pkg_name text["summ"] = summary text["desc"] = description renamed_to = "" if renamed_info != None and \ len(renamed_info.dependencies) > 0: renamed_pkgs = [] for dep in renamed_info.dependencies: if dep.startswith('pkg:/'): dep_strs = dep.split('/', 1) dep = dep_strs[1] renamed_pkgs.append(dep) renamed_to += renamed_pkgs[0] + "\n" for dep in renamed_pkgs[1:]: renamed_to += "\t" + dep + "\n" text["renamed_to"] = renamed_to if installed: if api.PackageInfo.OBSOLETE in local_info.states: obsolete_str = _(" (Obsolete)") ver_text = _("%(version)s (Build %(build)s-%(branch)s)") text["ins"] = ver_text % \ {"version": local_info.version, "build": local_info.build_release, "branch": local_info.branch} text["ins"] += obsolete_str labs["available"] = _("Latest Version:") if not same_pkg_versions(local_info, remote_info): text["available"] = ver_text % \ {"version": remote_info.version, "build": remote_info.build_release, "branch": remote_info.branch} elif has_remote: text["available"] = _("Not available from this publisher") else: text["available"] = "No" else: if api.PackageInfo.OBSOLETE in remote_info.states: obsolete_str = _(" (Obsolete)") text["ins"] = _("No") text["ins"] += obsolete_str labs["available"] = _("Latest Version:") text["available"] = _( "%(version)s (Build %(build)s-%(branch)s)") % \ {"version": remote_info.version, "build": remote_info.build_release, "branch": remote_info.branch} if local_info.size != 0: text["size"] = misc.bytes_to_str(local_info.size) else: text["size"] = "0" categories = _("None") if local_info.category_info_list: verbose = len(local_info.category_info_list) > 1 categories = "" categories += local_info.category_info_list[0].__str__(verbose) if len(local_info.category_info_list) > 1: for ci in local_info.category_info_list[1:]: categories += ", " + ci.__str__(verbose) text["cat"] = categories pub_name = local_info.publisher if pubs_info != None: try: item = pubs_info[local_info.publisher] except KeyError: item = None if item: alias = item[1] if alias != None and len(alias) > 0: pub_name = "%s (%s)" % (alias, local_info.publisher) text["repository"] = pub_name # pubs_info: dict of publisher disabled status and aliases: # pub_info[pub_name][0] = True disabled or False enabled # pub_info[pub_name][1] = Alias if is_all_publishers_installed and pubs_info != None: if local_info.publisher in pubs_info: if pubs_info[local_info.publisher][0]: text["repository"] = pub_name + \ _(" (disabled)") else: text["repository"] = pub_name + _(" (removed)") set_package_details_text(labs, text, textview, installed_icon, not_installed_icon, update_available_icon, pkg_renamed) return (labs, text)
def test_info(self): """Testing information showed in /info/0.""" depot_url = self.dc.get_depot_url() plist = self.pkgsend_bulk(depot_url, self.info20) openurl = urlparse.urljoin(depot_url, "info/0/{0}".format(plist[0])) content = urllib2.urlopen(openurl).read() # Get text from content. lines = content.splitlines() info_dic = {} attr_list = [ 'Name', 'Summary', 'Publisher', 'Version', 'Build Release', 'Branch', 'Packaging Date', 'Size', 'Compressed Size', 'FMRI' ] for line in lines: fields = line.split(":", 1) attr = fields[0].strip() if attr == "License": break if attr in attr_list: if len(fields) == 2: info_dic[attr] = fields[1].strip() else: info_dic[attr] = "" # Read manifest. openurl = urlparse.urljoin(depot_url, "manifest/0/{0}".format(plist[0])) content = urllib2.urlopen(openurl).read() manifest = man.Manifest() manifest.set_content(content=content) fmri_content = manifest.get("pkg.fmri", "") # Check if FMRI is empty. self.assert_(fmri_content) pfmri = fmri.PkgFmri(fmri_content, None) pub, name, ver = pfmri.tuple() size, csize = manifest.get_size() # Human version. version = info_dic['Version'] hum_ver = "" if '(' in version: start = version.find('(') end = version.rfind(')') hum_ver = version[start + 1:end - len(version)] version = version[:start - len(version)] info_dic['Version'] = version.strip() # Compare each attribute. self.assertEqual( info_dic["Summary"], manifest.get("pkg.summary", manifest.get("description", ""))) self.assertEqual(info_dic["Version"], str(ver.release)) self.assertEqual(hum_ver, manifest.get("pkg.human-version", "")) self.assertEqual(info_dic["Name"], name) self.assertEqual(info_dic["Publisher"], pub) self.assertEqual(info_dic["Build Release"], str(ver.build_release)) timestamp = datetime.datetime.strptime(info_dic["Packaging Date"], "%a %b %d %H:%M:%S %Y") self.assertEqual(timestamp, ver.get_timestamp()) self.assertEqual(info_dic["Size"], misc.bytes_to_str(size)) self.assertEqual(info_dic["Compressed Size"], misc.bytes_to_str(csize)) self.assertEqual(info_dic["FMRI"], fmri_content)
def set_package_details(pkg_name, local_info, remote_info, textview, installed_icon, not_installed_icon, update_available_icon, is_all_publishers_installed=None, pubs_info=None, renamed_info=None, pkg_renamed = False): installed = True has_remote = True if not local_info: # Package is not installed local_info = remote_info installed = False if not remote_info: remote_info = local_info has_remote = False installed = True labs = {} labs["name"] = _("Name:") labs["summ"] = _("Summary:") labs["desc"] = _("Description:") labs["size"] = _("Size:") labs["cat"] = _("Category:") labs["ins"] = _("Installed:") labs["available"] = _("Version Available:") labs["renamed_to"] = _("Renamed To:") labs["lat"] = _("Latest Version:") labs["repository"] = _("Publisher:") summary = _("None") if local_info.summary: summary = local_info.summary description = "" if local_info.description: description = local_info.description obsolete_str = "" text = {} text["name"] = pkg_name text["summ"] = summary text["desc"] = description renamed_to = "" if renamed_info != None and \ len(renamed_info.dependencies) > 0: renamed_pkgs = [] for dep in renamed_info.dependencies: if dep.startswith('pkg:/'): dep_strs = dep.split('/', 1) dep = dep_strs[1] renamed_pkgs.append(dep) renamed_to += renamed_pkgs[0] + "\n" for dep in renamed_pkgs[1:]: renamed_to += "\t" + dep + "\n" text["renamed_to"] = renamed_to if installed: if api.PackageInfo.OBSOLETE in local_info.states: obsolete_str = _(" (Obsolete)") ver_text = _("%(version)s (Build %(build)s-%(branch)s)") text["ins"] = ver_text % \ {"version": local_info.version, "build": local_info.build_release, "branch": local_info.branch} text["ins"] += obsolete_str labs["available"] = _("Latest Version:") if not same_pkg_versions(local_info, remote_info): text["available"] = ver_text % \ {"version": remote_info.version, "build": remote_info.build_release, "branch": remote_info.branch} elif has_remote: text["available"] = _("Not available from this publisher") else: text["available"] = "No" else: if api.PackageInfo.OBSOLETE in remote_info.states: obsolete_str = _(" (Obsolete)") text["ins"] = _("No") text["ins"] += obsolete_str labs["available"] = _("Latest Version:") text["available"] = _( "%(version)s (Build %(build)s-%(branch)s)") % \ {"version": remote_info.version, "build": remote_info.build_release, "branch": remote_info.branch} if local_info.size != 0: text["size"] = misc.bytes_to_str(local_info.size) else: text["size"] = "0" categories = _("None") if local_info.category_info_list: verbose = len(local_info.category_info_list) > 1 categories = "" categories += local_info.category_info_list[0].__str__(verbose) if len(local_info.category_info_list) > 1: for ci in local_info.category_info_list[1:]: categories += ", " + ci.__str__(verbose) text["cat"] = categories pub_name = local_info.publisher if pubs_info != None: try: item = pubs_info[local_info.publisher] except KeyError: item = None if item: alias = item[1] if alias != None and len(alias) > 0: pub_name = "%s (%s)" % ( alias, local_info.publisher) text["repository"] = pub_name # pubs_info: dict of publisher disabled status and aliases: # pub_info[pub_name][0] = True disabled or False enabled # pub_info[pub_name][1] = Alias if is_all_publishers_installed and pubs_info != None: if local_info.publisher in pubs_info: if pubs_info[local_info.publisher][0]: text["repository"] = pub_name + \ _(" (disabled)") else: text["repository"] = pub_name + _(" (removed)") set_package_details_text(labs, text, textview, installed_icon, not_installed_icon, update_available_icon, pkg_renamed) return (labs, text)