Coverage for /pythoncovmergedfiles/medio/medio/src/onnx/onnx/fuzz/fuzz_version_converter.py: 60%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1###### Coverage stub
2import atexit
3import coverage
4cov = coverage.coverage(data_file='.coverage', cover_pylib=True)
5cov.start()
6# Register an exist handler that will print coverage
7def exit_handler():
8 cov.stop()
9 cov.save()
10atexit.register(exit_handler)
11####### End of coverage stub
12# Copyright (c) ONNX Project Contributors
13# SPDX-License-Identifier: Apache-2.0
15import sys
17import atheris
19with atheris.instrument_imports():
20 import onnx
21 from onnx import version_converter
24def _default_opset_version(model):
25 for opset in model.opset_import:
26 if opset.domain in ("", "ai.onnx"):
27 return opset.version
28 return None
31def _candidate_target_versions(model):
32 current = _default_opset_version(model)
33 latest = onnx.defs.onnx_opset_version()
34 if current is None:
35 return [latest]
37 targets = []
38 if current > 1:
39 targets.append(current - 1)
40 if current < latest:
41 targets.append(current + 1)
42 if latest not in targets and current != latest:
43 targets.append(latest)
44 return targets
47def TestOneInput(data):
48 try:
49 model = onnx.load_model_from_string(data)
50 except Exception:
51 return
53 for target_version in _candidate_target_versions(model):
54 try:
55 version_converter.convert_version(model, target_version)
56 except Exception:
57 continue
60def main():
61 atheris.instrument_all()
62 atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
63 atheris.Fuzz()
66if __name__ == "__main__":
67 main()