Ejemplo n.º 1
0
def test_ClLauncherHarness_RunTestcases_no_testbed():
    """Test that invalid request params returned if no testbed requested."""
    config = harness_pb2.ClLauncherHarness()
    harness = cl_launcher.ClLauncherHarness(config)
    req = harness_pb2.RunTestcasesRequest(testbed=None, testcases=[])
    res = harness.RunTestcases(req, None)
    assert (res.status.returncode ==
            service_pb2.ServiceStatus.INVALID_REQUEST_PARAMETERS)
    assert res.status.error_message == "Requested testbed not found."
Ejemplo n.º 2
0
def test_ClLauncherHarness_RunTestcases_no_testcases():
    """Test that empty results returned if no testcase requested."""
    config = harness_pb2.ClLauncherHarness()
    harness = cl_launcher.ClLauncherHarness(config)
    assert len(harness.testbeds)
    req = harness_pb2.RunTestcasesRequest(testbed=harness.testbeds[0],
                                          testcases=[])
    res = harness.RunTestcases(req, None)
    assert res.status.returncode == service_pb2.ServiceStatus.SUCCESS
    assert not res.results
Ejemplo n.º 3
0
def main(argv):
  if len(argv) > 1:
    unknown_args = ', '.join(argv[1:])
    raise app.UsageError(f"Unknown arguments {unknown_args}")

  logging.info('Preparing OpenCL testbed.')
  config = harness_pb2.CldriveHarness()
  config.opencl_env.extend([env.OclgrindOpenCLEnvironment().name])
  config.opencl_opt.extend([FLAGS.opencl_opt])
  harness = cldrive.CldriveHarness(config)
  assert len(harness.testbeds) >= 1

  input_directories = FLAGS.input_directories
  logging.info('Reading testcases from: %s', ' '.join(input_directories))

  output_directory = pathlib.Path(FLAGS.output_directory)
  logging.info('Writing results to %s', output_directory)
  output_directory.mkdir(parents=True, exist_ok=True)

  # Load testcases.
  testcase_dirs = [
    pathlib.Path(x) for x in input_directories if
    pathlib.Path(x).is_dir()]
  if not testcase_dirs:
    raise app.UsageError('No --input_directories found.')
  testcase_paths = labtypes.flatten(
      [[pathlib.Path(y) for y in fs.ls(x, abspaths=True)]
       for x in testcase_dirs])
  testcases = [
    pbutil.FromFile(path, deepsmith_pb2.Testcase()) for path in testcase_paths]
  logging.info('Read %d testcases.', len(testcases))
  if not len(testcases):
    raise app.UsageError("No testcases found: '%s'",
                         ' '.join(input_directories))

  # Execute testcases.
  req = harness_pb2.RunTestcasesRequest()
  req.testbed.CopyFrom(harness.testbeds[0])
  req.testcases.extend(testcases)
  res = harness.RunTestcases(req, None)

  # Write results to file.
  for testcase, result in zip(testcases, res.results):
    result_id = crypto.md5_str(str(testcase))
    pbutil.ToFile(result, output_directory / f'{result_id}.pbtxt')

  logging.info('Executed %d testcases and wrote results to %s',
               len(res.results), output_directory)
  execution_times = [
    result.profiling_events[0].duration_ms for result in res.results]
  logging.info('Average time to evaluate testcase: %.2f ms',
               sum(execution_times) / len(execution_times))
Ejemplo n.º 4
0
def RunTestcases(
  harness: base_harness.HarnessBase,
  testcases: typing.List[deepsmith_pb2.Testcase],
) -> typing.List[deepsmith_pb2.Result]:
  """Run a set of testcases on a harness.

  Args:
    harness: The harness to drive the testcases with.
    testcases: The testcases to run.

  Returns:
    A list of results.
  """
  req = harness_pb2.RunTestcasesRequest()
  req.testbed.CopyFrom(harness.testbeds[0])
  req.testcases.extend(testcases)
  res = harness.RunTestcases(req, None)
  return res.results
Ejemplo n.º 5
0
def RunTestCasesOrDie(
    driver: cldrive.CldriveHarness,
    testcases: typing.List[deepsmith_pb2.Testcase]
) -> typing.Iterable[deepsmith_pb2.Result]:
    """Run the test cases and return their results."""
    response = driver.RunTestcases(
        harness_pb2.RunTestcasesRequest(
            testbed=driver.testbeds[0],
            testcases=testcases,
        ),
        None,
    )

    # Harness returned correct number of results without complaining.
    if response.status.returncode != service_pb2.ServiceStatus.SUCCESS:
        app.Fatal(
            "Driver failed with return code %s",
            service_pb2.ServiceStatus.ReturnCode.Name(
                response.status.returncode),
        )
    assert len(response.results) == len(testcases)
    return response.results
Ejemplo n.º 6
0
def abc_run_testcases_request(abc_testcase,
                              abc_harness) -> harness_pb2.RunTestcasesRequest:
    """A test fixture which returns a RunTestcasesRequest for the abc_testcase."""
    return harness_pb2.RunTestcasesRequest(testbed=abc_harness.testbeds[0],
                                           testcases=[abc_testcase])