#!/bin/bash # Copyright (C) 2019 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. DIR="$( cd "$(dirname "$0")" ; pwd -P )" if [[ $# -lt 1 ]]; then echo "Usage: $0 " fi DB_TARGET=$1 if ! [[ -f $DB_TARGET ]]; then echo "ERROR: File '$DB_TARGET' does not exist." >&2 exit 1 fi exec_sql_file() { local filename="$1" if ! [[ -f $filename ]]; then echo "ERROR: Can't exec SQL file, '$filename' does not exist." >&2 return 1 fi sqlite3 "$DB_TARGET" < "$DIR"/"$filename" } exec_sql_file_quiet() { exec_sql_file "$@" > /dev/null } # Some views/tables need other views already created, so order does matter. # x -> y , means x depends on y. # View: tracing_mark_writes # Table: tracing_mark_write_split_array -> tracing_mark_writes exec_sql_file_quiet "queries_all.sql" # Table: tracing_mark_write_split -> tracing_mark_write_split_array exec_sql_file_quiet "queries_mark_write_join.sql" # View: start_procs -> tracing_mark_write_split exec_sql_file_quiet "queries_get_procs.sql" # View: sched_switch_next_comm_pids exec_sql_file_quiet "queries_get_comm_and_pids.sql" # View: start_process_ui_threads -> start_procs, sched_switch_next_comm_pids exec_sql_file_quiet "queries_get_ui_threads.sql" # View: launch_durations_named -> tracing_mark_write_split exec_sql_file_quiet "queries_app_launch_spans_with_name.sql" # View: sched_switch_iowaits_pre # View: sched_switch_iowaits -> sched_switch_iowaits_pre # Table: blocking_durations -> sched_switch_iowaits exec_sql_file_quiet "queries_find_sched_switch_unblocked.sql" # View: blocked_iowait_for_app_launches -> launch_durations_named, blocking_durations exec_sql_file_quiet "queries_block_launch.sql" ##### ##### ##### # Final queries exec_sql_file "queries_pretty_print_block_launch.sql"