You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kvrocks.apache.org by tw...@apache.org on 2022/09/07 09:14:21 UTC
[incubator-kvrocks] branch unstable updated: Add go test to `x.py` and improve error in gocase (#832)
This is an automated email from the ASF dual-hosted git repository.
twice pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/incubator-kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new 4792337 Add go test to `x.py` and improve error in gocase (#832)
4792337 is described below
commit 479233717ef20bd2e27c2dd04e436446583b298d
Author: Twice <tw...@gmail.com>
AuthorDate: Wed Sep 7 17:14:16 2022 +0800
Add go test to `x.py` and improve error in gocase (#832)
---
.github/workflows/kvrocks.yaml | 9 +++------
tests/gocase/util/server.go | 6 +++++-
x.py | 23 +++++++++++++++++++++++
3 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/kvrocks.yaml b/.github/workflows/kvrocks.yaml
index 74f87ae..c18619f 100644
--- a/.github/workflows/kvrocks.yaml
+++ b/.github/workflows/kvrocks.yaml
@@ -166,17 +166,14 @@ jobs:
go-version: 1.19.x
- name: Run Go Integration Cases
- working-directory: tests/gocase
run: |
export ${{ matrix.runtime_env_vars }}
- export KVROCKS_BIN_PATH="$GITHUB_WORKSPACE/build/kvrocks"
- export GO_CASE_WORKSPACE="$GITHUB_WORKSPACE/tests/gocase/workspace"
- go test -v -bench=. ./...
- SANITIZER_OUTPUT=$(grep "Sanitizer:" workspace -r || true)
+ ./x.py test go build
+ SANITIZER_OUTPUT=$(grep "Sanitizer:" tests/gocase/workspace -r || true)
if [[ $SANITIZER_OUTPUT ]]; then
echo "$SANITIZER_OUTPUT"
echo "\ndetail reports:\n"
- cat $(find workspace -iname stderr)
+ cat $(find tests/gocase/workspace -iname stderr)
echo "sanitizer error was reported, exiting..."
exit 1
fi
diff --git a/tests/gocase/util/server.go b/tests/gocase/util/server.go
index 59d8b73..af131eb 100644
--- a/tests/gocase/util/server.go
+++ b/tests/gocase/util/server.go
@@ -59,6 +59,7 @@ func (s *KvrocksServer) Close() {
func StartServer(t testing.TB, configs map[string]string) *KvrocksServer {
b := os.Getenv("KVROCKS_BIN_PATH")
+ require.NotEmpty(t, b, "please set the environment variable `KVROCKS_BIN_PATH`")
cmd := exec.Command(b)
addr, err := findFreePort()
@@ -67,7 +68,7 @@ func StartServer(t testing.TB, configs map[string]string) *KvrocksServer {
configs["port"] = fmt.Sprintf("%d", addr.Port)
dir := os.Getenv("GO_CASE_WORKSPACE")
- require.NoError(t, err)
+ require.NotEmpty(t, dir, "please set the environment variable `GO_CASE_WORKSPACE`")
dir, err = os.MkdirTemp(dir, fmt.Sprintf("%s-%d-*", t.Name(), time.Now().UnixMilli()))
require.NoError(t, err)
configs["dir"] = dir
@@ -115,6 +116,9 @@ func findFreePort() (*net.TCPAddr, error) {
return nil, err
}
lis, err := net.ListenTCP("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
defer func() { _ = lis.Close() }()
return lis.Addr().(*net.TCPAddr), nil
}
diff --git a/x.py b/x.py
index 4e84a8c..d272818 100755
--- a/x.py
+++ b/x.py
@@ -20,6 +20,7 @@
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, REMAINDER
from glob import glob
from os import makedirs
+import os
from pathlib import Path
import re
from subprocess import Popen, PIPE
@@ -222,6 +223,19 @@ def test_tcl(dir: str, rest: List[str]) -> None:
cwd=str(tcldir), verbose=True
)
+def test_go(dir: str, rest: List[str]) -> None:
+ go = find_command('go', msg='go is required for testing')
+
+ godir = Path(__file__).parent.absolute() / 'tests' / 'gocase'
+ goenv = {
+ 'KVROCKS_BIN_PATH': str(Path(dir).absolute() / 'kvrocks'),
+ 'GO_CASE_WORKSPACE': str(godir / 'workspace'),
+ }
+ goenv = {**os.environ, **goenv}
+ run(go, 'test', '-v', '-bench=.', './...', *rest,
+ env=goenv, cwd=str(godir), verbose=True
+ )
+
if __name__ == '__main__':
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
parser.set_defaults(func=parser.print_help)
@@ -306,6 +320,15 @@ if __name__ == '__main__':
parser_test_tcl.add_argument('rest', nargs=REMAINDER, help="the rest of arguments to forward to TCL scripts")
parser_test_tcl.set_defaults(func=test_tcl)
+ parser_test_go = parser_test_subparsers.add_parser(
+ 'go',
+ description="Test kvrocks via go test cases",
+ help="Test kvrocks via go test cases",
+ )
+ parser_test_go.add_argument('dir', metavar='BUILD_DIR', nargs='?', default='build', help="directory including kvrocks build files")
+ parser_test_go.add_argument('rest', nargs=REMAINDER, help="the rest of arguments to forward to go test")
+ parser_test_go.set_defaults(func=test_go)
+
args = parser.parse_args()
arg_dict = dict(vars(args))