Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH v1] ci: enhance jobs with jepsen tests
@ 2020-10-26  9:00 sergeyb
  2020-10-27 16:04 ` Alexander V. Tikhonov
  2020-10-30 11:17 ` Kirill Yukhin
  0 siblings, 2 replies; 4+ messages in thread
From: sergeyb @ 2020-10-26  9:00 UTC (permalink / raw)
  To: tarantool-patches, avtikhon, alexander.turenko

From: Sergey Bronnikov <sergeyb@tarantool.org>

To run Jepsen tests in different configurations we need to parametrize run
script by options, so lein options and number of nodes passed with environment
variables. By default script runs testing with Tarantool built from latest
commit.

Added these configurations:

- single instance
- single instance with enabled TXM
- cluster with enabled Raft
- cluster with enabled Raft and TXM

Closes #5437

---

Branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-5437-enhance-jepsen-jobs
CI:  https://gitlab.com/tarantool/tarantool/-/pipelines/206846941
Issue: https://github.com/tarantool/tarantool/issues/5437

 .gitlab-ci.yml            | 43 ++++++++++++++++++++++++++++-----------
 .travis.mk                |  2 +-
 CMakeLists.txt            | 18 ++++++----------
 tools/run-jepsen-tests.sh | 12 ++++++-----
 4 files changed, 45 insertions(+), 30 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index dc58888b6..dda51efbd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -169,6 +169,19 @@ before_script:
   script:
     - ${GITLAB_MAKE} perf_cleanup
 
+.jepsen_test_definition: &jepsen_test_definition
+  <<: *docker_test_definition
+  script:
+    - ${GITLAB_MAKE} test_jepsen
+  stage: long_tests
+  when: manual
+  tags:
+    - mcs_jepsen_docker
+  artifacts:
+    paths:
+      - jepsen-tests-prefix/src/jepsen-tests/store
+    expire_in: 6 month
+
 # Static Analysis
 
 luacheck:
@@ -264,18 +277,24 @@ freebsd_12_release:
     - ${GITLAB_MAKE} vms_start
     - ${GITLAB_MAKE} vms_test_freebsd
 
-jepsen:
-  <<: *docker_test_definition
-  script:
-    - ${GITLAB_MAKE} test_jepsen
-  stage: long_tests
-  when: manual
-  tags:
-    - mcs_jepsen_docker
-  artifacts:
-    paths:
-      - jepsen-tests-prefix/src/jepsen-tests/store
-    expire_in: 6 month
+jepsen-single-instance:
+  <<: *jepsen_test_definition
+
+jepsen-single-instance-txm:
+  <<: *jepsen_test_definition
+  variables:
+    LEIN_OPT: '--mvcc'
+
+jepsen-cluster:
+  <<: *jepsen_test_definition
+  variables:
+    INSTANCE_COUNT: '5'
+
+jepsen-cluster-txm:
+  <<: *jepsen_test_definition
+  variables:
+    LEIN_OPT: '--mvcc'
+    INSTANCE_COUNT: '5'
 
 # ####
 # Perf
diff --git a/.travis.mk b/.travis.mk
index a44e1b0c5..238e31cda 100644
--- a/.travis.mk
+++ b/.travis.mk
@@ -326,4 +326,4 @@ test_freebsd: deps_freebsd test_freebsd_no_deps
 
 test_jepsen: deps_debian_jepsen
 	cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON -DWITH_JEPSEN=ON
-	make jepsen-single
+	make run-jepsen
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 512f50e05..fa6818f8e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -175,21 +175,15 @@ if (WITH_JEPSEN)
     )
 
     #
-    # Enable 'make jepsen-*' targets.
+    # Enable 'make run-jepsen' target.
     #
 
-    add_custom_target(jepsen-single DEPENDS jepsen-tests)
-    add_custom_command(TARGET jepsen-single
+    add_custom_target(run-jepsen DEPENDS jepsen-tests)
+    add_custom_command(TARGET run-jepsen
         COMMAND ${BASH} ${PROJECT_SOURCE_DIR}/tools/run-jepsen-tests.sh
-				${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
-        COMMENT "Running Jepsen tests on a single Tarantool instance"
-    )
-
-    add_custom_target(jepsen-cluster DEPENDS jepsen-tests)
-    add_custom_command(TARGET jepsen-cluster
-        COMMAND ${BASH} ${PROJECT_SOURCE_DIR}/tools/run-jepsen-tests.sh
-				${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR} 5
-        COMMENT "Running Jepsen tests on a cluster with 5 Tarantool instances"
+				${PROJECT_SOURCE_DIR}
+                                ${PROJECT_BINARY_DIR}
+        COMMENT "Running Jepsen tests"
     )
 endif()
 
diff --git a/tools/run-jepsen-tests.sh b/tools/run-jepsen-tests.sh
index a313b2990..26931eaae 100755
--- a/tools/run-jepsen-tests.sh
+++ b/tools/run-jepsen-tests.sh
@@ -9,14 +9,14 @@
 # 	TF_VAR_user_domain_id
 # 	TF_VAR_keypair_name
 # 	TF_VAR_ssh_key
-# and three arguments: path to a Tarantool project source directory, path to a
-# Tarantool project binary directory and number on instances (optional).
+# and two arguments: path to a Tarantool project source directory and path to a
+# Tarantool project binary directory. And optional use environment variables:
+# LEIN_OPT and INSTANCE_COUNT.
 
 set -Eeo pipefail
 
 PROJECT_SOURCE_DIR=$1
 PROJECT_BINARY_DIR=$2
-INSTANCE_COUNT=$3
 
 TESTS_DIR="$PROJECT_BINARY_DIR/jepsen-tests-prefix/src/jepsen-tests/"
 TERRAFORM_CONFIG="$PROJECT_SOURCE_DIR/extra/tf"
@@ -24,7 +24,9 @@ TERRAFORM_STATE="$PROJECT_BINARY_DIR/terraform.tfstate"
 SSH_KEY_FILENAME="$PROJECT_SOURCE_DIR/build/tf-cloud-init"
 NODES_FILENAME="$PROJECT_SOURCE_DIR/build/nodes"
 
-LEIN_OPTIONS="--nodes-file $NODES_FILENAME --username ubuntu --workload register"
+CI_COMMIT_SHA=$(git rev-parse HEAD)
+
+LEIN_OPTIONS="test-all --nodes-file $NODES_FILENAME --username ubuntu $LEIN_OPT --version $CI_COMMIT_SHA"
 
 [[ -z ${PROJECT_SOURCE_DIR} ]] && (echo "Please specify path to a project source directory"; exit 1)
 [[ -z ${PROJECT_BINARY_DIR} ]] && (echo "Please specify path to a project binary directory"; exit 1)
@@ -72,6 +74,6 @@ terraform apply -state=$TERRAFORM_STATE -auto-approve $TERRAFORM_CONFIG
 terraform providers $TERRAFORM_CONFIG
 terraform output -state=$TERRAFORM_STATE instance_names
 terraform output -state=$TERRAFORM_STATE -json instance_ips | jq --raw-output '.[]' > $NODES_FILENAME
-pushd $TESTS_DIR && lein run test $LEIN_OPTIONS
+pushd $TESTS_DIR && lein run $LEIN_OPTIONS
 popd
 cleanup
-- 
2.28.0

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-10-30 11:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-26  9:00 [Tarantool-patches] [PATCH v1] ci: enhance jobs with jepsen tests sergeyb
2020-10-27 16:04 ` Alexander V. Tikhonov
2020-10-27 20:52   ` Sergey Bronnikov
2020-10-30 11:17 ` Kirill Yukhin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox