本文整理汇总了Python中rangelib.RangeSet.parse_raw方法的典型用法代码示例。如果您正苦于以下问题:Python RangeSet.parse_raw方法的具体用法?Python RangeSet.parse_raw怎么用?Python RangeSet.parse_raw使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rangelib.RangeSet
的用法示例。
在下文中一共展示了RangeSet.parse_raw方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_parse_raw
# 需要导入模块: from rangelib import RangeSet [as 别名]
# 或者: from rangelib.RangeSet import parse_raw [as 别名]
def test_parse_raw(self):
self.assertEqual(
RangeSet.parse_raw(RangeSet("0-9").to_string_raw()),
RangeSet("0-9"))
self.assertEqual(RangeSet.parse_raw(
RangeSet("2-10 12").to_string_raw()),
RangeSet("2-10 12"))
self.assertEqual(
RangeSet.parse_raw(RangeSet("11 2-10 12 1 0").to_string_raw()),
RangeSet("11 2-10 12 1 0"))
with self.assertRaises(AssertionError):
RangeSet.parse_raw("4,0,10")
示例2: ParseTransferList
# 需要导入模块: from rangelib import RangeSet [as 别名]
# 或者: from rangelib.RangeSet import parse_raw [as 别名]
def ParseTransferList(self, name):
"""Simulate the transfer commands and calculate the amout of I/O."""
logging.info("\nSimulating commands in '{}':".format(name))
lines = self.package.read(name).strip().splitlines()
assert len(lines) >= 4, "{} is too short; Transfer list expects at least" \
"4 lines, it has {}".format(name, len(lines))
assert int(lines[0]) >= 3
logging.info("(version: {})".format(lines[0]))
blocks_written = 0
my_stash = Stash()
for line in lines[4:]:
cmd_list = line.strip().split(" ")
cmd_name = cmd_list[0]
try:
if cmd_name == "new" or cmd_name == "zero":
assert len(cmd_list) == 2, "command format error: {}".format(line)
target_range = RangeSet.parse_raw(cmd_list[1])
blocks_written += target_range.size()
elif cmd_name == "move":
# Example: move <onehash> <tgt_range> <src_blk_count> <src_range>
# [<loc_range> <stashed_blocks>]
assert len(cmd_list) >= 5, "command format error: {}".format(line)
target_range = RangeSet.parse_raw(cmd_list[2])
blocks_written += target_range.size()
if cmd_list[4] == '-':
continue
SHA1 = cmd_list[1]
source_range = RangeSet.parse_raw(cmd_list[4])
if target_range.overlaps(source_range):
my_stash.HandleOverlapBlocks(SHA1, source_range)
elif cmd_name == "bsdiff" or cmd_name == "imgdiff":
# Example: bsdiff <offset> <len> <src_hash> <tgt_hash> <tgt_range>
# <src_blk_count> <src_range> [<loc_range> <stashed_blocks>]
assert len(cmd_list) >= 8, "command format error: {}".format(line)
target_range = RangeSet.parse_raw(cmd_list[5])
blocks_written += target_range.size()
if cmd_list[7] == '-':
continue
source_SHA1 = cmd_list[3]
source_range = RangeSet.parse_raw(cmd_list[7])
if target_range.overlaps(source_range):
my_stash.HandleOverlapBlocks(source_SHA1, source_range)
elif cmd_name == "stash":
assert len(cmd_list) == 3, "command format error: {}".format(line)
SHA1 = cmd_list[1]
source_range = RangeSet.parse_raw(cmd_list[2])
my_stash.StashBlocks(SHA1, source_range)
elif cmd_name == "free":
assert len(cmd_list) == 2, "command format error: {}".format(line)
SHA1 = cmd_list[1]
my_stash.FreeBlocks(SHA1)
except:
logging.error("failed to parse command in: " + line)
raise
self.block_written += blocks_written
self.block_stashed += my_stash.blocks_stashed
logging.info("blocks written: {} (expected: {})".format(
blocks_written, lines[1]))
logging.info("max blocks stashed simultaneously: {} (expected: {})".
format(my_stash.max_stash_needed, lines[3]))
logging.info("total blocks stashed: {}".format(my_stash.blocks_stashed))
logging.info("blocks stashed implicitly: {}".format(
my_stash.overlap_blocks_stashed))