MCPcopy Create free account
hub / github.com/nodejs/node / _create_gen

Method _create_gen

deps/v8/tools/testrunner/testproc/fuzzer.py:250–289  ·  view source on GitHub ↗
(self, test, analysis_result=None)

Source from the content-addressed store, hash-verified

248 self._try_send_next_test(test)
249
250 def _create_gen(self, test, analysis_result=None):
251 # It will be called with analysis_result==None only when there is no
252 # analysis phase at all, so no fuzzer has it's own analyzer.
253 gens = []
254 indexes = []
255 for fuzzer_config in self._fuzzer_configs:
256 analysis_value = None
257 if analysis_result and fuzzer_config.analyzer:
258 analysis_value = fuzzer_config.analyzer.do_analysis(analysis_result)
259 if not analysis_value:
260 # Skip fuzzer for this test since it doesn't have analysis data
261 continue
262 p = fuzzer_config.probability
263 flag_gen = fuzzer_config.fuzzer.create_flags_generator(self._rng, test,
264 analysis_value)
265 indexes += [len(gens)] * p
266 gens.append((p, flag_gen))
267
268 if not gens:
269 # No fuzzers for this test, skip it
270 return
271
272 i = 0
273 while not self._count or i < self._count:
274 main_index = self._rng.choice(indexes)
275 _, main_gen = gens[main_index]
276
277 flags = random_extra_flags(self._rng) + next(main_gen)
278 for index, (p, gen) in enumerate(gens):
279 if index == main_index:
280 continue
281 if self._rng.randint(1, 10) <= p:
282 flags += next(gen)
283
284 flags.append('--fuzzer-random-seed=%s' % self._next_seed())
285
286 flags = _drop_contradictory_flags(flags, test.get_flags())
287 yield test.create_subtest(self, str(i), flags=flags)
288
289 i += 1
290
291 def _try_send_next_test(self, test):
292 for subtest in self._gens[test.procid]:

Callers 2

_next_testMethod · 0.95
_result_forMethod · 0.95

Calls 11

_next_seedMethod · 0.95
random_extra_flagsFunction · 0.85
strFunction · 0.85
get_flagsMethod · 0.80
nextFunction · 0.50
enumerateFunction · 0.50
do_analysisMethod · 0.45
appendMethod · 0.45
create_subtestMethod · 0.45

Tested by

no test coverage detected