def run(self, result): import simplejson simplejson._toggle_speedups(False) result = unittest.TestSuite.run(self, result) simplejson._toggle_speedups(True) return result
def __init__(self, **kwargs): # in simplejson, without turning off speedups some strings can # be bytestrings instead of unicode # https://code.google.com/p/simplejson/issues/detail?id=40 json._toggle_speedups(False) json.JSONDecoder.__init__(self, object_hook=_from_json, **kwargs)
def run(self, result): import simplejson run = unittest.TestSuite.run run(self, result) simplejson._toggle_speedups(False) run(self, result) simplejson._toggle_speedups(True) return result
def run(self, result): import simplejson run = unittest.TestSuite.run run(self, result) if simplejson._import_c_make_encoder() is None: TestMissingSpeedups().run(result) else: simplejson._toggle_speedups(False) run(self, result) simplejson._toggle_speedups(True) return result
def tearDown(self): if self.disableSpeedups: simplejson._toggle_speedups(True)
def setUp(self): if self.disableSpeedups: simplejson._toggle_speedups(False) assert isinstance(simplejson.loads('"x"'), unicode)
def make_benchmark(name, count): data = load_case(name) src = simpleubjson.encode(data, spec='draft-8') total = run_test(simpleubjson.decode, count, src, spec='draft-8') print( format_results('simpleubjson', simpleubjson.__version__, 'Decoded Draft-8', total, count)) total = run_test(simpleubjson.encode, count, data, spec='draft-8') print( format_results('simpleubjson', simpleubjson.__version__, 'Encoded Draft-8', total, count)) print src = simpleubjson.encode(data, spec='draft-9') # func = lambda *a, **k: list(simpleubjson.decode(*a, **k)) def func(*a, **k): return list(simpleubjson.decode(*a, **k)) total = run_test(func, count, src, spec='draft-9') print( format_results('simpleubjson', simpleubjson.__version__, 'Decoded Draft-9', total, count)) total = run_test(simpleubjson.encode, count, data, spec='draft-9') print( format_results('simpleubjson', simpleubjson.__version__, 'Encoded Draft-9', total, count)) if json: print total = run_test(json.loads, count, json.dumps(data)) print( format_results('json_stdlib', json.__version__, 'Decoded', total, count)) total = run_test(json.dumps, count, data) print( format_results('json_stdlib', json.__version__, 'Encoded', total, count)) if simplejson: print simplejson._toggle_speedups(True) total = run_test(simplejson.loads, count, simplejson.dumps(data)) print( format_results('simplejson_c', simplejson.__version__, 'Decoded', total, count)) simplejson._toggle_speedups(True) total = run_test(simplejson.dumps, count, data) print( format_results('simplejson_c', simplejson.__version__, 'Encoded', total, count)) print simplejson._toggle_speedups(False) total = run_test(simplejson.loads, count, simplejson.dumps(data)) print( format_results('simplejson_py', simplejson.__version__, 'Decoded', total, count)) simplejson._toggle_speedups(False) total = run_test(simplejson.dumps, count, data) print( format_results('simplejson_py', simplejson.__version__, 'Encoded', total, count)) if ujson: print total = run_test(ujson.decode, count, ujson.encode(data)) print( format_results('ujson', ujson.__version__, 'Decoded', total, count)) total = run_test(ujson.encode, count, data) print( format_results('ujson', ujson.__version__, 'Encoded', total, count)) if erlport: print total = run_test(erlport.decode, count, erlport.encode(data)) print( format_results('erlport', erlport.__version__, 'Decoded', total, count)) total = run_test(erlport.encode, count, data) print( format_results('erlport', erlport.__version__, 'Encoded', total, count)) print total = run_test(pickle.loads, count, pickle.dumps(data)) print(format_results('pickle', pickle.__version__, 'Decoded', total, count)) total = run_test(pickle.dumps, count, data) print(format_results('pickle', pickle.__version__, 'Encoded', total, count))
def make_benchmark(name, count): data = load_case(name) src = simpleubjson.encode(data, spec='draft-8') total = run_test(simpleubjson.decode, count, src, spec='draft-8') print(format_results('simpleubjson', simpleubjson.__version__, 'Decoded Draft-8', total, count)) total = run_test(simpleubjson.encode, count, data, spec='draft-8') print(format_results('simpleubjson', simpleubjson.__version__, 'Encoded Draft-8', total, count)) print src = simpleubjson.encode(data, spec='draft-9') # func = lambda *a, **k: list(simpleubjson.decode(*a, **k)) def func(*a, **k): return list(simpleubjson.decode(*a, **k)) total = run_test(func, count, src, spec='draft-9') print(format_results('simpleubjson', simpleubjson.__version__, 'Decoded Draft-9', total, count)) total = run_test(simpleubjson.encode, count, data, spec='draft-9') print(format_results('simpleubjson', simpleubjson.__version__, 'Encoded Draft-9', total, count)) if json: print total = run_test(json.loads, count, json.dumps(data)) print(format_results('json_stdlib', json.__version__, 'Decoded', total, count)) total = run_test(json.dumps, count, data) print(format_results('json_stdlib', json.__version__, 'Encoded', total, count)) if simplejson: print simplejson._toggle_speedups(True) total = run_test(simplejson.loads, count, simplejson.dumps(data)) print(format_results('simplejson_c', simplejson.__version__, 'Decoded', total, count)) simplejson._toggle_speedups(True) total = run_test(simplejson.dumps, count, data) print(format_results('simplejson_c', simplejson.__version__, 'Encoded', total, count)) print simplejson._toggle_speedups(False) total = run_test(simplejson.loads, count, simplejson.dumps(data)) print(format_results('simplejson_py', simplejson.__version__, 'Decoded', total, count)) simplejson._toggle_speedups(False) total = run_test(simplejson.dumps, count, data) print(format_results('simplejson_py', simplejson.__version__, 'Encoded', total, count)) if ujson: print total = run_test(ujson.decode, count, ujson.encode(data)) print(format_results('ujson', ujson.__version__, 'Decoded', total, count)) total = run_test(ujson.encode, count, data) print(format_results('ujson', ujson.__version__, 'Encoded', total, count)) if erlport: print total = run_test(erlport.decode, count, erlport.encode(data)) print(format_results('erlport', erlport.__version__, 'Decoded', total, count)) total = run_test(erlport.encode, count, data) print(format_results('erlport', erlport.__version__, 'Encoded', total, count)) print total = run_test(pickle.loads, count, pickle.dumps(data)) print(format_results('pickle', pickle.__version__, 'Decoded', total, count)) total = run_test(pickle.dumps, count, data) print(format_results('pickle', pickle.__version__, 'Encoded', total, count))
def tearDown(self): if json.encoder.c_make_encoder: json._toggle_speedups(True)
def setUp(self): if json.encoder.c_make_encoder: json._toggle_speedups(False)
from cpytraceafl.rewriter import install_rewriter install_rewriter(selector=lambda code: "simplejson" in code.co_filename) import simplejson # we want to fuzz the python implementation, not the c extension simplejson._toggle_speedups(False) # initial call to set up any internal caches or imports before the fork simplejson.loads('{"foo": "bar", "baz": ["qux", 123, false]}') import sys from cpytraceafl import fuzz_from_here fuzz_from_here() with open(sys.argv[1], "rb") as f: try: simplejson.loads(f.read()) except simplejson.JSONDecodeError: pass