def GenerateTestcases(self, request: generator_pb2.GenerateTestcasesRequest, context) -> generator_pb2.GenerateTestcasesResponse: """Generate testcases.""" del context response = services.BuildDefaultResponse( generator_pb2.GenerateTestcasesResponse) # Generate random strings. for _ in range(request.num_testcases): # Pick a length for the random string. n = random.randint(self.config.string_min_len, self.config.string_max_len + 1) # Instantiate a testcase. testcase = response.testcases.add() testcase.toolchain = self.config.toolchain testcase.generator.CopyFrom(self.generator) start_time = labdate.MillisecondsTimestamp() testcase.inputs['src'] = ''.join( random.choice(string.ascii_lowercase) for _ in range(n)) end_time = labdate.MillisecondsTimestamp() p = testcase.profiling_events.add() p.type = 'generation' p.event_start_epoch_ms = start_time p.duration_ms = end_time - start_time return response
def RunTestcases(self, request: harness_pb2.RunTestcasesRequest, context) -> harness_pb2.RunTestcasesResponse: del context response = services.BuildDefaultResponse( harness_pb2.RunTestcasesResponse) if request.testbed not in self.testbeds: response.status.returncode = ( service_pb2.ServiceStatus.INVALID_REQUEST_PARAMETERS) response.status.error_message = "Requested testbed not found." return response testbed_idx = self.testbeds.index(request.testbed) for i, testcase in enumerate(request.testcases): result = RunTestcase( self.envs[testbed_idx], self.testbeds[testbed_idx], testcase, list(self.config.opts), ) app.Log( 1, "Testcase %d: %s.", i + 1, deepsmith_pb2.Result.Outcome.Name(result.outcome), ) response.results.extend([result]) return response
def SubmitResults(self, request: datastore_pb2.SubmitResultsRequest, context) -> datastore_pb2.SubmitResultsResponse: del context app.Log(1, "SubmitResults() client=%s", request.status.client) response = services.BuildDefaultResponse( datastore_pb2.SubmitResultsResponse) # TODO(cec): Implement! return response
def SubmitTestcases(self, request: datastore_pb2.SubmitTestcasesRequest, context) -> datastore_pb2.SubmitTestcasesResponse: del context logging.info('SubmitTestcases() client=%s', request.status.client) response = services.BuildDefaultResponse( datastore_pb2.SubmitTestcasesResponse) # TODO(cec): Implement! return response
def GetGeneratorCapabilities( self, request: generator_pb2.GetGeneratorCapabilitiesRequest, context) -> generator_pb2.GetGeneratorCapabilitiesResponse: del context response = services.BuildDefaultResponse( generator_pb2.GetGeneratorCapabilitiesRequest) response.toolchain = self.config.model.corpus.language response.generator = self.generator return response
def GetHarnessCapabilities( self, request: harness_pb2.GetHarnessCapabilitiesRequest, context) -> harness_pb2.GetHarnessCapabilitiesResponse: """Get the harness capabilities.""" del context response = services.BuildDefaultResponse( harness_pb2.GetHarnessCapabilitiesRequest) response.harness.name = 'cldrive' response.testbed.extend(self.testbeds) return response
def GenerateTestcases(self, request: generator_pb2.GenerateTestcasesRequest, context) -> generator_pb2.GenerateTestcasesResponse: del context response = services.BuildDefaultResponse( generator_pb2.GenerateTestcasesResponse) with self.instance.Session(): sample_observer = SampleObserver(self.config, response, request.num_testcases) self.instance.model.Sample(self.instance.sampler, [sample_observer]) return response
def GenerateTestcases(self, request: generator_pb2.GenerateTestcasesRequest, context) -> generator_pb2.GenerateTestcasesResponse: del context num_programs = int( math.ceil(request.num_testcases / len(self.config.testcase_skeleton))) response = services.BuildDefaultResponse( generator_pb2.GenerateTestcasesResponse) try: for i in range(num_programs): response.testcases.extend( self.SourceToTestcases(*self.GenerateOneSource())) logging.info('Generated file %d.', i + 1) except clsmith.CLSmithError as e: response.status.returncode = service_pb2.ServiceStatus.ERROR response.status.error_message = str(e) return response
def GenerateTestcases(self, request: generator_pb2.GenerateTestcasesRequest, context) -> generator_pb2.GenerateTestcasesResponse: del context response = services.BuildDefaultResponse( generator_pb2.GenerateTestcasesResponse) with self.instance.Session(): num_programs = math.ceil(request.num_testcases / len(self.config.testcase_skeleton)) for i, sample_ in enumerate( self.instance.model.Sample(self.instance.sampler, num_programs)): logging.info('Generated sample %d.', i + 1) response.testcases.extend(self.SampleToTestcases(sample_)) # Flush any remaining output generated during Sample(). sys.stdout.flush() return response
def GetGeneratorCapabilities( self, request: generator_pb2.GetGeneratorCapabilitiesRequest, context) -> generator_pb2.GetGeneratorCapabilitiesResponse: """Get the capabilities of the generator service. Args: request: A request proto. context: RPC context. Unused. Returns: A response proto. """ del context response = services.BuildDefaultResponse( generator_pb2.GetGeneratorCapabilitiesRequest) response.toolchain = self.toolchain response.generator = self.generator return response
def RunTestcases(self, request: harness_pb2.RunTestcasesRequest, context) -> harness_pb2.RunTestcasesResponse: del context response = services.BuildDefaultResponse( harness_pb2.RunTestcasesResponse) if request.testbed not in self.testbeds: response.status.returncode = service_pb2.ServiceStatus.INVALID_REQUEST_PARAMETERS response.status.error_message = 'Requested testbed not found.' return response testbed_idx = self.testbeds.index(request.testbed) for i, testcase in enumerate(request.testcases): result = RunTestcase(self.envs[testbed_idx], self.testbeds[testbed_idx], testcase, self.config.driver_cflag) logging.info('Testcase %d: %s.', i + 1, deepsmith_pb2.Result.Outcome.Name(result.outcome)) response.results.extend([result]) return response
def GenerateTestcases(self, request: generator_pb2.GenerateTestcasesRequest, context) -> generator_pb2.GenerateTestcasesResponse: """Generate testcases.""" del context response = services.BuildDefaultResponse( generator_pb2.GenerateTestcasesResponse) # Generate random strings. for _ in range(request.num_testcases): # Instantiate a testcase. testcase = response.testcases.add() testcase.CopyFrom(self.config.testcase_to_generate) testcase.generator.CopyFrom(self.generator) start_time = labdate.MillisecondsTimestamp() end_time = labdate.MillisecondsTimestamp() p = testcase.profiling_events.add() p.type = 'generation' p.event_start_epoch_ms = start_time p.duration_ms = end_time - start_time return response