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