def Run()

in perfkitbenchmarker/linux_benchmarks/cloudsuite_data_serving_benchmark.py [0:0]


def Run(benchmark_spec):
  """Run the data_serving benchmark.

  Args:
    benchmark_spec: The benchmark specification. Contains all data that is
      required to run the benchmark.

  Returns:
    A list of sample.Sample objects.
  """
  server_seed = benchmark_spec.vm_groups['server_seed'][0]
  servers = benchmark_spec.vm_groups['servers']
  client = benchmark_spec.vm_groups['client'][0]
  results = []

  server_ips_arr = []
  server_ips_arr.append(server_seed.internal_ip)

  for vm in servers:
    server_ips_arr.append(vm.internal_ip)

  server_ips = ','.join(server_ips_arr)

  rec_count_cfg = '-e RECORDCOUNT=%d' % FLAGS.cloudsuite_data_serving_rec_count
  op_count_cfg = '-e OPERATIONCOUNT=%d' % FLAGS.cloudsuite_data_serving_op_count

  benchmark_cmd = (
      'sudo docker run %s %s --rm --name cassandra-client'
      ' --net host cloudsuite/data-serving:client %s'
      % (rec_count_cfg, op_count_cfg, server_ips)
  )
  stdout, _ = client.RemoteCommand(benchmark_cmd)

  def GetResults(match_str, result_label, result_metric):
    matches = re.findall(match_str, stdout)
    if len(matches) != 1:
      raise errors.Benchmarks.RunError(
          'Expected to find result label: %s' % result_label
      )
    results.append(
        sample.Sample(result_label, float(matches[0]), result_metric)
    )

  GetResults(r'\[OVERALL\], RunTime\(ms\), (\d+.?\d*)', 'OVERALL RunTime', 'ms')
  GetResults(
      r'\[OVERALL\], Throughput\(ops\/sec\), (\d+.?\d*)',
      'OVERALL Throughput',
      'ops/sec',
  )
  GetResults(
      r'\[CLEANUP\], Operations, (\d+.?\d*)', 'CLEANUP Operations', 'ops'
  )
  GetResults(
      r'\[CLEANUP\], AverageLatency\(us\), (\d+.?\d*)',
      'CLEANUP AverageLatency',
      'us',
  )
  GetResults(
      r'\[CLEANUP\], MinLatency\(us\), (\d+.?\d*)', 'CLEANUP MinLatency', 'us'
  )
  GetResults(
      r'\[CLEANUP\], MaxLatency\(us\), (\d+.?\d*)', 'CLEANUP MaxLatency', 'us'
  )
  GetResults(
      r'\[CLEANUP\], 95thPercentileLatency\(ms\), (\d+.?\d*)',
      'CLEANUP 95thPercentileLatency',
      'ms',
  )
  GetResults(
      r'\[CLEANUP\], 99thPercentileLatency\(ms\), (\d+.?\d*)',
      'CLEANUP 99thPercentileLatency',
      'ms',
  )
  GetResults(r'\[READ\], Operations, (\d+.?\d*)', 'READ Operations', 'ops')
  GetResults(
      r'\[READ\], AverageLatency\(us\), (\d+.?\d*)', 'READ AverageLatency', 'us'
  )
  GetResults(r'\[READ\], MinLatency\(us\), (\d+.?\d*)', 'READ MinLatency', 'us')
  GetResults(r'\[READ\], MaxLatency\(us\), (\d+.?\d*)', 'READ MaxLatency', 'us')
  GetResults(
      r'\[READ\], 95thPercentileLatency\(ms\), (\d+.?\d*)',
      'READ 95thPercentileLatency',
      'ms',
  )
  GetResults(
      r'\[READ\], 99thPercentileLatency\(ms\), (\d+.?\d*)',
      'READ 99thPercentileLatency',
      'ms',
  )
  GetResults(r'\[UPDATE\], Operations, (\d+.?\d*)', 'UPDATE Operations', 'us')
  GetResults(
      r'\[UPDATE\], AverageLatency\(us\), (\d+.?\d*)',
      'UPDATE AverageLatency',
      'us',
  )
  GetResults(
      r'\[UPDATE\], MinLatency\(us\), (\d+.?\d*)', 'UPDATE MinLatency', 'us'
  )
  GetResults(
      r'\[UPDATE\], MaxLatency\(us\), (\d+.?\d*)', 'UPDATE MaxLatency', 'us'
  )
  GetResults(
      r'\[UPDATE\], 95thPercentileLatency\(ms\), (\d+.?\d*)',
      'UPDATE 95thPercentileLatency',
      'ms',
  )
  GetResults(
      r'\[UPDATE\], 99thPercentileLatency\(ms\), (\d+.?\d*)',
      'UPDATE 99thPercentileLatency',
      'ms',
  )

  return results