-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
61 lines (44 loc) · 2.56 KB
/
Copy pathMakefile
File metadata and controls
61 lines (44 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Every target regenerates something this repository claims. Nothing post-processes a number.
.PHONY: help install lint test test-fast verify diagnose compare severity demo shots video \
receipts fixtures all clean
help:
@grep -E '^[a-z-]+:.*?##' $(MAKEFILE_LIST) | sed 's/:.*##/\t/' | column -t -s "$$(printf '\t')"
install: ## install with the dev and spark extras
pip install -e ".[dev,spark]"
lint: ## ruff
ruff check .
test-fast: ## everything that does not need a JVM: the parser, the classifier, the reports
python -m pytest -m "not spark" --cov=skewdoc --cov-report=term -q
test: ## the whole suite, including the tests that run real Spark jobs
python -m pytest --cov=skewdoc --cov-report=term --cov-report=xml -q
diagnose: ## diagnose the committed event log from the naive run
skewdoc diagnose data/fixtures/join-naive-noaqe
compare: ## run every join strategy, both AQE settings, and rank them
skewdoc compare --workload join_skew --out docs/experiments/join_matrix.json
compare-agg: ## the same for the two aggregation workloads
skewdoc compare --workload agg_skew --out docs/experiments/agg_matrix.json
skewdoc compare --workload agg_wide --out docs/experiments/agg_wide_matrix.json
severity: ## sweep how skewed the data has to be before each fix pays
python benchmark/bench_severity.py
demo: ## reproduce the scenarios the readme shows, capturing real output
bash tools/run_demo.sh
shots: ## regenerate readme screenshots from real reports
python tools/capture_screenshots.py
video: ## record the demo video from a real terminal session
python tools/record_demo.py
receipts: ## re-measure every published number and check every document that quotes one
python tools/collect_metrics.py
python tools/check_numbers.py
fixtures: ## refresh the committed event logs from a fresh set of runs
skewdoc run --workload join_skew --strategy naive --repeats 1
skewdoc run --workload join_skew --strategy broadcast --repeats 1
skewdoc run --workload agg_skew --strategy naive --repeats 1
rm -rf data/fixtures/join-naive-noaqe data/fixtures/join-broadcast-noaqe \
data/fixtures/agg-naive-noaqe
cp -r build/eventlogs/join_skew-naive-noaqe data/fixtures/join-naive-noaqe
cp -r build/eventlogs/join_skew-broadcast-noaqe data/fixtures/join-broadcast-noaqe
cp -r build/eventlogs/agg_skew-naive-noaqe data/fixtures/agg-naive-noaqe
verify: lint test receipts ## lint, the full suite, and every number re-measured
all: compare compare-agg severity demo shots video receipts ## everything, in order
clean:
rm -rf build reports .pytest_cache .ruff_cache .coverage coverage.xml htmlcov