# The below tests check the storage backed tables in the trace processor.

# LMK handling
kernel_lmk.py lmk.sql lmk_kernel_lmk.out
../../data/lmk_userspace.pb lmk.sql lmk_userspace_lmk.out
oom_kill.textproto oom_kill.sql oom_kill.out

# Logcat
../../data/android_log.pb android_log_counts.sql android_log_counts.out
../../data/android_log.pb android_log_msgs.sql android_log_msgs.out
../../data/android_log_ring_buffer_mode.pb android_log_ring_buffer_mode.sql android_log_ring_buffer_mode.out

# Mm Event
../../data/mm_event.pb mm_event.sql mm_event.out

# Oom Score
synth_oom.py oom_query.sql synth_oom_oom_query.out
../../data/process_stats_poll.pb oom_score_poll.sql process_stats_poll_oom_score.out

# Stats
../../data/android_sched_and_ps.pb stats.sql android_sched_and_ps_stats.out

# Syscalls
syscall.py sys.sql sys_syscall.out

# Power rails
../../data/power_rails.pb power_rails.sql power_rails_power_rails.out
power_rails_custom_clock.textproto power_rails_event.sql power_rails_event_power_rails_custom_clock.out
power_rails.textproto power_rails_timestamp_sort.sql power_rails_timestamp_sort.out


# The below tests check the autogenerated tables.

# Window table
../../data/android_sched_and_ps.pb smoke_window.sql android_sched_and_ps_smoke_window.out

# The below tests check the lower level layers of the trace processor (i.e.
# fitering and printing code).
# Sched table
../common/synth_1.py filter_sched.sql synth_1_filter_sched.out
../../data/android_sched_and_ps.pb b119496959.sql android_sched_and_ps_b119496959.out
../../data/android_sched_and_ps.pb b119301023.sql android_sched_and_ps_b119301023.out

# Counters table
../common/synth_1.py filter_counter.sql synth_1_filter_counter.out
../../data/memory_counters.pb b120278869_neg_ts_end.sql memory_counters_b120278869_neg_ts_end.out
counters_where_cpu.py counters_where_cpu.sql counters_where_cpu_counters_where_cpu.out
counters_group_by_freq.py counters_group_by_freq.sql counters_group_by_freq_counters_group_by_freq.out
../../data/example_android_trace_30s.pb filter_row_vector.sql filter_row_vector_example_android_trace_30s.out
../../data/example_android_trace_30s.pb counter_dur.sql counter_dur_example_android_trace_30s.out

# Null printing
../common/synth_1.py nulls.sql nulls.out


# Clock sync
clock_sync.py clock_sync.sql clock_sync.out

# Chrome metrics (found in the trace_processor/chrome directory).
../../data/chrome_scroll_without_vsync.pftrace scroll_jank_general_validation.sql scroll_jank_general_validation.out
../../data/chrome_scroll_without_vsync.pftrace scroll_jank.sql scroll_jank.out
../../data/chrome_scroll_without_vsync.pftrace scroll_flow_event.sql scroll_flow_event.out
../../data/chrome_scroll_without_vsync.pftrace scroll_flow_event_general_validation.sql scroll_flow_event_general_validation.out

# Config & metadata
config_metadata.textproto metadata.sql config_metadata.out
trigger_packet_trace.textproto triggers_packets.sql triggers_packets_trigger_packet_trace.out

# Ensures process -> package matching works as expected.
process_metadata_matching.textproto process_metadata_matching.sql process_metadata_matching.out

# Trace size
../../data/android_sched_and_ps.pb trace_size.sql android_sched_and_ps_trace_size.out

# Thread time_in_state
thread_time_in_state.textproto thread_time_in_state.sql thread_time_in_state.out
thread_time_in_state_event.py thread_time_in_state_event.sql thread_time_in_state_event.out

# Initial display state
initial_display_state.textproto initial_display_state.sql initial_display_state.out

# CPU info
cpu_info.textproto cpu.sql cpu.out
cpu_info.textproto cpu_freq.sql cpu_freq.out

# Thread table
thread_main_thread.textproto thread_main_thread.sql thread_main_thread.out

# Missed frames.
frame_missed.py frame_missed_event.sql frame_missed_event_frame_missed.out

# perf_sample table (traced_perf trace as an input).
../../data/perf_sample.pb perf_sample.sql perf_sample_perf_sample.out

# Real traces
../../data/memory_counters.pb android_mem android_mem_counters.out
../../data/memory_counters.pb trace_metadata trace_metadata.out

# Synthetic traces
android_mem_by_priority.py android_mem android_mem_by_priority.out
android_lmk.py android_lmk android_mem_lmk.out
android_lmk_reason.py android_lmk_reason android_lmk_reason.out
../../trace_processor/legacy/oom_kill.textproto android_lmk android_lmk_oom.out

android_ion.py android_ion android_ion.out
android_ion_stat.textproto android_ion android_ion_stat.out

android_startup.py android_startup android_startup.out
android_startup_breakdown.py android_startup android_startup_breakdown.out
android_startup_process_track.py android_startup android_startup_process_track.out

android_startup_battery.py android_batt android_batt_counters.out
android_startup_cpu.py android_cpu android_startup_cpu.out
android_startup_powrails.py android_powrails android_startup_powrails.out

android_package_list.py android_package_list android_package_list.out

# Json output
../../data/memory_counters.pb trace_metadata trace_metadata.json.out

process_uids.textproto android_task_names android_task_names.out

../../trace_processor/legacy/thread_time_in_state.textproto android_thread_time_in_state android_thread_time_in_state.out
