本文整理汇总了Python中suite_random.suite_random函数的典型用法代码示例。如果您正苦于以下问题:Python suite_random函数的具体用法?Python suite_random怎么用?Python suite_random使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了suite_random函数的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: prune_scenarios
def prune_scenarios(scenes, count=-1):
"""
Use listed probabilities for pruning the list of scenarios.
That is, the highest probability (value of P in the scendario)
are chosen more often. With a second argument, only the
given number of scenarios are returned. With no second argument,
only scenarios with P > .5 are returned half the time, etc.
"""
r = suite_random.suite_random()
result = []
if count == -1:
# Missing second arg - return those with P == .3 at
# 30% probability, for example.
for scene in scenes:
if "P" in scene[1]:
p = scene[1]["P"]
if p < r.rand_float():
continue
result.append(scene)
return result
else:
# With second arg, we want exactly 'count' items
# returned. So we'll sort them all and choose
# the top number. Not the most efficient solution,
# but it's easy.
for scene in scenes:
scene[1]["_rand"] = r.rand_float()
scenes = sorted(scenes, key=prune_sorter_key)
for scene in scenes:
del scene[1]["_rand"]
l = len(scenes)
return scenes[l - count : l]
开发者ID:zhliu03,项目名称:wiredtiger,代码行数:32,代码来源:wtscenario.py
示例2: columns_for_groups
def columns_for_groups(self, collist):
totalgroups = len(self.cglist)
ncolumns = len(collist)
rand = suite_random.suite_random(ncolumns, totalgroups)
# Each columngroup must have at least one column, so
# the only choice about distribution is with the
# excess columns.
excess = ncolumns - totalgroups
if excess < 0:
raise ValueError('columns_for_groups expects a column list (len=' + str(ncolumns) + ') larger than column group list (len=' + str(totalgroups) + ')')
# Initially, all groups get column from the collist
for cg in self.cglist:
(colno, collist) = extract_random_from_list(rand, collist)
cg.columns.append(colno)
# Then divy up remainder in the collist
for i in range(0, excess):
pos = rand.rand_range(0, totalgroups)
cg = self.cglist[pos]
(colno, collist) = extract_random_from_list(rand, collist)
cg.columns.append(colno)
# collist should be emptied
if len(collist) != 0:
raise AssertionError('column list did not get emptied')
开发者ID:RolfAndreassen,项目名称:wiredtiger,代码行数:27,代码来源:test_schema03.py
示例3: columns_for_indices
def columns_for_indices(self, collist):
totalindices = len(self.idxlist)
ncolumns = len(collist)
startcol = 0
# KNOWN LIMITATION: Indices should not include primary keys
# Remove this statement when the limitation is fixed.
#startcol = self.nkeys
# END KNOWN LIMITATION.
rand = suite_random.suite_random(ncolumns, totalindices)
# Initially, all indices get one column from the collist.
# Overlaps are allowed. Then probalistically, add some
# more columns.
for idx in self.idxlist:
prob = 1.0
for i in range(0, ncolumns - startcol):
if rand.rand_float() > prob:
break
colno = collist[rand.rand_range(startcol, ncolumns)]
if not any(x == colno for x in idx.columns):
idx.columns.append(colno)
if colno < self.nkeys:
# ASSUME: each format is 1 char
idx.formats += self.keyformats[colno]
else:
# ASSUME: each format is 1 char
idx.formats += self.valueformats[colno - self.nkeys]
prob *= 0.5
开发者ID:RolfAndreassen,项目名称:wiredtiger,代码行数:30,代码来源:test_schema03.py
示例4: prune_scenarios
def prune_scenarios(scenes, default_count = -1, long_count = -1):
"""
Use listed probabilities for pruning the list of scenarios.
That is, the highest probability (value of P in the scendario)
are chosen more often. With just one argument, only scenarios
with P > .5 are returned half the time, etc. A second argument
limits the number of scenarios. When a third argument is present,
it is a separate limit for a long run.
"""
global _is_long_run
r = suite_random.suite_random()
result = []
if default_count == -1:
# Missing second arg - return those with P == .3 at
# 30% probability, for example.
for scene in scenes:
if 'P' in scene[1]:
p = scene[1]['P']
if p < r.rand_float():
continue
result.append(scene)
return result
else:
# With at least a second arg present, we'll want a specific count
# of items returned. So we'll sort them all and choose
# the top number. Not the most efficient solution,
# but it's easy.
if _is_long_run and long_count != -1:
count = long_count
else:
count = default_count
l = len(scenes)
if l <= count:
return scenes
if count == 0:
return []
order = 0
for scene in scenes:
scene[1]['_rand'] = r.rand_float()
scene[1]['_order'] = order
order += 1
scenes = sorted(scenes, key=prune_sorter_key) # random sort driven by P
scenes = scenes[l-count:l] # truncate to get best
scenes = sorted(scenes, key=prune_resort_key) # original order
for scene in scenes:
del scene[1]['_rand']
del scene[1]['_order']
return check_scenarios(scenes)
开发者ID:GYGit,项目名称:mongo,代码行数:49,代码来源:wtscenario.py
示例5: test_cursor_big
def test_cursor_big(self):
rand = suite_random()
uri_map = self.create_uri_map(self.uri)
self.cursor_stats_init()
begin_stats = self.caching_stats()
#self.tty('stats before = ' + str(begin_stats))
# At this point, we'll randomly open/close lots of cursors, keeping
# track of how many of each. As long as we don't have more than [deep]
# cursors open for each uri, we should always be taking then from
# the set of cached cursors.
while self.opencount < self.nopens:
self.open_or_close(uri_map, rand, 0, self.nuris)
end_stats = self.caching_stats()
#self.tty('opens = ' + str(self.opencount) + \
# ', closes = ' + str(self.closecount))
#self.tty('stats after = ' + str(end_stats))
self.assertEquals(end_stats[0] - begin_stats[0], self.closecount)
self.assertEquals(end_stats[1] - begin_stats[1], self.opencount)
开发者ID:mongodb,项目名称:mongo,代码行数:21,代码来源:test_cursor13.py
示例6: reinit_joinconfig
def reinit_joinconfig(self):
self.rand = suite_random.suite_random(self.seed)
self.seed += 1
开发者ID:mongodb,项目名称:mongo,代码行数:3,代码来源:test_join02.py
示例7: test_schema
def test_schema(self):
rand = suite_random.suite_random()
if self.SHOW_PYTHON:
print ' ################################################'
print ' # Running scenario ' + str(self.scenario_number)
ntables = self.s_ntable
# Report known limitations in the test,
# we'll work around these later, in a loop where we don't want to print.
self.KNOWN_LIMITATION('Indices created after data population will have no entries')
self.KNOWN_LIMITATION('Column groups created after indices confuses things')
# Column groups are created in two different times.
# We call these two batches 'createsets'.
# So we don't have the exactly the same number of column groups
# for each table, for tests that indicate >1 colgroup, we
# increase the number of column groups for each table
tabconfigs = []
for i in range(0, ntables):
self.current_table = i
tc = tabconfig()
tc.tablename = 't' + str(i)
tc.tableidx = i
tabconfigs.append(tc)
for createset in range(0, 2):
ncg = self.s_colgroup[createset]
if ncg > 1:
ncg += i
for k in range(0, ncg):
thiscg = cgconfig()
thiscg.createset = createset
# KNOWN LIMITATION: Column groups created after
# indices confuses things. So for now, put all
# column group creation in the first set.
# Remove this statement when the limitation is fixed.
thiscg.createset = 0
# END KNOWN LIMITATION
thiscg.cgname = 'g' + str(len(tc.cglist))
tc.cglist.append(thiscg)
# The same idea for indices, except that we create them in
# three sets
for createset in range(0, 3):
nindex = self.s_index[createset]
if nindex > 1:
nindex += i
for k in range(0, nindex):
thisidx = idxconfig()
thisidx.createset = createset
thisidx.idxname = 'i' + str(len(tc.idxlist))
thisidx.tab = tc
tc.idxlist.append(thisidx)
# We'll base the number of key/value columns
# loosely on the number of column groups and indices.
colgroups = len(tc.cglist)
indices = len(tc.idxlist)
nall = colgroups * 2 + indices
k = rand.rand_range(1, nall)
v = rand.rand_range(0, nall)
# we need at least one value per column group
if v < colgroups:
v = colgroups
tc.nkeys = k
tc.nvalues = v
tc.keyformats = self.gen_formats(rand, tc.nkeys, True)
tc.valueformats = self.gen_formats(rand, tc.nvalues, False)
# Simple naming (we'll test odd naming elsewhere):
# tables named 't0' --> 't<N>'
# within each table:
# columns named 'c0' --> 'c<N>'
# colgroups named 'g0' --> 'g<N>'
# indices named 'i0' --> 'i<N>'
config = ""
config += "key_format=" + tc.keyformats
config += ",value_format=" + tc.valueformats
config += ",columns=("
for j in range(0, tc.nkeys + tc.nvalues):
if j != 0:
config += ","
config += "c" + str(j)
config += "),colgroups=("
for j in range(0, len(tc.cglist)):
if j != 0:
config += ","
config += "g" + str(j)
config += ")"
config += self.s_extra_table_args
# indices are not declared here
self.show_python("self.session.create('table:" + tc.tablename + "', '" + config + "')")
self.session.create("table:" + tc.tablename, config)
tc.columns_for_groups(range(tc.nkeys, tc.nkeys + tc.nvalues))
#.........这里部分代码省略.........
开发者ID:RolfAndreassen,项目名称:wiredtiger,代码行数:101,代码来源:test_schema03.py
示例8: test_cursor_sweep
def test_cursor_sweep(self):
rand = suite_random()
uri_map = self.create_uri_map(self.uri)
self.cursor_stats_init()
begin_stats = self.caching_stats()
begin_sweep_stats = self.sweep_stats()
#self.tty('stats before = ' + str(begin_stats))
#self.tty('sweep stats before = ' + str(begin_sweep_stats))
potential_dead = 0
for round_cnt in range(0, self.rounds):
if round_cnt % 2 == 1:
# Close cursors in half of the range, and don't
# use them during this round, so they will be
# closed by sweep.
half = self.nuris // 2
potential_dead += self.close_uris(uri_map, list(range(0, half)))
bottom_range = half
# Let the dhandle sweep run and find the closed cursors.
time.sleep(3.0)
else:
bottom_range = 0
# The session cursor sweep runs at most once a second and
# traverses a fraction of the cached cursors. We'll run for
# ten seconds with pauses to make sure we see sweep activity.
pause_point = self.opens_per_round // 100
if pause_point == 0:
pause_point = 1
pause_duration = 0.1
i = 0
while self.opencount < (1 + round_cnt) * self.opens_per_round:
i += 1
if i % pause_point == 0:
time.sleep(pause_duration) # over time, let sweep run
self.open_or_close(uri_map, rand, bottom_range, self.nuris)
end_stats = self.caching_stats()
end_sweep_stats = self.sweep_stats()
#self.tty('opens = ' + str(self.opencount) + \
# ', closes = ' + str(self.closecount))
#self.tty('stats after = ' + str(end_stats))
#self.tty('sweep stats after = ' + str(end_sweep_stats))
self.assertEquals(end_stats[0] - begin_stats[0], self.closecount)
swept = end_sweep_stats[3] - begin_sweep_stats[3]
# Although this is subject to tuning parameters, we know that
# in an active session, we'll sweep through minimum of 1% of
# the cached cursors per second. We've set this test to run
# 5 rounds. In 2 of the 5 rounds (sandwiched between the others),
# some of the uris are allowed to close. So during the 'closing rounds'
# we'll sweep a minimum of 20% of the uri space, and in the other
# rounds we'll be referencing the closed uris again.
# We'll pass the test if we see at least 20% of the 'potentially
# dead' cursors swept. There may be more, since the 1% per second
# is a minimum.
min_swept = 2 * potential_dead // 10
self.assertGreaterEqual(swept, min_swept)
# No strict equality test for the reopen stats. When we've swept
# some closed cursors, we'll have fewer reopens. It's different
# by approximately the number of swept cursors, but it's less
# predictable.
self.assertGreater(end_stats[1] - begin_stats[1], 0)
开发者ID:mongodb,项目名称:mongo,代码行数:68,代码来源:test_cursor13.py
注:本文中的suite_random.suite_random函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论