xref: /aosp_15_r20/external/rappor/pipeline/regtest.sh (revision 2abb31345f6c95944768b5222a9a5ed3fc68cc00)
1*2abb3134SXin Li#!/bin/bash
2*2abb3134SXin Li#
3*2abb3134SXin Li# End-to-end tests for the dashboard.
4*2abb3134SXin Li#
5*2abb3134SXin Li# Usage:
6*2abb3134SXin Li#   ./regtest.sh <function name>
7*2abb3134SXin Li#
8*2abb3134SXin Li# NOTE: Must be run in this directory (rappor/pipeline).
9*2abb3134SXin Li
10*2abb3134SXin Liset -o nounset
11*2abb3134SXin Liset -o pipefail
12*2abb3134SXin Liset -o errexit
13*2abb3134SXin Li
14*2abb3134SXin Li# Create schema and params.
15*2abb3134SXin Licreate-metadata() {
16*2abb3134SXin Li  mkdir -p _tmp/metadata
17*2abb3134SXin Li  echo 'Hello from regtest.sh'
18*2abb3134SXin Li
19*2abb3134SXin Li  local params_path=_tmp/metadata/regtest_params.csv
20*2abb3134SXin Li
21*2abb3134SXin Li  # Relying on $RAPPOR_SRC/regtest.sh
22*2abb3134SXin Li  cp --verbose ../_tmp/python/demo1/case_params.csv $params_path
23*2abb3134SXin Li
24*2abb3134SXin Li  # For now, use the same map everywhere.
25*2abb3134SXin Li  cat >_tmp/metadata/dist-analysis.csv <<EOF
26*2abb3134SXin Livar,map_filename
27*2abb3134SXin Liunif,map.csv
28*2abb3134SXin Ligauss,map.csv
29*2abb3134SXin Liexp,map.csv
30*2abb3134SXin Lim.domain,domain_map.csv
31*2abb3134SXin LiEOF
32*2abb3134SXin Li
33*2abb3134SXin Li  # Both single dimensional and multi dimensional metrics.
34*2abb3134SXin Li  cat >_tmp/metadata/rappor-vars.csv <<EOF 
35*2abb3134SXin Limetric,var,var_type,params
36*2abb3134SXin Lim,domain,string,m_params
37*2abb3134SXin Lim,flag..HTTPS,boolean,m_params
38*2abb3134SXin Liunif,,string,regtest_params
39*2abb3134SXin Ligauss,,string,regtest_params
40*2abb3134SXin Liexp,,string,regtest_params
41*2abb3134SXin LiEOF
42*2abb3134SXin Li}
43*2abb3134SXin Li
44*2abb3134SXin Li# Create map files.
45*2abb3134SXin Licreate-maps() {
46*2abb3134SXin Li  mkdir -p _tmp/maps
47*2abb3134SXin Li  # Use the same map for everyone now?
48*2abb3134SXin Li  local map_path=_tmp/maps/map.csv
49*2abb3134SXin Li
50*2abb3134SXin Li  # Relying on $RAPPOR_SRC/regtest.sh
51*2abb3134SXin Li  cp --verbose ../_tmp/python/demo1/case_map.csv $map_path
52*2abb3134SXin Li}
53*2abb3134SXin Li
54*2abb3134SXin Li# Simulate different metrics.
55*2abb3134SXin Licreate-counts() {
56*2abb3134SXin Li  mkdir -p _tmp/counts
57*2abb3134SXin Li
58*2abb3134SXin Li  for date in 2015-12-01 2015-12-02 2015-12-03; do
59*2abb3134SXin Li    mkdir -p _tmp/counts/$date
60*2abb3134SXin Li
61*2abb3134SXin Li    # TODO: Change params for each day.
62*2abb3134SXin Li    cp --verbose \
63*2abb3134SXin Li      ../_tmp/python/demo1/1/case_counts.csv _tmp/counts/$date/unif_counts.csv
64*2abb3134SXin Li    cp --verbose \
65*2abb3134SXin Li      ../_tmp/python/demo2/1/case_counts.csv _tmp/counts/$date/gauss_counts.csv
66*2abb3134SXin Li    cp --verbose \
67*2abb3134SXin Li      ../_tmp/python/demo3/1/case_counts.csv _tmp/counts/$date/exp_counts.csv
68*2abb3134SXin Li  done
69*2abb3134SXin Li}
70*2abb3134SXin Li
71*2abb3134SXin Lidist-task-spec() {
72*2abb3134SXin Li  local job_dir=$1
73*2abb3134SXin Li  ./task_spec.py dist \
74*2abb3134SXin Li    --map-dir _tmp/maps \
75*2abb3134SXin Li    --config-dir _tmp/metadata \
76*2abb3134SXin Li    --output-base-dir $job_dir/raw \
77*2abb3134SXin Li    --bad-report-out _tmp/bad_counts.csv \
78*2abb3134SXin Li    "$@"
79*2abb3134SXin Li}
80*2abb3134SXin Li
81*2abb3134SXin Lidist-job() {
82*2abb3134SXin Li  local job_id=$1
83*2abb3134SXin Li  local pat=$2
84*2abb3134SXin Li
85*2abb3134SXin Li  local job_dir=_tmp/$job_id
86*2abb3134SXin Li  mkdir -p $job_dir/raw
87*2abb3134SXin Li
88*2abb3134SXin Li  local spec_list=$job_dir/spec-list.txt
89*2abb3134SXin Li
90*2abb3134SXin Li  find _tmp/counts/$pat -name \*_counts.csv \
91*2abb3134SXin Li    | dist-task-spec $job_dir \
92*2abb3134SXin Li    | tee $spec_list
93*2abb3134SXin Li
94*2abb3134SXin Li  ./dist.sh decode-dist-many $job_dir $spec_list
95*2abb3134SXin Li  ./dist.sh combine-and-render-html _tmp $job_dir
96*2abb3134SXin Li}
97*2abb3134SXin Li
98*2abb3134SXin Lidist() {
99*2abb3134SXin Li  create-metadata
100*2abb3134SXin Li  create-maps
101*2abb3134SXin Li  create-counts
102*2abb3134SXin Li
103*2abb3134SXin Li  dist-job smoke1 '2015-12-01'  # one day
104*2abb3134SXin Li  dist-job smoke2 '2015-12-0[23]'  # two days
105*2abb3134SXin Li}
106*2abb3134SXin Li
107*2abb3134SXin Li# Simulate different metrics.
108*2abb3134SXin Licreate-reports() {
109*2abb3134SXin Li  mkdir -p _tmp/reports
110*2abb3134SXin Li
111*2abb3134SXin Li  for date in 2015-12-01 2015-12-02 2015-12-03; do
112*2abb3134SXin Li    mkdir -p _tmp/reports/$date
113*2abb3134SXin Li
114*2abb3134SXin Li    # TODO: Change params for each day.
115*2abb3134SXin Li    cp --verbose \
116*2abb3134SXin Li      ../bin/_tmp/reports.csv _tmp/reports/$date/m_reports.csv
117*2abb3134SXin Li  done
118*2abb3134SXin Li}
119*2abb3134SXin Li
120*2abb3134SXin Liassoc-task-spec() {
121*2abb3134SXin Li  local job_dir=$1
122*2abb3134SXin Li  ./task_spec.py assoc \
123*2abb3134SXin Li    --map-dir _tmp/maps \
124*2abb3134SXin Li    --config-dir _tmp/metadata \
125*2abb3134SXin Li    --output-base-dir $job_dir/raw \
126*2abb3134SXin Li    "$@"
127*2abb3134SXin Li}
128*2abb3134SXin Li
129*2abb3134SXin Liassoc-job() {
130*2abb3134SXin Li  local job_id=$1
131*2abb3134SXin Li  local pat=$2
132*2abb3134SXin Li
133*2abb3134SXin Li  local job_dir=_tmp/$job_id
134*2abb3134SXin Li  mkdir -p $job_dir/raw $job_dir/config
135*2abb3134SXin Li
136*2abb3134SXin Li  local spec_list=$job_dir/spec-list.txt
137*2abb3134SXin Li
138*2abb3134SXin Li  find _tmp/reports/$pat -name \*_reports.csv \
139*2abb3134SXin Li    | assoc-task-spec $job_dir \
140*2abb3134SXin Li    | tee $spec_list
141*2abb3134SXin Li
142*2abb3134SXin Li  # decode-many calls decode_assoc.R, which expects this schema in the 'config'
143*2abb3134SXin Li  # dir now.  TODO: adjust this.
144*2abb3134SXin Li  cp --verbose _tmp/metadata/rappor-vars.csv $job_dir/config
145*2abb3134SXin Li  cp --verbose ../bin/_tmp/m_params.csv $job_dir/config
146*2abb3134SXin Li
147*2abb3134SXin Li  ./assoc.sh decode-many $job_dir $spec_list
148*2abb3134SXin Li  ./assoc.sh combine-and-render-html _tmp $job_dir
149*2abb3134SXin Li}
150*2abb3134SXin Li
151*2abb3134SXin Li# Copy some from bin/test.sh?  The input _reports.csv files should be taken
152*2abb3134SXin Li# from there.
153*2abb3134SXin Liassoc() {
154*2abb3134SXin Li  create-reports
155*2abb3134SXin Li  cp --verbose ../bin/_tmp/domain_map.csv _tmp/maps
156*2abb3134SXin Li
157*2abb3134SXin Li  assoc-job smoke1-assoc '2015-12-01'  # one day
158*2abb3134SXin Li  assoc-job smoke2-assoc '2015-12-0[23]'  # two days
159*2abb3134SXin Li}
160*2abb3134SXin Li
161*2abb3134SXin Li"$@"
162