#!/bin/bash

# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Uses Dremel queries to collect the inclusive and pairwise inclusive
# statistics.

set -e

if [ "$#" -ne 7 ]; then
  echo "USAGE: collect_experiment_data.sh cwp_table board board_arch " \
  "Chrome_version Chrome_OS_version inclusive_output_file " \
  "pairwise_inclusive_output_file"
  exit 1
fi

readonly TABLE=$1
readonly INCLUSIVE_OUTPUT_FILE=$6
readonly PAIRWISE_INCLUSIVE_OUTPUT_FILE=$7
readonly PERIODIC_COLLECTION=1
readonly WHERE_CLAUSE_SPECIFICATIONS="meta.cros.board = '$2' AND  \
  meta.cros.cpu_architecture = '$3' AND  \
  meta.cros.chrome_version LIKE '%$4%' AND  \
  meta.cros.version = '$5' AND \
  meta.cros.collection_info.trigger_event = $PERIODIC_COLLECTION AND \
  session.total_count > 2000"

# Collects the function, with its file, the object and inclusive count
# fraction out of the total amount of inclusive count values.
echo "
SELECT
  replace(frame.function_name, \", \", \"; \") AS function,
  frame.filename AS file,
  frame.load_module_path AS dso,
  SUM(frame.inclusive_count) AS inclusive_count,
  SUM(frame.inclusive_count)/ANY_VALUE(total.value) AS inclusive_count_fraction
FROM
  $TABLE table,
  table.frame frame
CROSS JOIN (
  SELECT
    SUM(count) AS value
  FROM
    $TABLE
  WHERE
    $WHERE_CLAUSE_SPECIFICATIONS
) AS total
WHERE
  $WHERE_CLAUSE_SPECIFICATIONS
GROUP BY
  function,
  file,
  dso
HAVING
  inclusive_count_fraction > 0.0
ORDER BY
  inclusive_count_fraction DESC;
" | dremel  --sql_dialect=GoogleSQL --min_completion_ratio=1.0 --output=csv \
  > "$INCLUSIVE_OUTPUT_FILE"

# Collects the pair of parent and child functions, with the file and object
# where the child function is declared and the inclusive count fraction of the
# pair out of the total amount of inclusive count values.
echo "
SELECT
  CONCAT(replace(frame.parent_function_name, \", \", \"; \"), \";;\",
    replace(frame.function_name, \", \", \"; \")) AS parent_child_functions,
  frame.filename AS child_function_file,
  frame.load_module_path AS child_function_dso,
  SUM(frame.inclusive_count)/ANY_VALUE(total.value) AS inclusive_count
FROM
  $TABLE table,
  table.frame frame
CROSS JOIN (
  SELECT
    SUM(count) AS value
  FROM $TABLE
  WHERE
    $WHERE_CLAUSE_SPECIFICATIONS
) AS total
WHERE
  $WHERE_CLAUSE_SPECIFICATIONS
GROUP BY
  parent_child_functions,
  child_function_file,
  child_function_dso
HAVING
  inclusive_count > 0.0
ORDER BY
  inclusive_count DESC;
" | dremel --sql_dialect=GoogleSQL --min_completion_ratio=1.0 --output=csv > \
  "$PAIRWISE_INCLUSIVE_OUTPUT_FILE"
