def test_Generator_GetOrAdd_only_different_optset(session): generator_a = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator(name="name", opts={"a": "A", "b": "B", "c": "C",},), ) generator_b = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator(name="name", opts={"d": "D",},) ) generator_c = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator(name="name", opts={},) ) assert session.query(deeplearning.deepsmith.generator.Generator).count() == 3 assert ( session.query(deeplearning.deepsmith.generator.GeneratorOpt).count() == 4 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptSet).count() == 4 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptName).count() == 4 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptValue).count() == 4 ) assert len(generator_a.optset) == 3 assert len(generator_b.optset) == 1 assert len(generator_c.optset) == 0
def _GetOpenCLGenerator(generator_id) -> deepsmith_pb2.Generator: if generator_id == 0: return deepsmith_pb2.Generator( name="clsmith", opts={ "git_commit": "b637b31c31e0f90ef199ca492af05172400df050", "git_remote": "https://github.com/ChrisCummins/CLSmith.git", }) elif generator_id == 1: return deepsmith_pb2.Generator( name="clgen", opts={ "git_commit": "9556e7112ba2bd6f79ee59eef74f0a2304efa007", "git_remote": "https://github.com/ChrisCummins/clgen.git", "version": "0.4.0.dev0", }) elif generator_id == 2: return deepsmith_pb2.Generator( name="randchar", opts={ "url": "https://github.com/ChrisCummins/dsmith/blob/fd986a36a23b2a398f33d5b5852d930b462401b1/dsmith/opencl/generators.py#L175", }) else: raise LookupError
def test_Generator_GetOrAdd_ToProto_equivalence(session): proto_in = deepsmith_pb2.Testcase( toolchain="cpp", generator=deepsmith_pb2.Generator(name="generator", ), harness=deepsmith_pb2.Harness(name="harness", ), inputs={ "src": "void main() {}", "data": "[1,2]" }, invariant_opts={"config": "opt"}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="generate", duration_ms=100, event_start_epoch_ms=101231231, ), ], ) testcase = deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, proto_in) # NOTE: We have to flush so that SQLAlchemy resolves all of the object IDs. session.flush() proto_out = testcase.ToProto() assert proto_in == proto_out proto_out.ClearField("toolchain") assert proto_in != proto_out # Sanity check.
def test_Generator_GetOrAdd(session): proto = deepsmith_pb2.Generator( name="name", opts={"version": "1.0.0", "build": "debug+assert",} ) generator = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, proto ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptSet).count() == 2 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOpt).count() == 2 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptName).count() == 2 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptValue).count() == 2 ) assert generator.name == "name" assert len(generator.optset) == 2 assert len(generator.opts) == 2 assert generator.opts["version"] == "1.0.0" assert generator.opts["build"] == "debug+assert"
def test_Generator_GetOrAdd_rollback(session): deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator(name="name", opts={"a": "1", "b": "2",},) ) assert session.query(deeplearning.deepsmith.generator.Generator).count() == 1 assert ( session.query(deeplearning.deepsmith.generator.GeneratorOpt).count() == 2 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptSet).count() == 2 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptName).count() == 2 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptValue).count() == 2 ) session.rollback() assert session.query(deeplearning.deepsmith.generator.Generator).count() == 0 assert ( session.query(deeplearning.deepsmith.generator.GeneratorOpt).count() == 0 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptSet).count() == 0 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptName).count() == 0 ) assert ( session.query(deeplearning.deepsmith.generator.GeneratorOptValue).count() == 0 )
def ConfigToGenerator( config: generator_pb2.ClsmithGenerator) -> deepsmith_pb2.Generator: """Convert a config proto to a DeepSmith generator proto.""" g = deepsmith_pb2.Generator() g.name = 'clsmith' g.opts['opts'] = ' '.join(config.opt) return g
def test_Generator_GetOrAdd_ToProto_equivalence(session): proto_in = deepsmith_pb2.Testcase( toolchain='cpp', generator=deepsmith_pb2.Generator(name='generator', ), harness=deepsmith_pb2.Harness(name='harness', ), inputs={ 'src': 'void main() {}', 'data': '[1,2]' }, invariant_opts={'config': 'opt'}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client='localhost', type='generate', duration_ms=100, event_start_epoch_ms=101231231, ), ]) testcase = deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, proto_in) # NOTE: We have to flush so that SQLAlchemy resolves all of the object IDs. session.flush() proto_out = testcase.ToProto() assert proto_in == proto_out proto_out.ClearField('toolchain') assert proto_in != proto_out # Sanity check.
def test_Generator_GetOrAdd_rollback(session): deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name='name', opts={ 'a': '1', 'b': '2', }, )) assert session.query( deeplearning.deepsmith.generator.Generator).count() == 1 assert session.query( deeplearning.deepsmith.generator.GeneratorOpt).count() == 2 assert session.query( deeplearning.deepsmith.generator.GeneratorOptSet).count() == 2 assert session.query( deeplearning.deepsmith.generator.GeneratorOptName).count() == 2 assert session.query( deeplearning.deepsmith.generator.GeneratorOptValue).count() == 2 session.rollback() assert session.query( deeplearning.deepsmith.generator.Generator).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOpt).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOptSet).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOptName).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOptValue).count() == 0
def ConfigToGenerator( config: generator_pb2.ClsmithGenerator, ) -> deepsmith_pb2.Generator: """Convert a config proto to a DeepSmith generator proto.""" g = deepsmith_pb2.Generator() g.name = "clsmith" g.opts["opts"] = " ".join(config.opt) return g
def ClgenInstanceToGenerator( instance: sample.Instance, ) -> deepsmith_pb2.Generator: """Convert a CLgen instance to a DeepSmith generator proto.""" g = deepsmith_pb2.Generator() g.name = "clgen" g.opts["model"] = str(instance.model.path) g.opts["sampler"] = instance.sampler.hash return g
def ClgenInstanceToGenerator( instance: clgen.Instance) -> deepsmith_pb2.Generator: """Convert a CLgen instance to a DeepSmith generator proto.""" g = deepsmith_pb2.Generator() g.name = 'clgen' g.opts['model'] = instance.model.hash g.opts['sampler'] = instance.sampler.hash return g
def ToProto(self) -> deepsmith_pb2.Generator: """Create protocol buffer representation. Returns: A Generator message. """ proto = deepsmith_pb2.Generator() return self.SetProto(proto)
def test_duplicate_testcase_testbed_ignored(session): """Test that result is ignored if testbed and testcase are not unique.""" proto = deepsmith_pb2.Result( testcase=deepsmith_pb2.Testcase( toolchain='cpp', generator=deepsmith_pb2.Generator(name='generator'), harness=deepsmith_pb2.Harness(name='harness'), inputs={ 'src': 'void main() {}', 'data': '[1,2]', }, invariant_opts={ 'config': 'opt', }, profiling_events=[ deepsmith_pb2.ProfilingEvent( client='localhost', type='generate', duration_ms=100, event_start_epoch_ms=1123123123, ), ]), testbed=deepsmith_pb2.Testbed( toolchain='cpp', name='clang', opts={'arch': 'x86_64'}, ), returncode=0, outputs={'stdout': 'Hello, world!'}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client='localhost', type='exec', duration_ms=100, event_start_epoch_ms=1123123123, ), ], outcome=deepsmith_pb2.Result.PASS, ) r1 = deeplearning.deepsmith.result.Result.GetOrAdd(session, proto) session.add(r1) session.flush() # Attempt to add a new result which is identical to the first in all fields # except for the outputs. proto.outputs['stdout'] = '!' r2 = deeplearning.deepsmith.result.Result.GetOrAdd(session, proto) session.add(r2) session.flush() # Check that only one result was added. assert session.query(deeplearning.deepsmith.result.Result).count() == 1 # Check that only the first result was added. r3 = session.query(deeplearning.deepsmith.result.Result).first() assert r3.outputs['stdout'] == 'Hello, world!'
def test_Generator_GetOrAdd_ToProto_equivalence(session): proto_in = deepsmith_pb2.Result( testcase=deepsmith_pb2.Testcase( toolchain="cpp", generator=deepsmith_pb2.Generator(name="generator"), harness=deepsmith_pb2.Harness(name="harness"), inputs={"src": "void main() {}", "data": "[1,2]",}, invariant_opts={"config": "opt",}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="generate", duration_ms=100, event_start_epoch_ms=1123123123, ), deepsmith_pb2.ProfilingEvent( client="localhost", type="foo", duration_ms=100, event_start_epoch_ms=1123123123, ), ], ), testbed=deepsmith_pb2.Testbed( toolchain="cpp", name="clang", opts={"arch": "x86_64", "build": "debug+assert",}, ), returncode=0, outputs={"stdout": "Hello, world!", "stderr": "",}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="exec", duration_ms=500, event_start_epoch_ms=1123123123, ), deepsmith_pb2.ProfilingEvent( client="localhost", type="overhead", duration_ms=100, event_start_epoch_ms=1123123123, ), ], outcome=deepsmith_pb2.Result.PASS, ) result = deeplearning.deepsmith.result.Result.GetOrAdd(session, proto_in) # NOTE: We have to flush so that SQLAlchemy resolves all of the object IDs. session.flush() proto_out = result.ToProto() assert proto_in == proto_out proto_out.ClearField("outputs") assert proto_in != proto_out # Sanity check.
def _GetSolidityGenerator(generator_id) -> deepsmith_pb2.Generator: if generator_id == -1: return deepsmith_pb2.Generator(name="github", opts={}) elif generator_id == 1: return deepsmith_pb2.Generator( name="clgen", opts={ "git_commit": "9556e7112ba2bd6f79ee59eef74f0a2304efa007", "git_remote": "https://github.com/ChrisCummins/clgen.git", "version": "0.4.0.dev0", }) elif generator_id == 2: return deepsmith_pb2.Generator( name="randchar", opts={ "url": "https://github.com/ChrisCummins/dsmith/blob/5181c7c95575d428b5144a25549e5a5a55a3da31/dsmith/sol/generators.py#L203", }) else: raise LookupError
def _AddExistingGenerator(session): deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name='name', opts={ 'a': 'a', 'b': 'b', 'c': 'c', }, )) session.flush()
def _AddRandomNewGenerator(session): deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name=str(random.random()), opts={ str(random.random()): str(random.random()), str(random.random()): str(random.random()), str(random.random()): str(random.random()), }, )) session.flush()
def test_Testcase_GetOrAdd(session): proto = deepsmith_pb2.Testcase( toolchain="cpp", generator=deepsmith_pb2.Generator(name="generator", ), harness=deepsmith_pb2.Harness(name="harness", ), inputs={ "src": "void main() {}", "data": "[1,2]" }, invariant_opts={"config": "opt"}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="generate", duration_ms=100, event_start_epoch_ms=1021312312, ), deepsmith_pb2.ProfilingEvent( client="localhost", type="foo", duration_ms=100, event_start_epoch_ms=1230812312, ), ], ) testcase = deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, proto) # NOTE: We have to flush so that SQLAlchemy resolves all of the object IDs. session.flush() assert testcase.toolchain.string == "cpp" assert testcase.generator.name == "generator" assert testcase.harness.name == "harness" assert len(testcase.inputset) == 2 assert len(testcase.inputs) == 2 assert testcase.inputs["src"] == "void main() {}" assert testcase.inputs["data"] == "[1,2]" assert len(testcase.invariant_optset) == 1 assert len(testcase.invariant_opts) == 1 assert testcase.invariant_opts["config"] == "opt" assert testcase.profiling_events[0].client.string == "localhost" assert testcase.profiling_events[0].type.string == "generate" assert testcase.profiling_events[0].duration_ms == 100 assert testcase.profiling_events[ 0].event_start == labdate.DatetimeFromMillisecondsTimestamp(1021312312) assert testcase.profiling_events[1].client.string == "localhost" assert testcase.profiling_events[1].type.string == "foo" assert testcase.profiling_events[1].duration_ms == 100 assert testcase.profiling_events[ 1].event_start == labdate.DatetimeFromMillisecondsTimestamp(1230812312)
def test_duplicate_testcase_testbed_ignored(session): """Test that result is ignored if testbed and testcase are not unique.""" proto = deepsmith_pb2.Result( testcase=deepsmith_pb2.Testcase( toolchain="cpp", generator=deepsmith_pb2.Generator(name="generator"), harness=deepsmith_pb2.Harness(name="harness"), inputs={"src": "void main() {}", "data": "[1,2]",}, invariant_opts={"config": "opt",}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="generate", duration_ms=100, event_start_epoch_ms=1123123123, ), ], ), testbed=deepsmith_pb2.Testbed( toolchain="cpp", name="clang", opts={"arch": "x86_64"}, ), returncode=0, outputs={"stdout": "Hello, world!"}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="exec", duration_ms=100, event_start_epoch_ms=1123123123, ), ], outcome=deepsmith_pb2.Result.PASS, ) r1 = deeplearning.deepsmith.result.Result.GetOrAdd(session, proto) session.add(r1) session.flush() # Attempt to add a new result which is identical to the first in all fields # except for the outputs. proto.outputs["stdout"] = "!" r2 = deeplearning.deepsmith.result.Result.GetOrAdd(session, proto) session.add(r2) session.flush() # Check that only one result was added. assert session.query(deeplearning.deepsmith.result.Result).count() == 1 # Check that only the first result was added. r3 = session.query(deeplearning.deepsmith.result.Result).first() assert r3.outputs["stdout"] == "Hello, world!"
def test_Testcase_GetOrAdd(session): proto = deepsmith_pb2.Testcase( toolchain='cpp', generator=deepsmith_pb2.Generator(name='generator', ), harness=deepsmith_pb2.Harness(name='harness', ), inputs={ 'src': 'void main() {}', 'data': '[1,2]' }, invariant_opts={'config': 'opt'}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client='localhost', type='generate', duration_ms=100, event_start_epoch_ms=1021312312, ), deepsmith_pb2.ProfilingEvent( client='localhost', type='foo', duration_ms=100, event_start_epoch_ms=1230812312, ), ]) testcase = deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, proto) # NOTE: We have to flush so that SQLAlchemy resolves all of the object IDs. session.flush() assert testcase.toolchain.string == 'cpp' assert testcase.generator.name == 'generator' assert testcase.harness.name == 'harness' assert len(testcase.inputset) == 2 assert len(testcase.inputs) == 2 assert testcase.inputs['src'] == 'void main() {}' assert testcase.inputs['data'] == '[1,2]' assert len(testcase.invariant_optset) == 1 assert len(testcase.invariant_opts) == 1 assert testcase.invariant_opts['config'] == 'opt' assert testcase.profiling_events[0].client.string == 'localhost' assert testcase.profiling_events[0].type.string == 'generate' assert testcase.profiling_events[0].duration_ms == 100 assert (testcase.profiling_events[0].event_start == labdate.DatetimeFromMillisecondsTimestamp(1021312312)) assert testcase.profiling_events[1].client.string == 'localhost' assert testcase.profiling_events[1].type.string == 'foo' assert testcase.profiling_events[1].duration_ms == 100 assert (testcase.profiling_events[1].event_start == labdate.DatetimeFromMillisecondsTimestamp(1230812312))
def test_Generator_GetOrAdd_ToProto_equivalence(session): proto_in = deepsmith_pb2.Generator( name="a", opts={"arch": "x86_64", "build": "debug+assert"}, ) generator = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, proto_in ) # NOTE: We have to flush before constructing a proto so that SQLAlchemy # resolves all of the object IDs. session.flush() proto_out = generator.ToProto() assert proto_in == proto_out proto_out.ClearField("name") assert proto_in != proto_out # Sanity check.
def test_Generator_GetOrAdd_only_different_optset(session): generator_a = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name='name', opts={ 'a': 'A', 'b': 'B', 'c': 'C', }, )) generator_b = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name='name', opts={ 'd': 'D', }, )) generator_c = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name='name', opts={}, )) assert session.query( deeplearning.deepsmith.generator.Generator).count() == 3 assert session.query( deeplearning.deepsmith.generator.GeneratorOpt).count() == 4 assert session.query( deeplearning.deepsmith.generator.GeneratorOptSet).count() == 4 assert session.query( deeplearning.deepsmith.generator.GeneratorOptName).count() == 4 assert session.query( deeplearning.deepsmith.generator.GeneratorOptValue).count() == 4 assert len(generator_a.optset) == 3 assert len(generator_b.optset) == 1 assert len(generator_c.optset) == 0
def __init__(self, config: generator_pb2.RandCharGenerator): super(RandCharGenerator, self).__init__(config) self.toolchain = self.config.model.corpus.language self.generator = deepsmith_pb2.Generator( name='randchar', opts={ 'toolchain': str(pbutil.AssertFieldConstraint( self.config, 'toolchain', lambda x: len(x))), 'min_len': str(pbutil.AssertFieldConstraint( self.config, 'string_min_len', lambda x: x > 0)), 'max_len': str(pbutil.AssertFieldConstraint( self.config, 'string_max_len', lambda x: x > 0 and x >= self.config.string_min_len)), } )
def test_Generator_GetOrAdd_no_opts(session): generator = deeplearning.deepsmith.generator.Generator.GetOrAdd( session, deepsmith_pb2.Generator( name='name', opts={}, )) empty_md5 = hashlib.md5().digest() assert generator.optset_id == empty_md5 assert session.query( deeplearning.deepsmith.generator.Generator).count() == 1 assert session.query( deeplearning.deepsmith.generator.GeneratorOpt).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOptSet).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOptName).count() == 0 assert session.query( deeplearning.deepsmith.generator.GeneratorOptValue).count() == 0
def test_duplicate_testcases_ignored(session): """Test that testcases are only added if they are unique.""" proto = deepsmith_pb2.Testcase( toolchain="cpp", generator=deepsmith_pb2.Generator(name="generator"), harness=deepsmith_pb2.Harness(name="harness"), inputs={ "src": "void main() {}", "data": "[1,2]" }, invariant_opts={"config": "opt"}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="generate", duration_ms=100, event_start_epoch_ms=1021312312, ), deepsmith_pb2.ProfilingEvent( client="localhost", type="foo", duration_ms=100, event_start_epoch_ms=1230812312, ), ], ) t1 = deeplearning.deepsmith.testcase.Testcase.GetOrAdd(session, proto) session.add(t1) session.flush() # Attempt to add a new testcase which is identical to the first in all fields # except for the profiling events. proto.profiling_events[0].duration_ms = -1 t2 = deeplearning.deepsmith.testcase.Testcase.GetOrAdd(session, proto) session.add(t2) session.flush() # Check that only one testcase was added. assert session.query(deeplearning.deepsmith.testcase.Testcase).count() == 1 # Check that only the first testcase was added. t3 = session.query(deeplearning.deepsmith.testcase.Testcase).first() assert t3.profiling_events[0].duration_ms == 100 assert t3.profiling_events[1].duration_ms == 100
def test_duplicate_testcases_ignored(session): """Test that testcases are only added if they are unique.""" proto = deepsmith_pb2.Testcase( toolchain='cpp', generator=deepsmith_pb2.Generator(name='generator'), harness=deepsmith_pb2.Harness(name='harness'), inputs={ 'src': 'void main() {}', 'data': '[1,2]' }, invariant_opts={'config': 'opt'}, profiling_events=[ deepsmith_pb2.ProfilingEvent( client='localhost', type='generate', duration_ms=100, event_start_epoch_ms=1021312312, ), deepsmith_pb2.ProfilingEvent( client='localhost', type='foo', duration_ms=100, event_start_epoch_ms=1230812312, ), ]) t1 = deeplearning.deepsmith.testcase.Testcase.GetOrAdd(session, proto) session.add(t1) session.flush() # Attempt to add a new testcase which is identical to the first in all fields # except for the profiling events. proto.profiling_events[0].duration_ms = -1 t2 = deeplearning.deepsmith.testcase.Testcase.GetOrAdd(session, proto) session.add(t2) session.flush() # Check that only one testcase was added. assert session.query(deeplearning.deepsmith.testcase.Testcase).count() == 1 # Check that only the first testcase was added. t3 = session.query(deeplearning.deepsmith.testcase.Testcase).first() assert t3.profiling_events[0].duration_ms == 100 assert t3.profiling_events[1].duration_ms == 100
def _AddRandomNewTestcase(session): deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, deepsmith_pb2.Testcase( toolchain=str(random.random()), generator=deepsmith_pb2.Generator( name=str(random.random()), opts={ str(random.random()): str(random.random()), str(random.random()): str(random.random()), str(random.random()): str(random.random()), }, ), harness=deepsmith_pb2.Harness( name=str(random.random()), opts={ str(random.random()): str(random.random()), str(random.random()): str(random.random()), str(random.random()): str(random.random()), }, ), inputs={ str(random.random()): str(random.random()), str(random.random()): str(random.random()), str(random.random()): str(random.random()), }, invariant_opts={ str(random.random()): str(random.random()), str(random.random()): str(random.random()), str(random.random()): str(random.random()), }, profiling_events=[ deepsmith_pb2.ProfilingEvent( client=str(random.random()), type=str(random.random()), duration_ms=int(random.random() * 1000), event_start_epoch_ms=int(random.random() * 1000000), ), ], ), ) session.flush()
def _AddExistingTestcase(session): deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, deepsmith_pb2.Testcase( toolchain="cpp", generator=deepsmith_pb2.Generator( name="name", opts={ "a": "a", "b": "b", "c": "c", }, ), harness=deepsmith_pb2.Harness( name="name", opts={ "a": "a", "b": "b", "c": "c", }, ), inputs={ "src": "void main() {}", "data": "[1,2]", "copt": "-DNDEBUG", }, invariant_opts={ "config": "opt", "working_dir": "/tmp", "units": "nanoseconds", }, profiling_events=[ deepsmith_pb2.ProfilingEvent( client="localhost", type="generate", duration_ms=100, event_start_epoch_ms=101231231, ), ], ), ) session.flush()
def _AddExistingTestcase(session): deeplearning.deepsmith.testcase.Testcase.GetOrAdd( session, deepsmith_pb2.Testcase(toolchain='cpp', generator=deepsmith_pb2.Generator( name='name', opts={ 'a': 'a', 'b': 'b', 'c': 'c', }, ), harness=deepsmith_pb2.Harness( name='name', opts={ 'a': 'a', 'b': 'b', 'c': 'c', }, ), inputs={ 'src': 'void main() {}', 'data': '[1,2]', 'copt': '-DNDEBUG', }, invariant_opts={ 'config': 'opt', 'working_dir': '/tmp', 'units': 'nanoseconds', }, profiling_events=[ deepsmith_pb2.ProfilingEvent( client='localhost', type='generate', duration_ms=100, event_start_epoch_ms=101231231, ), ])) session.flush()
def __init__(self, config: generator_pb2.RandCharGenerator): super(RandCharGenerator, self).__init__(config) self.toolchain = self.config.model.corpus.language self.generator = deepsmith_pb2.Generator( name="randchar", opts={ "toolchain": str( pbutil.AssertFieldConstraint(self.config, "toolchain", lambda x: len(x))), "min_len": str( pbutil.AssertFieldConstraint(self.config, "string_min_len", lambda x: x > 0)), "max_len": str( pbutil.AssertFieldConstraint( self.config, "string_max_len", lambda x: x > 0 and x >= self.config.string_min_len, )), }, )