Skip to content

Commit

Permalink
ci: add coverage support
Browse files Browse the repository at this point in the history
  • Loading branch information
BusyJay committed May 24, 2016
1 parent 86d49fc commit a043be2
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 20 deletions.
26 changes: 7 additions & 19 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ language: rust
cache:
directories:
- $HOME/.cache/rocksdb
- $HOME/.cache/kcov

matrix:
include:
Expand All @@ -13,28 +14,15 @@ matrix:
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
packages: ['clang-3.6', 'zlib1g-dev', 'libbz2-dev', 'libsnappy-dev', 'libjemalloc-dev', 'curl']
packages: ['clang-3.6', 'zlib1g-dev', 'libbz2-dev', 'libsnappy-dev', 'libjemalloc-dev', 'curl', 'libdw-dev', 'libelf-dev', 'elfutils', 'binutils-dev']
- os: osx
rust: nightly

install:
- if [[ "${TRAVIS_OS_NAME}" == 'osx' ]]; then brew install gflags snappy rocksdb; fi
- rocksdb_dir=$HOME/.cache/rocksdb
- if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ ! -f "$rocksdb_dir/librocksdb.so" ]]; then need_rebuild=true; fi
- if [[ "$need_rebuild" == "true" ]] && [[ ! -d "$rocksdb_dir" ]]; then mkdir -p $rocksdb_dir; fi
# Build gflags
- pushd /tmp
- if [[ "$need_rebuild" == "true" ]]; then curl -L https://github.com/gflags/gflags/archive/v2.1.2.tar.gz -o gflags.tar.gz && tar xf gflags.tar.gz && cd gflags-2.1.2 && cmake . && make; fi
# Add gflags to include/library paths
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/tmp/gflags-2.1.2/lib"
- export LIBRARY_PATH="$LIBRARY_PATH:/tmp/gflags-2.1.2/lib"
- export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/tmp/gflags-2.1.2/include"
- if [ -n "${COMPILER}" ]; then export CXX=${COMPILER}; fi
- cd /tmp
- if [[ "$need_rebuild" == "true" ]]; then curl -L https://github.com/facebook/rocksdb/archive/rocksdb-4.3.1.tar.gz -o rocksdb.tar.gz && tar xf rocksdb.tar.gz && cd rocksdb-rocksdb-4.3.1 && make shared_lib && cp librocksdb.so* $rocksdb_dir; fi
- popd
- export KCOV_DIR=$HOME/.cache/kcov
- export ROCKSDB_DIR=$HOME/.cache/rocksdb
- make -f travis-build/Makefile prepare_${TRAVIS_OS_NAME}

script:
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$rocksdb_dir"
- export LIBRARY_PATH="$LD_LIBRARY_PATH"
- ENABLE_FEATURES=default make test
- make -f travis-build/Makefile test_${TRAVIS_OS_NAME}
- make -f travis-build/Makefile cover_${TRAVIS_OS_NAME}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## TiKV is a distributed Key-Value (KV) database powered by Rust


[![Build Status](https://travis-ci.org/pingcap/tikv.svg?branch=master)](https://travis-ci.org/pingcap/tikv)
[![Build Status](https://travis-ci.org/pingcap/tikv.svg?branch=master)](https://travis-ci.org/pingcap/tikv) [![Coverage Status](https://coveralls.io/repos/github/pingcap/tikv/badge.svg?branch=master)](https://coveralls.io/github/pingcap/tikv)


TiKV is a distributed Key-Value database which is based on the design of Google Spanner and HBase, but is much simpler without dependency on any distributed file system. With the implementation of the Raft consensus algorithm in Rust and consensus state storing in RocksDB, it guarantees data consistency. Placement driver which is introduced to implement sharding enables automatic data migration. The transaction model is similar to Google's Percolator with some performance improvements. TiKV also provides snapshot isolation (SI), serializable snapshot isolation (SSI), and externally consistent reads and writes in distributed transactions. See [Tikv-server software stack](#tikv-server-software-stack) for more information. TiKV has the following primary features:
Expand Down
54 changes: 54 additions & 0 deletions travis-build/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
${ROCKSDB_DIR}/libgflags.a:
cd /tmp && \
curl -L https://github.com/gflags/gflags/archive/v2.1.2.tar.gz -o gflags.tar.gz && \
tar xf gflags.tar.gz && \
cd gflags-2.1.2 && \
cmake . && \
make && \
mkdir -p ${ROCKSDB_DIR} && \
cp lib/* ${ROCKSDB_DIR} && \
cp -r include ${ROCKSDB_DIR}

${ROCKSDB_DIR}/librocksdb.so: ${ROCKSDB_DIR}/libgflags.a
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROCKSDB_DIR}" && \
export LIBRARY_PATH="${LIBRARY_PATH}:${ROCKSDB_DIR}" && \
export CPLUS_INCLUDE_PATH="${CPLUS_INCLUDE_PATH}:${ROCKSDB_DIR}/include" && \
export CXX=${COMPILER} && \
cd /tmp && \
curl -L https://github.com/facebook/rocksdb/archive/rocksdb-4.3.1.tar.gz -o rocksdb.tar.gz && \
tar xf rocksdb.tar.gz && \
cd rocksdb-rocksdb-4.3.1 && \
make shared_lib && \
cp librocksdb.so* ${ROCKSDB_DIR}

${KCOV_DIR}/kcov:
cd /tmp && \
curl -L https://github.com/SimonKagstrom/kcov/archive/v31.tar.gz -o kcov.tar.gz && \
tar xf kcov.tar.gz && \
cd kcov-31 && \
cmake . && \
make && \
mkdir -p ${KCOV_DIR} && \
cp src/kcov ${KCOV_DIR}/kcov

prepare_linux: ${ROCKSDB_DIR}/librocksdb.so ${KCOV_DIR}/kcov

prepare_osx:
brew install gflags snappy rocksdb

test_linux:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROCKSDB_DIR}" && \
export LIBRARY_PATH="${LIBRARY_PATH}:${ROCKSDB_DIR}" && \
ulimit -n 2000 && \
ENABLE_FEATURES=default make test 2>&1 | tee tests.log

test_osx:
ENABLE_FEATURES=default make test

cover_linux:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ROCKSDB_DIR}" && \
export LIBRARY_PATH="${LIBRARY_PATH}:${ROCKSDB_DIR}" && \
grep " Running " tests.log | sed -e 's/Running//g' | xargs -n 1 ${KCOV_DIR}/kcov --verify --coveralls-id=${TRAVIS_JOB_ID} --include-pattern tikv target/kcov

cover_osx:

0 comments on commit a043be2

Please sign in to comment.