1#!/bin/bash 2# Copyright (C) 2019 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16DIR="$( cd "$(dirname "$0")" ; pwd -P )" 17 18if [[ $# -lt 1 ]]; then 19 echo "Usage: $0 <db-file>" 20fi 21 22DB_TARGET=$1 23 24if ! [[ -f $DB_TARGET ]]; then 25 echo "ERROR: File '$DB_TARGET' does not exist." >&2 26 exit 1 27fi 28 29exec_sql_file() { 30 local filename="$1" 31 if ! [[ -f $filename ]]; then 32 echo "ERROR: Can't exec SQL file, '$filename' does not exist." >&2 33 return 1 34 fi 35 36 sqlite3 "$DB_TARGET" < "$DIR"/"$filename" 37} 38 39exec_sql_file_quiet() { 40 exec_sql_file "$@" > /dev/null 41} 42 43# Some views/tables need other views already created, so order does matter. 44# x -> y , means x depends on y. 45 46# View: tracing_mark_writes 47# Table: tracing_mark_write_split_array -> tracing_mark_writes 48exec_sql_file_quiet "queries_all.sql" 49 50# Table: tracing_mark_write_split -> tracing_mark_write_split_array 51exec_sql_file_quiet "queries_mark_write_join.sql" 52 53# View: start_procs -> tracing_mark_write_split 54exec_sql_file_quiet "queries_get_procs.sql" 55 56# View: sched_switch_next_comm_pids 57exec_sql_file_quiet "queries_get_comm_and_pids.sql" 58 59# View: start_process_ui_threads -> start_procs, sched_switch_next_comm_pids 60exec_sql_file_quiet "queries_get_ui_threads.sql" 61 62# View: launch_durations_named -> tracing_mark_write_split 63exec_sql_file_quiet "queries_app_launch_spans_with_name.sql" 64 65# View: sched_switch_iowaits_pre 66# View: sched_switch_iowaits -> sched_switch_iowaits_pre 67# Table: blocking_durations -> sched_switch_iowaits 68exec_sql_file_quiet "queries_find_sched_switch_unblocked.sql" 69 70# View: blocked_iowait_for_app_launches -> launch_durations_named, blocking_durations 71exec_sql_file_quiet "queries_block_launch.sql" 72 73##### 74##### 75##### 76 77# Final queries 78 79exec_sql_file "queries_pretty_print_block_launch.sql" 80