[Tarantool-patches] [PATCH 4/4] ci: integrate Jepsen tests to GitLab CI

Sergey Bronnikov sergeyb at tarantool.org
Fri Sep 18 15:33:54 MSK 2020


Hello!

Thanks for review!

Please see my comments inline. I made some changes and pushed them to 
the branch.

CI: https://gitlab.com/tarantool/tarantool/-/pipelines/191621859

On 17.09.2020 10:12, Alexander V. Tikhonov wrote:
> Hi Sergey, thanks for the patch, please check my comments below.
>
> On Wed, Sep 16, 2020 at 10:07:24AM +0300, sergeyb at tarantool.org wrote:
>> From: Sergey Bronnikov <sergeyb at tarantool.org>
>>
>> added a new stage with a single job to run Jepsen tests.
>> Job is not started automatically by default, one need to
>> trigger it manually. Directory with test results
>> (logs, graphs, operations history) published to artifacts.
>>
>> Closes #5277
>> ---
>>   .gitlab-ci.yml | 14 ++++++++++++++
>>   .travis.mk     | 34 +++++++++++++++++++++++++++++++++-
>>   2 files changed, 47 insertions(+), 1 deletion(-)
>>
>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>> index 05d40b013..3afcfc245 100644
>> --- a/.gitlab-ci.yml
>> +++ b/.gitlab-ci.yml
>> @@ -1,6 +1,7 @@
>>   stages:
>>     - static_analysis
>>     - test
>> +  - long_tests
>>     - perf
>>     - cleanup
>>
> May be, we may want to merge long_tests and perf stages to some single
> common stage ?

Good idea. I believe it's a topic to discuss and we can combine stages

to a single one in scope of [1]. Right now performance jobs are not 
included to a pipeline by default.

1. https://github.com/tarantool/tarantool/issues/5305

>
>> @@ -210,6 +211,19 @@ 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: 1 week
>> +
> Let's use more time for artifacts store, may be 6 months.
Updated in a branch.
>
>>   # ####
>>   # Perf
>>   # ####
>> diff --git a/.travis.mk b/.travis.mk
>> index efc05cf05..781b37c15 100644
>> --- a/.travis.mk
>> +++ b/.travis.mk
>> @@ -8,6 +8,12 @@ TEST_RUN_EXTRA_PARAMS?=
>>   MAX_FILES?=65534
>>   MAX_PROC?=2500
>>   OOS_SRC_PATH="/source"
>> +BIN_DIR=/usr/local/bin
>> +
>> +CLOJURE_URL="https://download.clojure.org/install/linux-install-1.10.1.561.sh"
>> +LEIN_URL="https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein"
>> +TERRAFORM_NAME="terraform_0.13.1_linux_amd64.zip"
>> +TERRAFORM_URL="https://releases.hashicorp.com/terraform/0.13.1/"$(TERRAFORM_NAME)
>>   
>>   all: package
>>   
>> @@ -60,7 +66,7 @@ docker_%:
>>   # commit, so the build requires old dependencies to be installed.
>>   # See ce623a23416eb192ce70116fd14992e84e7ccbbe ('Enable GitLab CI
>>   # testing') for more information.
>> -deps_debian:
>> +deps_debian: $(BIN_DIR)/clojure $(BIN_DIR)/lein $(BIN_DIR)/terraform
>>   	apt-get update ${APT_EXTRA_FLAGS} && apt-get install -y -f \
>>   		build-essential cmake coreutils sed \
>>   		libreadline-dev libncurses5-dev libyaml-dev libssl-dev \
> I don't think we need to add jepsen's new targets to the base one, let's
> move it to 'deps_debian_jepsen'.
Splitted targets.
>
>> @@ -69,6 +75,11 @@ deps_debian:
>>   		python-msgpack python-yaml python-argparse python-six python-gevent \
>>   		lcov ruby clang llvm llvm-dev zlib1g-dev autoconf automake libtool
>>   
>> +deps_debian_jepsen:
>> +	apt-get update ${APT_EXTRA_FLAGS} && apt-get install -y -f \
>> +		openjdk-8-jre openjdk-8-jre-headless libjna-java gnuplot graphviz \
>> +		zip unzip openssh-client jq
>> +
>>   deps_buster_clang_8: deps_debian
>>   	echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" > /etc/apt/sources.list.d/clang_8.list
>>   	echo "deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" >> /etc/apt/sources.list.d/clang_8.list
>> @@ -76,6 +87,19 @@ deps_buster_clang_8: deps_debian
>>   	apt-get update
>>   	apt-get install -y clang-8 llvm-8-dev
>>   
>> +$(BIN_DIR)/clojure: deps_debian_jepsen
>> +	curl $(CLOJURE_URL) | sudo bash
>> +
>> +$(BIN_DIR)/lein: deps_debian_jepsen
>> +	curl $(LEIN_URL) > $@
>> +	chmod a+x $@
>> +	$@ version
>> +
>> +$(BIN_DIR)/terraform: deps_debian_jepsen
>> +	curl -O $(TERRAFORM_URL)
>> +	unzip -o $(TERRAFORM_NAME) terraform -d $(dir $@)
>> +	rm -f $(TERRAFORM_NAME)
>> +
> Do we really need standalone targets that will not be used in separate?
> This file is in makefile style, but not makefile in real, it has
> standalone targets that provides some process meanings, like:
>   - prepare deps
>   - build
>   - test

We discussed orally and decided to involve third reviewer

to come to agreement regarding this point. Alexander agreed that this 
set of target is ok.

>
>>   # Release
>>   
>>   configure_debian:
>> @@ -232,3 +256,11 @@ test_freebsd_no_deps: build_freebsd
>>   	cd test && python2.7 test-run.py --force $(TEST_RUN_EXTRA_PARAMS)
>>   
>>   test_freebsd: deps_freebsd test_freebsd_no_deps
>> +
>> +# ###################
>> +# Jepsen testing
>> +# ###################
>> +
>> +test_jepsen: deps_debian
>> +	cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON
>> +	make jepsen-single
> Let's use deps_debian_jepsen here.

Done.


>> -- 
>> 2.25.1
>>


More information about the Tarantool-patches mailing list