chore: import upstream snapshot with attribution
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Usage: ./get-dolt-correctness-job-json.sh <jobname> <version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
jobname="$1"
|
||||
version="$2"
|
||||
|
||||
echo '
|
||||
{
|
||||
"apiVersion": "batch/v1",
|
||||
"kind": "Job",
|
||||
"metadata": {
|
||||
"name": "'$jobname'",
|
||||
"namespace": "fuzzer"
|
||||
},
|
||||
"spec": {
|
||||
"backoffLimit": 2,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"labels": {
|
||||
"k8s-liquidata-inc-monitored-job": "created-by-static-config",
|
||||
"app": "fuzzer"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"serviceAccountName": "fuzzer",
|
||||
"containers": [
|
||||
{
|
||||
"name": "fuzzer",
|
||||
"image": "407903926827.dkr.ecr.us-west-2.amazonaws.com/liquidata/fuzzer:latest",
|
||||
"env": [
|
||||
{ "name": "REPO_ACCESS_TOKEN", "value": "'$REPO_ACCESS_TOKEN'"},
|
||||
{ "name": "ACTOR", "value": "'$ACTOR'"},
|
||||
{ "name": "DOLT_BIN", "value": "/usr/local/bin"}
|
||||
],
|
||||
"args": [
|
||||
"--dolt-version='$version'",
|
||||
"--bucket=dolt-fuzzer-runs",
|
||||
"--region=us-west-2",
|
||||
"--version-gate-job",
|
||||
"--fuzzer-args=basic, --cycles=5"
|
||||
]
|
||||
}
|
||||
],
|
||||
"restartPolicy": "OnFailure"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$KUBECONFIG" ]; then
|
||||
echo "Must set KUBECONFIG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$TEMPLATE_SCRIPT" ]; then
|
||||
echo "Must set TEMPLATE_SCRIPT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Must set VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "using dolt version: $VERSION"
|
||||
|
||||
if [ -z "$ACTOR" ]; then
|
||||
echo "Must set ACTOR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
nomsFormat="ldnbf"
|
||||
if [ "$NOMS_BIN_FORMAT" == "__DOLT__"]; then
|
||||
nomsFormat="doltnbf"
|
||||
fi
|
||||
|
||||
# use first 8 characters of TO_VERSION to differentiate
|
||||
# jobs
|
||||
short=${VERSION:0:8}
|
||||
lowered=$(echo "$ACTOR" | tr '[:upper:]' '[:lower:]')
|
||||
actorShort="$lowered-$nomsFormat-$short"
|
||||
|
||||
jobname="$actorShort"
|
||||
|
||||
source "$TEMPLATE_SCRIPT" "$jobname" "$VERSION" > job.json
|
||||
|
||||
out=$(KUBECONFIG="$KUBECONFIG" kubectl apply -f job.json || true)
|
||||
|
||||
if [ "$out" != "job.batch/$jobname created" ]; then
|
||||
echo "something went wrong creating job... this job likely already exists in the cluster"
|
||||
echo "$out"
|
||||
exit 1
|
||||
else
|
||||
echo "$out"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,109 @@
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import random
|
||||
|
||||
if len(sys.argv) != 7:
|
||||
print("usage: python3 data.py <output-dir> <table-num> <row-num> <add-num> <delete-num> <update-num>")
|
||||
sys.exit(1)
|
||||
|
||||
table_dir = sys.argv[1]
|
||||
tables = int(sys.argv[2])
|
||||
rows = int(sys.argv[3])
|
||||
|
||||
adds = int(sys.argv[4])
|
||||
deletes = int(sys.argv[5])
|
||||
updates = int(sys.argv[6])
|
||||
|
||||
if __name__=="__main__":
|
||||
if deletes + updates > rows:
|
||||
raise ValueError(f"deletes({deletes}) + updates({updates}) = {updates+deletes} > total rows({rows})")
|
||||
if not os.path.exists(table_dir):
|
||||
shutil.rmtree(table_dir, ignore_errors=True)
|
||||
os.makedirs(table_dir)
|
||||
|
||||
ys = [i for i in range(rows+adds+deletes+updates)]
|
||||
random.shuffle(ys)
|
||||
|
||||
with open(f"{table_dir}/create.sql", "+w") as f:
|
||||
for i in range(tables):
|
||||
if i == 0:
|
||||
f.write(f"create table table{i} (x int primary key, y int, z int, key y_idx(y));\n")
|
||||
else:
|
||||
f.write(f"create table table{i} (x int primary key, y int, z int, key y_idx(y), foreign key (y) references table{i-1}(y));\n")
|
||||
|
||||
|
||||
for j in range(tables):
|
||||
with open(f"{table_dir}/table{j}.csv", "+w") as f:
|
||||
f.write("x,y,z\n")
|
||||
for i in range(rows+deletes+updates):
|
||||
f.write(f"{i},{ys[i]},{i}\n")
|
||||
|
||||
with open(f"{table_dir}/branch.sql", "+w") as f:
|
||||
for i in range(tables):
|
||||
f.write(f"set foreign_key_checks = 0;\n")
|
||||
f.write(f"set unique_checks = 0;\n")
|
||||
if adds > 0:
|
||||
f.write(f"insert into table{i} values\n")
|
||||
for j,k in enumerate(ys[rows+deletes+updates:rows+deletes+updates+adds]):
|
||||
if j == 0:
|
||||
f.write(f" ")
|
||||
else:
|
||||
f.write(f", ")
|
||||
f.write(f"({rows+deletes+updates+j},{k},{rows+deletes+updates+j})")
|
||||
f.write(f";\n")
|
||||
|
||||
if deletes > 0:
|
||||
f.write(f"delete from table{i} where x in\n")
|
||||
for j, y in enumerate(ys[:deletes]):
|
||||
if j == 0:
|
||||
f.write(f" (")
|
||||
else:
|
||||
f.write(f", ")
|
||||
f.write(f"{y}")
|
||||
f.write(f");\n")
|
||||
|
||||
if updates > 0:
|
||||
f.write(f"update table{i} set y=y+1 where x in\n")
|
||||
for j, y in enumerate(ys[deletes:deletes+updates]):
|
||||
if j == 0:
|
||||
f.write(f" (")
|
||||
else:
|
||||
f.write(f", ")
|
||||
f.write(f"{y}")
|
||||
f.write(f");\n")
|
||||
|
||||
with open(f"{table_dir}/diverge_main.sql", "+w") as f:
|
||||
for i in range(tables):
|
||||
f.write(f"set foreign_key_checks = 0;\n")
|
||||
f.write(f"set unique_checks = 0;\n")
|
||||
if adds > 0:
|
||||
# y value is one higher, conflict
|
||||
f.write(f"insert into table{i} values\n")
|
||||
for j,k in enumerate(ys[rows+deletes+updates:rows+deletes+updates+adds]):
|
||||
if j == 0:
|
||||
f.write(f" ")
|
||||
else:
|
||||
f.write(f", ")
|
||||
f.write(f"({rows+deletes+updates+j},{k+1},{rows+deletes+updates+j})")
|
||||
f.write(f";\n")
|
||||
|
||||
if deletes > 0:
|
||||
f.write(f"delete from table{i} where y in\n")
|
||||
for j, y in enumerate(ys[:deletes]):
|
||||
if j == 0:
|
||||
f.write(f" (")
|
||||
else:
|
||||
f.write(f", ")
|
||||
f.write(f"{y}")
|
||||
f.write(f");\n")
|
||||
|
||||
if updates > 0:
|
||||
f.write(f"update table{i} set y=y+1 where y in\n")
|
||||
for j, y in enumerate(ys[deletes:deletes+updates]):
|
||||
if j == 0:
|
||||
f.write(f" (")
|
||||
else:
|
||||
f.write(f", ")
|
||||
f.write(f"{y}")
|
||||
f.write(f");\n")
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "usage: setup.sh <dolt-dir> <data-dir>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DIR=$1
|
||||
DATA=$2
|
||||
|
||||
rm -rf $DIR
|
||||
mkdir $DIR
|
||||
cd $DIR
|
||||
|
||||
dolt init
|
||||
|
||||
dolt sql < $DATA/create.sql
|
||||
|
||||
i=0
|
||||
for t in $(ls $DATA/ | grep "table"); do
|
||||
echo $t
|
||||
dolt table import --disable-fk-checks -u "table${i}" "$DATA/$t"
|
||||
((i++))
|
||||
done
|
||||
|
||||
dolt commit -Am "add tables"
|
||||
|
||||
dolt sql < $DATA/diverge_main.sql
|
||||
|
||||
dolt commit -Am "add rows to conflict"
|
||||
|
||||
dolt checkout -b feature
|
||||
dolt reset --hard head~1
|
||||
|
||||
dolt sql < $DATA/branch.sql
|
||||
|
||||
dolt commit -Am "new branch"
|
||||
@@ -0,0 +1,135 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 10 ]; then
|
||||
echo "Usage: ./get-job-json.sh <jobname> <fromServer> <fromVersion> <toServer> <toVersion> <timePrefix> <actorPrefix> <format> <issueNumber> <initBigRepo> <nomsBinFormat> <sysbenchTestTime> <withTpcc>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
jobName="$1"
|
||||
fromServer="$2"
|
||||
fromVersion="$3"
|
||||
toServer="$4"
|
||||
toVersion="$5"
|
||||
timePrefix="$6"
|
||||
actorPrefix="$7"
|
||||
format="$8"
|
||||
issueNumber="$9"
|
||||
initBigRepo="${10}"
|
||||
nomsBinFormat="${11}"
|
||||
sysbenchTestTime="${12}"
|
||||
withTpcc="${13}"
|
||||
tpccRegex="tpcc%"
|
||||
|
||||
if [ -n "$initBigRepo" ]; then
|
||||
initBigRepo="\"--init-big-repo=$initBigRepo\","
|
||||
fi
|
||||
|
||||
if [ -n "$nomsBinFormat" ]; then
|
||||
nomsBinFormat="\"--noms-bin-format=$nomsBinFormat\","
|
||||
fi
|
||||
|
||||
if [ -n "$sysbenchTestTime" ]; then
|
||||
sysbenchTestTime="\"--sysbench-test-time=$sysbenchTestTime\","
|
||||
fi
|
||||
|
||||
if [ -n "$withTpcc" ]; then
|
||||
withTpcc="\"--withTpcc=$withTpcc\","
|
||||
fi
|
||||
|
||||
readTests="('oltp_read_only','oltp_point_select','select_random_points','select_random_ranges','covering_index_scan','index_scan','table_scan','groupby_scan','index_join_scan','types_table_scan','index_join')"
|
||||
|
||||
medianLatencyChangeReadsQuery="with result(test_name, from_latency, to_latency) as (select f.test_name, avg(f.latency_percentile), avg(t.latency_percentile) from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name in $readTests group by f.test_name) select test_name as read_tests, from_latency, to_latency, round(100 * ((to_latency - from_latency) / from_latency), 2) as percent_change from result;"
|
||||
|
||||
writeTests="('oltp_read_write','oltp_update_index','oltp_update_non_index','oltp_insert','oltp_write_only','oltp_delete_insert','types_delete_insert')"
|
||||
|
||||
medianLatencyChangeWritesQuery="with result(test_name, from_latency, to_latency) as (select f.test_name, avg(f.latency_percentile), avg(t.latency_percentile) from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name in $writeTests group by f.test_name) select test_name as write_tests, from_latency, to_latency, round(100 * ((to_latency - from_latency) / from_latency), 2) as percent_change from result;"
|
||||
|
||||
tpccLatencyQuery="with result(test_name, from_latency, to_latency) as (select f.test_name, avg(f.latency_percentile), avg(t.latency_percentile) from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name LIKE '$tpccRegex' group by f.test_name) select test_name, from_latency as from_latency_p95, to_latency as to_latency_p95, round(100 * ((to_latency - from_latency) / from_latency), 2) as percent_change from result;"
|
||||
|
||||
tpccTpsQuery="with result(test_name, from_server_name, from_server_version, from_tps, to_server_name, to_server_version, to_tps) as (select f.test_name, f.server_name, f.server_version, avg(f.sql_transactions_per_second), t.server_name, t.server_version, avg(t.sql_transactions_per_second) from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name LIKE 'tpcc%' group by f.test_name) select test_name, from_server_name, from_server_version, from_tps, to_server_name, to_server_version, to_tps, round(100 * ((to_tps - from_tps) / from_tps), 2) as percent_change from result;"
|
||||
|
||||
perfRegressionQuery="with result(from_lat, to_lat) as (select avg(f.latency_percentile), avg(t.latency_percentile) from from_results as f join to_results as t on f.test_name = t.test_name group by t.test_name) select sum((to_lat - from_lat) / from_lat > 0.05) from result;"
|
||||
|
||||
echo '
|
||||
{
|
||||
"apiVersion": "batch/v1",
|
||||
"kind": "Job",
|
||||
"metadata": {
|
||||
"name": "'$jobName'",
|
||||
"namespace": "performance-benchmarking"
|
||||
},
|
||||
"spec": {
|
||||
"backoffLimit": 1,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"annotations": {
|
||||
"alert_recipients": "'$ACTOR_EMAIL'"
|
||||
},
|
||||
"labels": {
|
||||
"k8s-liquidata-inc-monitored-job": "created-by-static-config",
|
||||
"app": "performance-benchmarking"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"serviceAccountName": "performance-benchmarking",
|
||||
"containers": [
|
||||
{
|
||||
"name": "performance-benchmarking",
|
||||
"image": "407903926827.dkr.ecr.us-west-2.amazonaws.com/liquidata/performance-benchmarking:latest",
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "7000m"
|
||||
}
|
||||
},
|
||||
"env": [
|
||||
{ "name": "GOMAXPROCS", "value": "7" },
|
||||
{ "name": "GOEXPERIMENT", "value": "greenteagc" },
|
||||
{ "name": "ACTOR", "value": "'$ACTOR'" },
|
||||
{ "name": "ACTOR_EMAIL", "value": "'$ACTOR_EMAIL'" },
|
||||
{ "name": "REPO_ACCESS_TOKEN", "value": "'$REPO_ACCESS_TOKEN'" }
|
||||
],
|
||||
"imagePullPolicy": "Always",
|
||||
"args": [
|
||||
"--schema=/app/schema.sql",
|
||||
"--useDoltHubLuaScriptsRepo",
|
||||
"--output='$format'",
|
||||
"--from-server='$fromServer'",
|
||||
"--from-version='$fromVersion'",
|
||||
"--to-server='$toServer'",
|
||||
"--to-version='$toVersion'",
|
||||
"--bucket=performance-benchmarking-github-actions-results",
|
||||
"--region=us-west-2",
|
||||
"--issue-number='$issueNumber'",
|
||||
"--results-dir='$timePrefix'",
|
||||
"--results-prefix='$actorPrefix'",
|
||||
"--perf-regression-query='"$perfRegressionQuery"'",
|
||||
'"$sysbenchTestTime"'
|
||||
'"$withTpcc"'
|
||||
'"$initBigRepo"'
|
||||
'"$nomsBinFormat"'
|
||||
"--sysbenchQueries='"$medianLatencyChangeReadsQuery"'",
|
||||
"--sysbenchQueries='"$medianLatencyChangeWritesQuery"'",
|
||||
"--tpccQueries='"$tpccLatencyQuery"'",
|
||||
"--tpccQueries='"$tpccTpsQuery"'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"restartPolicy": "Never",
|
||||
"nodeSelector": {
|
||||
"performance-benchmarking-worker": "true"
|
||||
},
|
||||
"tolerations": [
|
||||
{
|
||||
"effect": "NoSchedule",
|
||||
"key": "dedicated",
|
||||
"operator": "Equal",
|
||||
"value": "performance-benchmarking-worker"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'
|
||||
@@ -0,0 +1,98 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 6 ]; then
|
||||
echo "Usage: ./get-job-json.sh <jobname> <version> <futureVersion> <timePrefix> <actorPrefix> <format> <initBigRepo> <nomsBinFormat>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
jobName="$1"
|
||||
version="$2"
|
||||
futureVersion="$3"
|
||||
timePrefix="$4"
|
||||
actorPrefix="$5"
|
||||
format="$6"
|
||||
initBigRepo="$7"
|
||||
nomsBinFormat="$8"
|
||||
|
||||
if [ -n "$initBigRepo" ]; then
|
||||
initBigRepo="\"--init-big-repo=$initBigRepo\","
|
||||
fi
|
||||
|
||||
if [ -n "$nomsBinFormat" ]; then
|
||||
nomsBinFormat="\"--noms-bin-format=$nomsBinFormat\","
|
||||
fi
|
||||
|
||||
echo '
|
||||
{
|
||||
"apiVersion": "batch/v1",
|
||||
"kind": "Job",
|
||||
"metadata": {
|
||||
"name": "'$jobName'",
|
||||
"namespace": "performance-benchmarking"
|
||||
},
|
||||
"spec": {
|
||||
"backoffLimit": 1,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"annotations": {
|
||||
"alert_recipients": "'$ACTOR_EMAIL'"
|
||||
},
|
||||
"labels": {
|
||||
"k8s-liquidata-inc-monitored-job": "created-by-static-config",
|
||||
"app": "performance-benchmarking"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"serviceAccountName": "performance-benchmarking",
|
||||
"containers": [
|
||||
{
|
||||
"name": "performance-benchmarking",
|
||||
"image": "407903926827.dkr.ecr.us-west-2.amazonaws.com/liquidata/performance-benchmarking:latest",
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "7000m"
|
||||
}
|
||||
},
|
||||
"env": [
|
||||
{ "name": "GOMAXPROCS", "value": "7" },
|
||||
{ "name": "GOEXPERIMENT", "value": "greenteagc" },
|
||||
{ "name": "ACTOR", "value": "'$ACTOR'" },
|
||||
{ "name": "ACTOR_EMAIL", "value": "'$ACTOR_EMAIL'" },
|
||||
{ "name": "REPO_ACCESS_TOKEN", "value": "'$REPO_ACCESS_TOKEN'" },
|
||||
{ "name": "BRANCH", "value": "'$BRANCH'" }
|
||||
],
|
||||
"imagePullPolicy": "Always",
|
||||
"args": [
|
||||
"--schema=/app/schema.sql",
|
||||
"--useDoltHubLuaScriptsRepo",
|
||||
"--profile-version='"$version"'",
|
||||
"--future-version='"$futureVersion"'",
|
||||
"--bucket=performance-benchmarking-github-actions-results",
|
||||
"--region=us-west-2",
|
||||
"--results-dir='$timePrefix'",
|
||||
"--results-prefix='$actorPrefix'",
|
||||
'"$initBigRepo"'
|
||||
'"$nomsBinFormat"'
|
||||
"--output='$format'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"restartPolicy": "Never",
|
||||
"nodeSelector": {
|
||||
"performance-benchmarking-worker": "true"
|
||||
},
|
||||
"tolerations": [
|
||||
{
|
||||
"effect": "NoSchedule",
|
||||
"key": "dedicated",
|
||||
"operator": "Equal",
|
||||
"value": "performance-benchmarking-worker"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'
|
||||
@@ -0,0 +1,147 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 12 ]; then
|
||||
echo "Usage: ./get-job-json.sh <jobname> <fromServer> <fromVersion> <toServer> <toVersion> <timeprefix> <actorprefix> <format> <issueNumber> <initBigRepo> <nomsBinFormat> <sysbenchTestTime> <withTpcc>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
jobname="$1"
|
||||
fromServer="$2"
|
||||
fromVersion="$3"
|
||||
toServer="$4"
|
||||
toVersion="$5"
|
||||
timeprefix="$6"
|
||||
actorprefix="$7"
|
||||
format="$8"
|
||||
issueNumber="$9"
|
||||
initBigRepo="${10}"
|
||||
nomsBinFormat="${11}"
|
||||
sysbenchTestTime="${12}"
|
||||
withTpcc="${13}"
|
||||
precision="2"
|
||||
tpccRegex="tpcc%"
|
||||
toProfileKey=""
|
||||
|
||||
if [ -n "$initBigRepo" ]; then
|
||||
initBigRepo="\"--init-big-repo=$initBigRepo\","
|
||||
fi
|
||||
|
||||
if [ -n "$nomsBinFormat" ]; then
|
||||
nomsBinFormat="\"--noms-bin-format=$nomsBinFormat\","
|
||||
fi
|
||||
|
||||
if [ -n "$sysbenchTestTime" ]; then
|
||||
sysbenchTestTime="\"--sysbench-test-time=$sysbenchTestTime\","
|
||||
fi
|
||||
|
||||
if [ -n "$withTpcc" ]; then
|
||||
withTpcc="\"--withTpcc=$withTpcc\","
|
||||
fi
|
||||
|
||||
if [ -n "$TO_PROFILE_KEY" ]; then
|
||||
toProfileKey="\"--to-profile-key=$TO_PROFILE_KEY\","
|
||||
fi
|
||||
|
||||
readTests="('oltp_read_only', 'oltp_point_select', 'select_random_points', 'select_random_ranges', 'covering_index_scan', 'index_scan', 'table_scan', 'groupby_scan', 'index_join_scan', 'types_table_scan', 'index_join')"
|
||||
medianLatencyMultiplierReadsQuery="select f.test_name as read_tests, f.server_name, f.server_version, avg(f.latency_percentile) as from_latency_median, t.server_name, t.server_version, avg(t.latency_percentile) as to_latency_median, ROUND(avg(t.latency_percentile) / (avg(f.latency_percentile) + .000001), $precision) as multiplier from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name in $readTests group by f.test_name;"
|
||||
meanMultiplierReadsQuery="select round(avg(multipliers), $precision) as reads_mean_multiplier from (select (round(avg(t.latency_percentile) / (avg(f.latency_percentile) + .000001), $precision)) as multipliers from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name in $readTests group by f.test_name)"
|
||||
|
||||
writeTests="('oltp_read_write', 'oltp_update_index', 'oltp_update_non_index', 'oltp_insert', 'oltp_write_only', 'oltp_delete_insert', 'types_delete_insert')"
|
||||
medianLatencyMultiplierWritesQuery="select f.test_name as write_tests, f.server_name, f.server_version, avg(f.latency_percentile) as from_latency_median, t.server_name, t.server_version, avg(t.latency_percentile) as to_latency_median, ROUND(avg(t.latency_percentile) / (avg(f.latency_percentile) + .000001), $precision) as multiplier from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name in $writeTests group by f.test_name;"
|
||||
meanMultiplierWritesQuery="select round(avg(multipliers), $precision) as writes_mean_multiplier from (select (round(avg(t.latency_percentile) / (avg(f.latency_percentile) + .000001), $precision)) as multipliers from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name in $writeTests group by f.test_name)"
|
||||
|
||||
meanMultiplierOverallQuery="select round(avg(multipliers), $precision) as overall_mean_multiplier from (select (round(avg(t.latency_percentile) / (avg(f.latency_percentile) + .000001), $precision)) as multipliers from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name != 'bulk_insert' group by f.test_name)"
|
||||
|
||||
tpccLatencyQuery="select f.test_name as tpcc_latency, f.server_name, f.server_version, avg(f.latency_percentile) as from_latency_p95, t.server_name, t.server_version, avg(t.latency_percentile) as to_latency_p95, ROUND(avg(t.latency_percentile) / (avg(f.latency_percentile) + .000001), $precision) as multiplier from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name LIKE '$tpccRegex' group by f.test_name;"
|
||||
tpccTpsQuery="select f.test_name as tpcc_tps, f.server_name, f.server_version, avg(f.sql_transactions_per_second) as from_tps, t.test_name as test_name, t.server_name, t.server_version, avg(t.sql_transactions_per_second) as to_tps, ROUND(avg(f.sql_transactions_per_second) / (avg(t.sql_transactions_per_second) + .000001), $precision) as multiplier from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name LIKE 'tpcc%' group by f.test_name;"
|
||||
tpccTpsMultiplierQuery="select ROUND(avg(f.sql_transactions_per_second) / (avg(t.sql_transactions_per_second) + .000001), $precision) as tpcc_tps_multiplier from from_results as f join to_results as t on f.test_name = t.test_name where f.test_name like 'tpcc%' group by f.test_name"
|
||||
|
||||
echo '
|
||||
{
|
||||
"apiVersion": "batch/v1",
|
||||
"kind": "Job",
|
||||
"metadata": {
|
||||
"name": "'$jobname'",
|
||||
"namespace": "performance-benchmarking"
|
||||
},
|
||||
"spec": {
|
||||
"backoffLimit": 3,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"annotations": {
|
||||
"alert_recipients": "'$ACTOR_EMAIL'"
|
||||
},
|
||||
"labels": {
|
||||
"k8s-liquidata-inc-monitored-job": "created-by-static-config",
|
||||
"app": "performance-benchmarking"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"serviceAccountName": "performance-benchmarking",
|
||||
"containers": [
|
||||
{
|
||||
"name": "performance-benchmarking",
|
||||
"image": "407903926827.dkr.ecr.us-west-2.amazonaws.com/liquidata/performance-benchmarking:latest",
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "7000m"
|
||||
}
|
||||
},
|
||||
"env": [
|
||||
{ "name": "GOMAXPROCS", "value": "7" },
|
||||
{ "name": "GOEXPERIMENT", "value": "greenteagc" },
|
||||
{ "name": "ACTOR", "value": "'$ACTOR'" },
|
||||
{ "name": "ACTOR_EMAIL", "value": "'$ACTOR_EMAIL'" },
|
||||
{ "name": "REPO_ACCESS_TOKEN", "value": "'$REPO_ACCESS_TOKEN'" }
|
||||
],
|
||||
"imagePullPolicy": "Always",
|
||||
"args": [
|
||||
"--schema=/app/schema.sql",
|
||||
"--useDoltHubLuaScriptsRepo",
|
||||
"--output='$format'",
|
||||
"--mysql-exec=/usr/sbin/mysqld",
|
||||
"--mysql-socket=/home/tester/.mysql/mysqld.sock",
|
||||
"--mysql-protocol=unix",
|
||||
"--from-server='$fromServer'",
|
||||
"--from-version='$fromVersion'",
|
||||
"--to-server='$toServer'",
|
||||
"--to-version='$toVersion'",
|
||||
'"$toProfileKey"'
|
||||
"--bucket=performance-benchmarking-github-actions-results",
|
||||
"--region=us-west-2",
|
||||
"--results-dir='$timeprefix'",
|
||||
"--results-prefix='$actorprefix'",
|
||||
'"$sysbenchTestTime"'
|
||||
'"$withTpcc"'
|
||||
'"$initBigRepo"'
|
||||
'"$nomsBinFormat"'
|
||||
"--sysbenchQueries='"$medianLatencyMultiplierReadsQuery"'",
|
||||
"--sysbenchQueries='"$meanMultiplierReadsQuery"'",
|
||||
"--sysbenchQueries='"$medianLatencyMultiplierWritesQuery"'",
|
||||
"--sysbenchQueries='"$meanMultiplierWritesQuery"'",
|
||||
"--sysbenchQueries='"$meanMultiplierOverallQuery"'",
|
||||
"--tpccQueries='"$tpccLatencyQuery"'",
|
||||
"--tpccQueries='"$tpccTpsQuery"'",
|
||||
"--tpccQueries='"$tpccTpsMultiplierQuery"'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"restartPolicy": "Never",
|
||||
"nodeSelector": {
|
||||
"performance-benchmarking-worker": "true"
|
||||
},
|
||||
"tolerations": [
|
||||
{
|
||||
"effect": "NoSchedule",
|
||||
"key": "dedicated",
|
||||
"operator": "Equal",
|
||||
"value": "performance-benchmarking-worker"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$KUBECONFIG" ]; then
|
||||
echo "Must set KUBECONFIG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$TEMPLATE_SCRIPT" ]; then
|
||||
echo "Must set TEMPLATE_SCRIPT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$NOMS_BIN_FORMAT" ]; then
|
||||
echo "Must set NOMS_BIN_FORMAT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$PROFILE" ]; then
|
||||
if [ -z "$FROM_VERSION" ]; then
|
||||
echo "Must set FROM_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$FUTURE_VERSION" ]; then
|
||||
echo "Setting FUTURE_VERSION to $FROM_VERSION"
|
||||
export FUTURE_VERSION="$FROM_VERSION"
|
||||
fi
|
||||
|
||||
echo "Setting profile version to $FROM_VERSION"
|
||||
else
|
||||
if [ -z "$FROM_SERVER" ] || [ -z "$FROM_VERSION" ] || [ -z "$TO_SERVER" ] || [ -z "$TO_VERSION" ]; then
|
||||
echo "Must set FROM_SERVER FROM_VERSION TO_SERVER and TO_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Setting from $FROM_SERVER: $FROM_VERSION"
|
||||
echo "Setting to $TO_SERVER: $TO_VERSION"
|
||||
fi
|
||||
|
||||
if [ -z "$ACTOR" ]; then
|
||||
echo "Must set ACTOR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$MODE" ]; then
|
||||
echo "Must set MODE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$NOMS_BIN_FORMAT" = "__DOLT__" ]; then
|
||||
INIT_BIG_REPO="false"
|
||||
fi
|
||||
|
||||
# use first 8 characters of FROM_VERSION | TO_VERSION to differentiate
|
||||
# jobs
|
||||
short=${TO_VERSION:0:8}
|
||||
if [ -n "$PROFILE" ]; then
|
||||
short=${FROM_VERSION:0:8}
|
||||
fi
|
||||
|
||||
lowered=$(echo "$ACTOR" | tr '[:upper:]' '[:lower:]')
|
||||
actorShort="$lowered-$short"
|
||||
|
||||
# random sleep
|
||||
sleep 0.$[ ( $RANDOM % 10 ) + 1 ]s
|
||||
|
||||
timesuffix=`date +%s%N`
|
||||
|
||||
jobname="$actorShort"
|
||||
if [ -n "$WITH_TPCC" ]; then
|
||||
jobname="$jobname-tpcc"
|
||||
elif [ -n "$PROFILE" ]; then
|
||||
jobname="$jobname-profile"
|
||||
fi
|
||||
|
||||
jobname="$jobname-$timesuffix"
|
||||
|
||||
timeprefix=$(date +%Y/%m/%d)
|
||||
|
||||
actorprefix="$MODE/$lowered/$jobname/$NOMS_BIN_FORMAT"
|
||||
|
||||
format="markdown"
|
||||
if [[ "$MODE" = "release" || "$MODE" = "nightly" ]]; then
|
||||
format="html"
|
||||
fi
|
||||
|
||||
export TO_PROFILE_KEY
|
||||
|
||||
# set value to ISSUE_NUMBER environment variable
|
||||
# or default to -1
|
||||
issuenumber=${ISSUE_NUMBER:-"-1"}
|
||||
|
||||
if [ -n "$PROFILE" ]; then
|
||||
source \
|
||||
"$TEMPLATE_SCRIPT" \
|
||||
"$jobname" \
|
||||
"$FROM_VERSION" \
|
||||
"$FUTURE_VERSION" \
|
||||
"$timeprefix" \
|
||||
"$actorprefix" \
|
||||
"$format" \
|
||||
"$INIT_BIG_REPO" \
|
||||
"$NOMS_BIN_FORMAT" > job.json
|
||||
else
|
||||
source \
|
||||
"$TEMPLATE_SCRIPT" \
|
||||
"$jobname" \
|
||||
"$FROM_SERVER" \
|
||||
"$FROM_VERSION" \
|
||||
"$TO_SERVER" \
|
||||
"$TO_VERSION" \
|
||||
"$timeprefix" \
|
||||
"$actorprefix" \
|
||||
"$format" \
|
||||
"$issuenumber" \
|
||||
"$INIT_BIG_REPO" \
|
||||
"$NOMS_BIN_FORMAT" \
|
||||
"$SYSBENCH_TEST_TIME" \
|
||||
"$WITH_TPCC" > job.json
|
||||
fi
|
||||
|
||||
out=$(KUBECONFIG="$KUBECONFIG" kubectl apply -f job.json || true)
|
||||
|
||||
if [ "$out" != "job.batch/$jobname created" ]; then
|
||||
echo "something went wrong creating job... this job likely already exists in the cluster"
|
||||
echo "$out"
|
||||
exit 1
|
||||
else
|
||||
echo "$out"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "Usage: ./validate-commentor.sh COMMENTOR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
validcommentors="coffeegoddd bheni Hydrocharged reltuk tbantle22 timsehn zachmu nicktobey fulghum macneale4 jycor angelamayxie elianddb"
|
||||
|
||||
contains() {
|
||||
[[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] && echo "valid=true" >> $GITHUB_OUTPUT || exit 0
|
||||
}
|
||||
|
||||
contains "$validcommentors" "$1"
|
||||
Executable
+67
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# Inputs via environment variables
|
||||
RAW_DEP=${RAW_DEP:-}
|
||||
RAW_SHA=${RAW_SHA:-}
|
||||
RAW_USER=${RAW_USER:-}
|
||||
RAW_MAIL=${RAW_MAIL:-}
|
||||
|
||||
# --- Validate dependency via allow-list and map to module path + label
|
||||
case "${RAW_DEP:-}" in
|
||||
go-mysql-server)
|
||||
MODULE='github.com/dolthub/go-mysql-server'
|
||||
LABEL='gms-bump'
|
||||
;;
|
||||
eventsapi_schema)
|
||||
MODULE='github.com/dolthub/eventsapi_schema'
|
||||
LABEL='eventsapi_schema-bump'
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported dependency '${RAW_DEP:-}'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Validate head SHA/tag (conservative)
|
||||
# allow only hex SHAs or safe tag-ish: letters, digits, dot, dash, underscore, plus
|
||||
if [ -z "${RAW_SHA:-}" ] || ! printf '%s' "$RAW_SHA" | grep -qE '^[A-Za-z0-9._+-]+$'; then
|
||||
echo "Invalid head_commit_sha" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Keep a short 8-char form if it's a hex SHA; otherwise derive short safe token
|
||||
if printf '%s' "$RAW_SHA" | grep -qiE '^[0-9a-f]{40}$'; then
|
||||
SHORT_SHA="${RAW_SHA:0:8}"
|
||||
else
|
||||
SHORT_SHA="$(printf '%s' "$RAW_SHA" | tr -cd 'A-Za-z0-9._+-' | cut -c1-12)"
|
||||
fi
|
||||
|
||||
# --- Validate assignee username (GitHub-compatible subset)
|
||||
if [ -z "${RAW_USER:-}" ] || ! printf '%s' "$RAW_USER" | grep -qE '^[A-Za-z0-9-]{1,39}$'; then
|
||||
echo "Invalid assignee username" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Validate email; if invalid, fall back to GitHub noreply
|
||||
if [ -n "${RAW_MAIL:-}" ] && printf '%s' "$RAW_MAIL" | grep -qE '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'; then
|
||||
SAFE_EMAIL="$RAW_MAIL"
|
||||
else
|
||||
SAFE_EMAIL="${RAW_USER}+noreply@users.noreply.github.com"
|
||||
fi
|
||||
|
||||
# --- Build a safe branch name: <assignee>-<short>
|
||||
BRANCH_NAME="$(printf '%s-%s' "$RAW_USER" "$SHORT_SHA" | tr -cd 'A-Za-z0-9._-')"
|
||||
|
||||
# Expose sanitized values as step outputs
|
||||
{
|
||||
echo "label=$LABEL"
|
||||
echo "safe_module=$MODULE"
|
||||
echo "safe_head=$RAW_SHA"
|
||||
echo "safe_assignee=$RAW_USER"
|
||||
echo "safe_email=$SAFE_EMAIL"
|
||||
echo "safe_branch=$BRANCH_NAME"
|
||||
echo "safe_short=$SHORT_SHA"
|
||||
} >> "${GITHUB_OUTPUT}"
|
||||
@@ -0,0 +1 @@
|
||||
100
|
||||
@@ -0,0 +1,114 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 5 ]; then
|
||||
echo "Usage: ./get-dolt-correctness-job-json.sh <jobname> <version> <timeprefix> <actorprefix> <format> <nomsBinFormat> <issueNumber> <regressComp> <branchRef>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
jobname="$1"
|
||||
version="$2"
|
||||
timeprefix="$3"
|
||||
actorprefix="$4"
|
||||
format="$5"
|
||||
nomsBinFormat="$6"
|
||||
issueNumber="$7"
|
||||
regressComp="$8"
|
||||
branchRef="$9"
|
||||
|
||||
precision="6"
|
||||
|
||||
if [ -n "$nomsBinFormat" ]; then
|
||||
nomsBinFormat="\"--noms-bin-format=$nomsBinFormat\","
|
||||
fi
|
||||
|
||||
if [ -n "$issueNumber" ]; then
|
||||
issueNumber="\"--issue-number=$issueNumber\","
|
||||
fi
|
||||
|
||||
regressPrec=""
|
||||
if [ -n "$regressComp" ]; then
|
||||
regressComp="\"--regress-compare=$regressComp\","
|
||||
regressPrec="\"--regress-precision=$precision\","
|
||||
branchRef="\"--branch=$branchRef\","
|
||||
fi
|
||||
|
||||
resultCountQuery="select version, result, count(*) as total from results where result != 'skipped' group by result;"
|
||||
testCountQuery="select version, count(*) as total_tests from results where result != 'skipped';"
|
||||
correctnessQuery="select ROUND(100.0 * (cast(ok_results.total as decimal) / (cast(all_results.total as decimal) + .000001)), $precision) as correctness_percentage from (select count(*) as total from results where result = 'ok') as ok_results join (select count(*) as total from results where result != 'skipped') as all_results"
|
||||
|
||||
echo '
|
||||
{
|
||||
"apiVersion": "batch/v1",
|
||||
"kind": "Job",
|
||||
"metadata": {
|
||||
"name": "'$jobname'",
|
||||
"namespace": "sql-correctness"
|
||||
},
|
||||
"spec": {
|
||||
"backoffLimit": 3,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"annotations": {
|
||||
"alert_recipients": "'$ACTOR_EMAIL'"
|
||||
},
|
||||
"labels": {
|
||||
"k8s-liquidata-inc-monitored-job": "created-by-static-config",
|
||||
"app": "sql-correctness"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"serviceAccountName": "sql-correctness",
|
||||
"containers": [
|
||||
{
|
||||
"name": "sql-correctness",
|
||||
"image": "407903926827.dkr.ecr.us-west-2.amazonaws.com/liquidata/sql-correctness:latest",
|
||||
"resources": {
|
||||
"limits": {
|
||||
"cpu": "7000m"
|
||||
}
|
||||
},
|
||||
"env": [
|
||||
{ "name": "REPO_ACCESS_TOKEN", "value": "'$REPO_ACCESS_TOKEN'"},
|
||||
{ "name": "ACTOR", "value": "'$ACTOR'"},
|
||||
{ "name": "ACTOR_EMAIL", "value": "'$ACTOR_EMAIL'"}
|
||||
],
|
||||
"args": [
|
||||
"--schema=/app/correctness.sql",
|
||||
"--concurrent",
|
||||
"--output='$format'",
|
||||
"--version='$version'",
|
||||
"--timeout=600",
|
||||
'"$nomsBinFormat"'
|
||||
'"$issueNumber"'
|
||||
'"$regressComp"'
|
||||
'"$regressPrec"'
|
||||
'"$branchRef"'
|
||||
"--bucket=sql-correctness-github-actions-results",
|
||||
"--region=us-west-2",
|
||||
"--results-dir='$timeprefix'",
|
||||
"--results-prefix='$actorprefix'",
|
||||
"'"$resultCountQuery"'",
|
||||
"'"$testCountQuery"'",
|
||||
"'"$correctnessQuery"'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"restartPolicy": "Never",
|
||||
"nodeSelector": {
|
||||
"sql-correctness-worker": "true"
|
||||
},
|
||||
"tolerations": [
|
||||
{
|
||||
"effect": "NoSchedule",
|
||||
"key": "dedicated",
|
||||
"operator": "Equal",
|
||||
"value": "sql-correctness-worker"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -z "$KUBECONFIG" ]; then
|
||||
echo "Must set KUBECONFIG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$TEMPLATE_SCRIPT" ]; then
|
||||
echo "Must set TEMPLATE_SCRIPT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$NOMS_BIN_FORMAT" ]; then
|
||||
echo "Must set NOMS_BIN_FORMAT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Must set VERSION for correctness run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$ACTOR" ]; then
|
||||
echo "Must set ACTOR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$MODE" ]; then
|
||||
echo "Must set MODE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$PR_NUMBER" ]; then
|
||||
if [ -z "$REGRESS_COMP" ]; then
|
||||
echo "Must set REGRESS_COMP for PR correctness comparisons"
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$PR_BRANCH_REF" ]; then
|
||||
echo "Must set PR_BRANCH_REF for PR correctness comparisons"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# use first 8 characters of VERSION to differentiate
|
||||
# jobs
|
||||
short=${VERSION:0:8}
|
||||
lowered=$(echo "$ACTOR" | tr '[:upper:]' '[:lower:]')
|
||||
actorShort="$lowered-$short"
|
||||
|
||||
# random sleep
|
||||
sleep 0.$[ ( $RANDOM % 10 ) + 1 ]s
|
||||
|
||||
timesuffix=`date +%s%N`
|
||||
|
||||
jobname=""
|
||||
if [ -n "$PR_NUMBER" ]; then
|
||||
jobname="$lowered-$PR_NUMBER"
|
||||
else
|
||||
jobname="$actorShort-$timesuffix"
|
||||
fi
|
||||
|
||||
timeprefix=$(date +%Y/%m/%d)
|
||||
|
||||
actorprefix="$MODE/$lowered/$jobname/$NOMS_BIN_FORMAT"
|
||||
|
||||
format="markdown"
|
||||
if [[ "$MODE" = "release" || "$MODE" = "nightly" ]]; then
|
||||
format="html"
|
||||
fi
|
||||
|
||||
# set value to PR_NUMBER environment variable
|
||||
# or default to -1
|
||||
issuenumber=${PR_NUMBER:-"-1"}
|
||||
|
||||
source \
|
||||
"$TEMPLATE_SCRIPT" \
|
||||
"$jobname" \
|
||||
"$VERSION" \
|
||||
"$timeprefix" \
|
||||
"$actorprefix" \
|
||||
"$format" \
|
||||
"$NOMS_BIN_FORMAT" \
|
||||
"$issuenumber" \
|
||||
"$REGRESS_COMP" \
|
||||
"$PR_BRANCH_REF" > job.json
|
||||
|
||||
# delete existing job with same name if this is a pr job
|
||||
if [ -n "$PR_NUMBER" ]; then
|
||||
out=$(KUBECONFIG="$KUBECONFIG" kubectl delete job/"$jobname" -n sql-correctness || true)
|
||||
echo "Delete pr job if exists: $out"
|
||||
sleep 45
|
||||
fi
|
||||
|
||||
out=$(KUBECONFIG="$KUBECONFIG" kubectl apply -f job.json || true)
|
||||
|
||||
if [ "$out" != "job.batch/$jobname created" ]; then
|
||||
echo "something went wrong creating job... this job likely already exists in the cluster"
|
||||
echo "$out"
|
||||
exit 1
|
||||
else
|
||||
echo "$out"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user