def test_read_bazel_options():

  control_json = """
  {
    "remote": false,
    "dockerizedBenchmark": true,
    "source": [
      {
        "identity": "SRCID_ENVOY",
        "sourcePath": "/home/ubuntu/envoy",
        "branch": "some_random_branch",
        "commitHash": "random_commit_hash_string",
        "bazelOptions": [
          {
            "parameter": "--jobs 4"
          },
          {
            "parameter": "--define tcmalloc=gperftools"
          }
        ]
      }
    ]
  }
  """
  # Write JSON contents to a temporary file that we clean up once
  # the object is parsed
  job_control = None
  with tempfile.NamedTemporaryFile(mode='w', delete=False) as tmp:
    tmp.write(control_json)
    tmp.close()
    job_control = job_ctrl.load_control_doc(tmp.name)
    os.unlink(tmp.name)

  _validate_job_control_object_with_options(job_control)
Пример #2
0
def main() -> int:
    """Driver module for benchmark.

  This is the main function for starting a benchmark.  It verifies that a
  Job Control object was specified and from that starts the execution.

  The benchmark object encapsulates the different benchmark modes and it
  is responsible for selecting the correct classes to instantiate
  """

    args = setup_options()
    setup_logging()

    if not args.jobcontrol:
        print("No job control document specified.  Use \"--help\" for usage")
        return 1

    job_control = load_control_doc(args.jobcontrol)
    if job_control is None:
        log.error(f"Unable to load or parse job control: {args.jobcontrol}")
        return 1

    bar = '=' * 20
    log.debug(f"Job definition:\n{bar}\n{job_control}\n{bar}\n")

    # Execute the benchmark given the contents of the job control file
    benchmark = run_benchmark.BenchmarkRunner(job_control)
    benchmark.execute()

    return 0
def test_control_doc_parse():
  """Verify that we can consume a JSON formatted control document.

  This method reads a JSON representation of the job control document,
  serializes it, then verifies that the serialized data matches the
  input.
  """

  control_json = """
    {
      "remote": true,
      "scavengingBenchmark": true,
      "source": [
        {
          "identity": SRCID_NIGHTHAWK,
          "source_url": "https://github.com/envoyproxy/nighthawk.git",
          "branch": "master"
        },
        {
          "identity": SRCID_ENVOY,
          "source_path": "/home/ubuntu/envoy",
          "branch": "master",
          "commit_hash": "random_commit_hash_string"
        }
      ],
      "images": {
        "reuseNhImages": true,
        "nighthawkBenchmarkImage": "envoyproxy/nighthawk-benchmark-dev:latest",
        "nighthawkBinaryImage": "envoyproxy/nighthawk-dev:latest",
        "envoyImage": "envoyproxy/envoy-dev:f61b096f6a2dd3a9c74b9a9369a6ea398dbe1f0f"
      },
      "environment": {
        testVersion: IPV_V4ONLY,
        "envoyPath": "envoy",
        "outputDir": "/home/ubuntu/nighthawk_output",
        "testDir": "/home/ubuntu/nighthawk_tests",
        "variables": {
          "TMP_DIR": "/home/ubuntu/nighthawk_output"
        }
      }
    }
    """

  # Write JSON contents to a temporary file that we clean up once
  # the object is parsed
  job_control = None
  with tempfile.NamedTemporaryFile(mode='w', delete=False) as tmp:
    tmp.write(control_json)
    tmp.close()
    job_control = job_ctrl.load_control_doc(tmp.name)
    os.unlink(tmp.name)

  _validate_job_control_object(job_control)
Пример #4
0
def main():
    """Driver module for benchmark """

    args = setup_options()
    setup_logging()

    if not args.jobcontrol:
        print("No job control document specified.  Use \"--help\" for usage")
        return 1

    job_control = load_control_doc(args.jobcontrol)

    log.debug("Job definition:\n%s\n%s\n%s\n", '=' * 20, job_control, '=' * 20)

    # Execute the benchmark given the contents of the job control file

    return 0
def test_control_doc_parse_yaml():
  """Verify that we can consume a yaml formatted control document.

  This method reads a yaml representation of the job control document,
  serializes it, then verifies that the serialized data matches the
  input.
  """
  control_yaml = """
      remote: true
      scavengingBenchmark: true
      source:
        - identity: SRCID_NIGHTHAWK
          source_url: "https://github.com/envoyproxy/nighthawk.git"
          branch: "master"
        - identity: SRCID_ENVOY
          source_path: "/home/ubuntu/envoy"
          branch: "master"
          commit_hash: "random_commit_hash_string"
      images:
        reuseNhImages: true
        nighthawkBenchmarkImage: "envoyproxy/nighthawk-benchmark-dev:latest"
        nighthawkBinaryImage: "envoyproxy/nighthawk-dev:latest"
        envoyImage: "envoyproxy/envoy-dev:f61b096f6a2dd3a9c74b9a9369a6ea398dbe1f0f"
      environment:
        testVersion: IPV_V4ONLY
        envoyPath: "envoy"
        outputDir: "/home/ubuntu/nighthawk_output"
        testDir: "/home/ubuntu/nighthawk_tests"
        variables:
          TMP_DIR: "/home/ubuntu/nighthawk_output"
    """

  # Write YAML contents to a temporary file that we clean up once
  # the object is parsed
  job_control = None
  with tempfile.NamedTemporaryFile(mode='w', delete=False) as tmp:
    tmp.write(control_yaml)
    tmp.close()
    job_control = job_ctrl.load_control_doc(tmp.name)
    os.unlink(tmp.name)

  _validate_job_control_object(job_control)
Пример #6
0
def main() -> int:
  """Driver module for benchmark.

  This is the main function for starting a benchmark.  It verifies that a
  Job Control object was specified and from that starts the execution.

  The benchmark object encapsulates the different benchmark modes and it
  is responsible for selecting the correct classes to instantiate
  """

  args = setup_options()
  setup_logging()

  if not args.jobcontrol:
    print("No job control document specified.  Use \"--help\" for usage")
    return 1

  job_control = load_control_doc(args.jobcontrol)

  log.debug("Job definition:\n%s\n%s\n%s\n", '=' * 20, job_control, '=' * 20)

  # Execute the benchmark given the contents of the job control file

  return 0