diff --git a/Makefile b/Makefile index e594c5183..5b42bf8e3 100644 --- a/Makefile +++ b/Makefile @@ -177,13 +177,20 @@ bin/cql-faucet: -o bin/cql-faucet \ github.com/CovenantSQL/CovenantSQL/cmd/cql-faucet +bin/intergration.test: + CGO_ENABLED=1 go test -c -tags "$(tags)" \ + -ldflags "$(ldflags_role_client)" \ + -o bin/intergration.test \ + github.com/CovenantSQL/CovenantSQL/cmd/cql-minerd + + bp: bin/cqld.test bin/cqld miner: bin/cql-minerd.test bin/cql-minerd client: bin/cql bin/cql.test bin/cql-fuse bin/cql-mysql-adapter bin/cql-faucet -all: bp miner client +all: bp miner client bin/intergration.test build-release: bin/cqld bin/cql-minerd bin/cql bin/cql-fuse bin/cql-mysql-adapter bin/cql-faucet diff --git a/cmd/cql-minerd/integration_test.go b/cmd/cql-minerd/integration_test.go index ceb079a8c..120e40eb0 100644 --- a/cmd/cql-minerd/integration_test.go +++ b/cmd/cql-minerd/integration_test.go @@ -704,7 +704,6 @@ func makeBenchName(trailings ...string) string { } func benchDB(b *testing.B, db *sql.DB, createDB bool) { - var err error if createDB { prepareBenchTable(db) } @@ -725,7 +724,7 @@ func benchDB(b *testing.B, db *sql.DB, createDB bool) { ctx, task := trace.NewTask(context.Background(), "BenchInsert") - _, err = db.ExecContext(ctx, "INSERT INTO "+TABLENAME+" ( k, v1 ) VALUES"+ + _, err := db.ExecContext(ctx, "INSERT INTO "+TABLENAME+" ( k, v1 ) VALUES"+ "(?, ?)", index, ii, ) //log.Warnf("insert index = %d %v", index, time.Since(start)) @@ -754,7 +753,7 @@ func benchDB(b *testing.B, db *sql.DB, createDB bool) { rowCount := db.QueryRow("SELECT COUNT(1) FROM " + TABLENAME) var count int64 - err = rowCount.Scan(&count) + err := rowCount.Scan(&count) if err != nil { b.Fatal(err) } @@ -777,7 +776,7 @@ func benchDB(b *testing.B, db *sql.DB, createDB bool) { row := db.QueryRowContext(ctx, "SELECT v1 FROM "+TABLENAME+" WHERE k = ? LIMIT 1", index) //log.Warnf("select index = %d %v", index, time.Since(start)) var result []byte - err = row.Scan(&result) + err := row.Scan(&result) if err != nil || (len(result) == 0) { log.Errorf("index = %d", index) b.Fatal(err) diff --git a/test/GNTE/Pipfile b/test/GNTE/Pipfile new file mode 100644 index 000000000..1aec944a0 --- /dev/null +++ b/test/GNTE/Pipfile @@ -0,0 +1,13 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] +pylint = "*" + +[packages] +pyyaml = "*" + +[requires] +python_version = "3.7" diff --git a/test/GNTE/TODO b/test/GNTE/TODO new file mode 100644 index 000000000..83af6579e --- /dev/null +++ b/test/GNTE/TODO @@ -0,0 +1,4 @@ +1. python yaml decode and replace delay +2. refactor run.sh, replace yaml by python +3. benchGNTE refactor, docker exec benchGNTE +4. reduce yaml in one. replace client to 'tail -f /dev/null' diff --git a/cmd/cql-minerd/benchGNTE.sh b/test/GNTE/benchGNTE.sh similarity index 75% rename from cmd/cql-minerd/benchGNTE.sh rename to test/GNTE/benchGNTE.sh index 229753fac..3e2a15ac9 100755 --- a/cmd/cql-minerd/benchGNTE.sh +++ b/test/GNTE/benchGNTE.sh @@ -3,11 +3,13 @@ set -euo pipefail declare pkg="github.com/CovenantSQL/CovenantSQL/cmd/cql-minerd" declare flags=( - "-bench=^BenchmarkMinerGNTE$" - "-benchtime=10s" - "-run=^$" + "-test.bench=^BenchmarkMinerGNTE$" + "-test.benchtime=10s" + "-test.run=^$" ) +BENCH_BIN=${PROJECT_DIR}/bin/intergration.test + clean() { if [ -n "${TEST_WD}" ]; then # Clean @@ -24,11 +26,11 @@ clean() { fast() { echo "Fast benchmarking with flags: $@" clean - go test "${flags[@]}" "$pkg" "$@" | tee -a gnte.log + ${BENCH_BIN} "$@" "${flags[@]}" "$pkg" | tee -a gnte.log clean - go test "${flags[@]}" "$pkg" "$@" -bench-miner-count=2 | tee -a gnte.log + ${BENCH_BIN} -bench-miner-count=2 "$@" "${flags[@]}" "$pkg" | tee -a gnte.log clean - go test -cpu=1 "${flags[@]}" "$pkg" "$@" -bench-miner-count=2 | tee -a gnte.log + ${BENCH_BIN} -bench-miner-count=2 "$@" -test.cpu=1 "${flags[@]}" "$pkg" | tee -a gnte.log } full() { @@ -40,12 +42,12 @@ full() { if [[ -z $cpu ]]; then caseflags=("${flags[@]}") else - caseflags=("-cpu=$cpu" "${flags[@]}") + caseflags=("-test.cpu=$cpu" "${flags[@]}") fi clean - go test "${caseflags[@]}" "$pkg" "$@" -bench-miner-count=$count | tee -a gnte.log + ${BENCH_BIN} "$@" -bench-miner-count=$count "${caseflags[@]}" "$pkg" | tee -a gnte.log ips=(2 3 4 5 6 7 8 9) cur_sec=`date '+%s'` diff --git a/test/GNTE/change_delay.py b/test/GNTE/change_delay.py new file mode 100644 index 000000000..baaa6029a --- /dev/null +++ b/test/GNTE/change_delay.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +#python3 change_delay.py miner 50ms bp 50ms bpminer 50ms + +import yaml +import os, sys, getopt + +delay={} +cur_path = os.path.dirname(os.path.realpath(__file__)) + +def load_template(): + templete_yaml_file = os.path.join(cur_path, "conf/gnte.yaml") + f = open(templete_yaml_file, 'r', encoding='utf-8') + templete_yaml_raw = f.read() + templete_yaml = yaml.full_load(templete_yaml_raw) + return templete_yaml + +def change_delay(templete): + #print(templete_yaml["network"]) + for group in templete["group"]: + for name in delay: + if group["name"] == name and delay[name] != "": + group["delay"] = delay[name] + for network in templete["network"]: + for name in delay: + if network["name"] == name and delay[name] != "": + network["delay"] = delay[name] + return templete + +def print_yaml(out, case_name): + out_yaml_file = os.path.join(cur_path, "conf/"+case_name+".yaml") + f = open(out_yaml_file, 'w', encoding='utf-8') + yaml.safe_dump(out, f) + +def main(argv): + try: + opts, _ = getopt.getopt(argv,"h",["name=", "bp=","miner=","client=","bpminer=","bpclient=","minerclient="]) + except getopt.GetoptError: + print('change_delay.py -bp "xxms" -miner "xxms"...') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print('change_delay.py -bp "xxms" -miner "xxms"...') + sys.exit() + elif opt in ("--name"): + case_name = arg + elif opt in ("--bp"): + delay["bp"] = arg + elif opt in ("--miner"): + delay["miner "] = arg + elif opt in ("--client"): + delay["client"] = arg + elif opt in ("--bpminer"): + delay["bpminer "] = arg + elif opt in ("--bpclient"): + delay["bpclient "] = arg + elif opt in ("--minerclient"): + delay["minerclient"] = arg + + templete = load_template() + out = change_delay(templete) + print_yaml(out, case_name) + +if __name__ == "__main__": + main(sys.argv[1:]) + diff --git a/test/GNTE/conf/gnte.yaml b/test/GNTE/conf/gnte.yaml index e305a08c1..2bcdc7350 100644 --- a/test/GNTE/conf/gnte.yaml +++ b/test/GNTE/conf/gnte.yaml @@ -46,26 +46,26 @@ group: nodes: - # node_c ip: 10.250.0.2/32 - cmd: "ping -c3 g.cn" - - # node_adapter - ip: 10.250.0.254/32 - cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml" + cmd: "tail -f /dev/null" rate: "1000mbit" network: - + name: bpminer groups: - bp - miner rate: "1000mbit" - + name: bpclient groups: - bp - client rate: "1000mbit" - + name: minerclient groups: - client - miner diff --git a/test/GNTE/conf/gnte_50ms.yaml b/test/GNTE/conf/gnte_50ms.yaml new file mode 100644 index 000000000..35c229620 --- /dev/null +++ b/test/GNTE/conf/gnte_50ms.yaml @@ -0,0 +1,79 @@ +# Only support 10.250.0.2 ~ 10.250.254.254 +group: + - + name: bp + nodes: + - # bp10.250.1.2 + ip: 10.250.1.2/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml" + - # bp10.250.1.3 + ip: 10.250.1.3/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml" + - # bp10.250.1.4 + ip: 10.250.1.4/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml" + delay: "50ms" + rate: "1000mbit" + - + name: miner + nodes: + - # miner10.250.100.2 + ip: 10.250.100.2/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.3 + ip: 10.250.100.3/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.4 + ip: 10.250.100.4/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.5 + ip: 10.250.100.5/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.6 + ip: 10.250.100.6/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.7 + ip: 10.250.100.7/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.8 + ip: 10.250.100.8/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.9 + ip: 10.250.100.9/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml -metric-web 0.0.0.0:6060" + delay: "50ms" + rate: "1000mbit" + - + name: client + nodes: + - # node_c + ip: 10.250.0.2/32 + cmd: "ping -c3 g.cn" + - # node_adapter + ip: 10.250.0.254/32 + cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml" + delay: "50ms" + rate: "1000mbit" + +network: + - + groups: + - bp + - miner + delay: "50ms" + rate: "1000mbit" + + - + groups: + - bp + - client + delay: "50ms" + rate: "1000mbit" + + - + groups: + - client + - miner + delay: "50ms" + rate: "1000mbit" + diff --git a/test/GNTE/conf/gnte_bpminer50ms.yaml b/test/GNTE/conf/gnte_bpminer50ms.yaml new file mode 100644 index 000000000..a26269465 --- /dev/null +++ b/test/GNTE/conf/gnte_bpminer50ms.yaml @@ -0,0 +1,74 @@ +# Only support 10.250.0.2 ~ 10.250.254.254 +group: + - + name: bp + nodes: + - # bp10.250.1.2 + ip: 10.250.1.2/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml" + - # bp10.250.1.3 + ip: 10.250.1.3/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml" + - # bp10.250.1.4 + ip: 10.250.1.4/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml" + rate: "1000mbit" + - + name: miner + nodes: + - # miner10.250.100.2 + ip: 10.250.100.2/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.3 + ip: 10.250.100.3/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.4 + ip: 10.250.100.4/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.5 + ip: 10.250.100.5/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.6 + ip: 10.250.100.6/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.7 + ip: 10.250.100.7/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.8 + ip: 10.250.100.8/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.9 + ip: 10.250.100.9/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml -metric-web 0.0.0.0:6060" + rate: "1000mbit" + - + name: client + nodes: + - # node_c + ip: 10.250.0.2/32 + cmd: "tail -f /dev/null" + - # node_adapter + ip: 10.250.0.254/32 + cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml" + rate: "1000mbit" + +network: + - + groups: + - bp + - miner + delay: "50ms" + rate: "1000mbit" + + - + groups: + - bp + - client + rate: "1000mbit" + + - + groups: + - client + - miner + rate: "1000mbit" + diff --git a/test/GNTE/conf/gnte_inbp50ms.yaml b/test/GNTE/conf/gnte_inbp50ms.yaml new file mode 100644 index 000000000..cdd96817b --- /dev/null +++ b/test/GNTE/conf/gnte_inbp50ms.yaml @@ -0,0 +1,74 @@ +# Only support 10.250.0.2 ~ 10.250.254.254 +group: + - + name: bp + nodes: + - # bp10.250.1.2 + ip: 10.250.1.2/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml" + - # bp10.250.1.3 + ip: 10.250.1.3/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml" + - # bp10.250.1.4 + ip: 10.250.1.4/32 + cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml" + delay: "50ms" + rate: "1000mbit" + - + name: miner + nodes: + - # miner10.250.100.2 + ip: 10.250.100.2/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.3 + ip: 10.250.100.3/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.4 + ip: 10.250.100.4/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.5 + ip: 10.250.100.5/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.6 + ip: 10.250.100.6/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.7 + ip: 10.250.100.7/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.8 + ip: 10.250.100.8/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml -metric-web 0.0.0.0:6060" + - # miner10.250.100.9 + ip: 10.250.100.9/32 + cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml -metric-web 0.0.0.0:6060" + rate: "1000mbit" + - + name: client + nodes: + - # node_c + ip: 10.250.0.2/32 + cmd: "ping -c3 g.cn" + - # node_adapter + ip: 10.250.0.254/32 + cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml" + rate: "1000mbit" + +network: + - + groups: + - bp + - miner + rate: "1000mbit" + + - + groups: + - bp + - client + rate: "1000mbit" + + - + groups: + - client + - miner + rate: "1000mbit" + diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh index 67ccd3806..eed7cbe79 100755 --- a/test/GNTE/run.sh +++ b/test/GNTE/run.sh @@ -11,7 +11,7 @@ else fi export TEST_WD=$(cd $(dirname $0)/; pwd) -PROJECT_DIR=$(cd ${TEST_WD}/../../; pwd) +export PROJECT_DIR=$(cd ${TEST_WD}/../../; pwd) echo ${PROJECT_DIR} @@ -48,7 +48,7 @@ do export delay_file=${gnte_yaml} # Bench GNTE - cd ${PROJECT_DIR}/cmd/cql-minerd/ + cd ${TEST_WD} ips=(2 3 4 5 6 7 8 9) if ! bash -x ./benchGNTE.sh $param; then for ip in "${ips[@]}"; do