@@ -119,6 +119,7 @@ jobs:
119119 cloud_user : ${{ secrets.BENCHMARK_CLOUD_USER }}
120120 cloud_password : ${{ secrets.BENCHMARK_CLOUD_PASSWORD }}
121121 cloud_gateway : ${{ secrets.BENCHMARK_CLOUD_GATEWAY }}
122+ database : load
122123 - name : clean
123124 if : always()
124125 continue-on-error : true
@@ -136,10 +137,11 @@ jobs:
136137 strategy :
137138 matrix :
138139 include :
139- - { dataset: hits, size: Small }
140- - { dataset: hits, size: Large }
141- - { dataset: tpch, size: Small }
142- - { dataset: tpch, size: Large }
140+ - { dataset: hits, size: Small, database: clickbench, timeout: 10 }
141+ - { dataset: hits, size: Large, database: clickbench, timeout: 10 }
142+ - { dataset: tpch, size: Small, database: clickbench, timeout: 20 }
143+ - { dataset: tpch, size: Large, database: clickbench, timeout: 20 }
144+ - { dataset: tpch1000, size: Large, database: tpch_1000, timeout: 60 }
143145 fail-fast : true
144146 max-parallel : 1
145147 steps :
@@ -154,7 +156,7 @@ jobs:
154156 - uses : ./.github/actions/setup_bendsql
155157 - uses : ./.github/actions/benchmark_cloud
156158 if : inputs.target == 'cloud' || inputs.target == 'all'
157- timeout-minutes : 20
159+ timeout-minutes : ${{ matrix.timeout }}
158160 id : benchmark
159161 with :
160162 sha : ${{ inputs.sha }}
@@ -167,6 +169,7 @@ jobs:
167169 cloud_user : ${{ secrets.BENCHMARK_CLOUD_USER }}
168170 cloud_password : ${{ secrets.BENCHMARK_CLOUD_PASSWORD }}
169171 cloud_gateway : ${{ secrets.BENCHMARK_CLOUD_GATEWAY }}
172+ database : ${{ matrix.database }}
170173 - name : clean
171174 if : always()
172175 continue-on-error : true
@@ -191,11 +194,18 @@ jobs:
191194 pattern : benchmark-*
192195 merge-multiple : true
193196 - name : Get Report Prefix
197+ working-directory : benchmark/clickbench
194198 run : |
195- for result in benchmark/clickbench/results/*.json; do
199+ shopt -s nullglob
200+ for result in results/*.json; do
196201 dataset=$(echo $result | sed -E 's/.*result-(\w+)-.*\.json/\1/')
197- mkdir -p benchmark/clickbench/results/${dataset}/
198- mv $result benchmark/clickbench/results/${dataset}/$(basename $result)
202+ mkdir -p results/${dataset}/
203+ mv $result results/${dataset}/$(basename $result)
204+ done
205+ for ndjson in results/*.ndjson; do
206+ dataset=$(echo $ndjson | sed -E 's/.*result-(\w+)-.*\.ndjson/\1/')
207+ mkdir -p results/${dataset}/
208+ mv $ndjson results/${dataset}/$(basename $ndjson)
199209 done
200210 echo "REPORT_S3_PREFIX=s3://benchmark/clickbench/pr/${{ inputs.source_id }}/${{ inputs.run_id }}" >> $GITHUB_ENV
201211 - name : Upload PR clickbench result to R2
@@ -208,10 +218,12 @@ jobs:
208218 working-directory : benchmark/clickbench
209219 run : |
210220 echo -e "## ClickBench Report\n" > /tmp/body
221+ shopt -s nullglob
211222 for p in results/*; do
223+ [ -d "$p" ] || continue
212224 dataset=$(basename $p)
213225 aws s3 sync results/$dataset/ ${REPORT_S3_PREFIX}/ --include "*.json" --no-progress --checksum-algorithm=CRC32
214- aws s3 sync "s3://benchmark/clickbench/release/${dataset}/latest/" ./results/${dataset}/ --exclude "*" --include "*.json"
226+ aws s3 sync "s3://benchmark/clickbench/release/${dataset}/latest/" ./results/${dataset}/ --exclude "*" --include "*.json" || true
215227 ./update_results.py --dataset $dataset --pr ${{ inputs.source_id }}
216228 aws s3 cp ./results/${dataset}.html ${REPORT_S3_PREFIX}/${dataset}.html --no-progress --checksum-algorithm=CRC32
217229 echo "* **${dataset}**: https://benchmark.databend.com/clickbench/pr/${{ inputs.source_id }}/${{ inputs.run_id }}/${dataset}.html" >> /tmp/body
@@ -233,6 +245,7 @@ jobs:
233245 - " tpch"
234246 - " hits"
235247 - " load"
248+ - " tpch1000"
236249 # - "internal"
237250 steps :
238251 - uses : actions/checkout@v4
@@ -245,6 +258,20 @@ jobs:
245258 path : benchmark/clickbench/results
246259 pattern : benchmark-${{ matrix.dataset }}-*
247260 merge-multiple : true
261+ - name : Prepare results directory
262+ working-directory : benchmark/clickbench
263+ run : |
264+ shopt -s nullglob
265+ for result in results/*.json; do
266+ dataset=$(echo $result | sed -E 's/.*result-(\w+)-.*\.json/\1/')
267+ mkdir -p results/${dataset}/
268+ mv $result results/${dataset}/$(basename $result)
269+ done
270+ for ndjson in results/*.ndjson; do
271+ dataset=$(echo $ndjson | sed -E 's/.*result-(\w+)-.*\.ndjson/\1/')
272+ mkdir -p results/${dataset}/
273+ mv $ndjson results/${dataset}/$(basename $ndjson)
274+ done
248275 - name : Generate report and upload to R2
249276 working-directory : benchmark/clickbench
250277 env :
@@ -253,12 +280,6 @@ jobs:
253280 AWS_DEFAULT_REGION : auto
254281 AWS_ENDPOINT_URL : ${{ secrets.R2_ENDPOINT_URL }}
255282 run : |
256- for result in results/*.json; do
257- dataset=$(echo $result | sed -E 's/.*result-(\w+)-.*\.json/\1/')
258- mkdir -p results/${dataset}/
259- mv $result results/${dataset}/$(basename $result)
260- done
261-
262283 aws s3 sync s3://benchmark/clickbench/release/${{ matrix.dataset }}/$(date --date='-1 month' -u +%Y)/$(date --date='-1 month' -u +%m)/ ./results/${{ matrix.dataset }}/
263284 aws s3 sync s3://benchmark/clickbench/release/${{ matrix.dataset }}/$(date -u +%Y)/$(date -u +%m)/ ./results/${{ matrix.dataset }}/
264285 ./update_results.py --dataset ${{ matrix.dataset }} --release ${{ inputs.source_id }}
@@ -271,3 +292,20 @@ jobs:
271292 done
272293
273294 aws s3 cp ./results/${{ matrix.dataset }}.html s3://benchmark/clickbench/release/${{ matrix.dataset }}.html --no-progress --checksum-algorithm=CRC32
295+ - name : Upload NDJSON archives to R2
296+ working-directory : benchmark/clickbench
297+ env :
298+ AWS_ACCESS_KEY_ID : ${{ secrets.R2_ACCESS_KEY_ID }}
299+ AWS_SECRET_ACCESS_KEY : ${{ secrets.R2_SECRET_ACCESS_KEY }}
300+ AWS_DEFAULT_REGION : auto
301+ AWS_ENDPOINT_URL : ${{ secrets.R2_ENDPOINT_URL }}
302+ DATASET : ${{ matrix.dataset }}
303+ run : |
304+ shopt -s nullglob
305+ MONTH=$(date -u +%Y-%m)
306+ ARCHIVE_PREFIX="s3://benchmark/results/${DATASET}/${MONTH}/"
307+ IMPORT_PREFIX="s3://benchmark/results/import/"
308+ for file in ./results/${DATASET}/*.ndjson; do
309+ aws s3 cp $file "${ARCHIVE_PREFIX}$(basename $file)" --no-progress --checksum-algorithm=CRC32
310+ aws s3 cp $file "${IMPORT_PREFIX}$(basename $file)" --no-progress --checksum-algorithm=CRC32
311+ done
0 commit comments