diff --git a/.travis.yml b/.travis.yml index a030577..38cb10f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,11 @@ dist: trusty sudo: required +services: + - docker + - mysql + - postgresql + language: c os: @@ -15,8 +20,76 @@ compiler: - gcc - clang +env: + matrix: + - TARGET=distcheck + - TARGET=test + - TARGET=coverage + - OS=el DIST=6 + - OS=el DIST=7 + - OS=fedora DIST=24 + - OS=fedora DIST=25 + - OS=ubuntu DIST=precise + - OS=ubuntu DIST=trusty + - OS=ubuntu DIST=xenial + - OS=ubuntu DIST=yakkety + - OS=debian DIST=wheezy + - OS=debian DIST=jessie + matrix: exclude: + - env: OS=el DIST=6 + compiler: clang + - env: OS=el DIST=7 + compiler: clang + - env: OS=fedora DIST=24 + compiler: clang + - env: OS=fedora DIST=25 + compiler: clang + - env: OS=ubuntu DIST=precise + compiler: clang + - env: OS=ubuntu DIST=trusty + compiler: clang + - env: OS=ubuntu DIST=xenial + compiler: clang + - env: OS=ubuntu DIST=yakkety + compiler: clang + - env: OS=debian DIST=wheezy + compiler: clang + - env: OS=debian DIST=jessie + compiler: clang + - env: OS=debian DIST=stretch + compiler: clang + - env: OS=el DIST=6 + os: osx + - env: OS=el DIST=7 + os: osx + - env: OS=fedora DIST=24 + os: osx + - env: OS=fedora DIST=25 + os: osx + - env: OS=ubuntu DIST=precise + os: osx + - env: OS=ubuntu DIST=trusty + os: osx + - env: OS=ubuntu DIST=xenial + os: osx + - env: OS=ubuntu DIST=yakkety + os: osx + - env: OS=debian DIST=wheezy + os: osx + - env: OS=debian DIST=jessie + os: osx + - env: OS=debian DIST=stretch + os: osx + - env: TARGET=distcheck + compiler: clang + - env: TARGET=distcheck + os: osx + - env: TARGET=coverage + os: osx + - env: TARGET=coverage + compiler: clang - os: osx compiler: gcc @@ -28,41 +101,34 @@ addons: - libaio-dev - clang-3.6 -services: - - mysql - - postgresql - before_install: - > - case "${TRAVIS_OS_NAME:-linux}" in - osx) - # Workaround for https://github.com/Homebrew/legacy-homebrew/issues/43874 - # brew uninstall libtool - # brew update --quiet - # brew install libtool mysql - brew install mysql + if [ "x$TARGET" = "xtest" ]; then + case "${TRAVIS_OS_NAME:-linux}" in + osx) + brew install mysql - # OS X requires servers to be started explicitly - brew services start mysql + # OS X requires servers to be started explicitly + brew services start mysql - # Avoid PostgreSQL upgrade woes, just reinstall the database - brew uninstall --ignore-dependencies postgresql - rm -rf /usr/local/var/postgres - brew install postgresql + # Avoid PostgreSQL upgrade woes, just reinstall the database + brew uninstall --ignore-dependencies postgresql + rm -rf /usr/local/var/postgres + brew install postgresql - echo "Starting PostgreSQL" - pg_ctl -wD /usr/local/var/postgres start - echo "Creating user postgres" - createuser -s postgres - ;; - linux) - export ASAN_OPTIONS="detect_leaks=0" - if [ "${CC}" = "clang" ] - then - CC=clang-3.6 - fi - ;; - esac + echo "Starting PostgreSQL" + pg_ctl -wD /usr/local/var/postgres start + echo "Creating user postgres" + createuser -s postgres + ;; + linux) + export ASAN_OPTIONS="detect_leaks=0" + if [ "${CC}" = "clang" ]; then + CC=clang-3.6 + fi + ;; + esac + fi install: - pip install --user urllib3[secure] cpp-coveralls @@ -79,13 +145,48 @@ before_script: - psql -U postgres -c 'CREATE DATABASE sbtest' script: - - ./autogen.sh && ./configure --enable-coverage --enable-asan --enable-msan --with-mysql --with-pgsql - - make - - make distcheck - - SBTEST_MYSQL_ARGS="--mysql-user=root" SBTEST_PGSQL_ARGS="--pgsql-user=postgres" make test + - > + if [ -n "$TARGET" ]; then + case "$TARGET" in + test) + ./autogen.sh && ./configure --with-mysql --with-pgsql + make + SBTEST_MYSQL_ARGS="--mysql-user=root" SBTEST_PGSQL_ARGS="--pgsql-user=postgres" make test + ;; + distcheck) + ./autogen.sh && ./configure --without-mysql + make + make distcheck + ;; + coverage) + ./autogen.sh && ./configure --enable-coverage --enable-asan --enable-msan --with-mysql --with-pgsql + make -j2 + SBTEST_MYSQL_ARGS="--mysql-user=root" SBTEST_PGSQL_ARGS="--pgsql-user=postgres" make test + ;; + esac + else + git clone https://github.com/akopytov/packpack.git packpack + packpack/packpack + fi + +deploy: + # Deploy packages to PackageCloud + - provider: packagecloud + username: "${PACKAGECLOUD_USER}" + repository: "${PACKAGECLOUD_REPO}" + token: "${PACKAGECLOUD_TOKEN}" + dist: "${OS}/${DIST}" + package_glob: build/*.{rpm,deb,dsc} + skip_cleanup: true + on: + all_branches: true + condition: -n "${OS}" && -n "${DIST}" && -n "${PACKAGECLOUD_TOKEN}" after_success: - - coveralls --exclude third_party/ --gcov-options '\-lp' + - > + if [ "x$TARGET" = "xcoverage" ]; then + coveralls --exclude third_party/ --gcov-options '\-lp' + fi # Local variables: # mode: yaml diff --git a/README.md b/README.md index ddcdb52..3b3e7ff 100644 --- a/README.md +++ b/README.md @@ -52,9 +52,9 @@ build and use sysbench 0.5 natively for Windows. ### RedHat/CentOS ``` shell - yum -y install make automake libtool pkg-config libaio-devel vim-common + yum -y install make automake libtool pkgconfig libaio-devel vim-common # For MySQL support - yum -y install mysql-devel + yum -y install mariadb-devel # For PostgreSQL support yum -y install postgresql-devel ``` diff --git a/debian/rules b/debian/rules index 982789e..af2cecd 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,7 @@ #!/usr/bin/make -f -clean: - make clean +%: + dh $@ override_dh_auto_configure: dh_testdir diff --git a/rpm/sysbench.spec b/rpm/sysbench.spec new file mode 100644 index 0000000..75c286d --- /dev/null +++ b/rpm/sysbench.spec @@ -0,0 +1,166 @@ +Summary: Scriptable database and system performance benchmark +Name: sysbench +# Version will be replaced by packpack +Version: x.y.z +Release: 1%{?dist} +License: GPLv2+ +Group: Applications/System +Source0: https://github.com/akopytov/%{name}/archive/%{version}/%{name}-%{version}.tar.gz +URL: https://github.com/akopytov/sysbench/ + +%if 0%{?el6} +BuildRequires: mysql-devel +%else +BuildRequires: mariadb-devel +%endif +BuildRequires: postgresql-devel +BuildRequires: make +BuildRequires: automake +BuildRequires: libtool +BuildRequires: pkgconfig +BuildRequires: libaio-devel +BuildRequires: vim-common +# Use bundled cram for tests +BuildRequires: python + +ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 + + +%description +sysbench is a modular, cross-platform and multi-threaded benchmark +tool for evaluating OS parameters that are important for a system +running a database under intensive load. + +The idea of this benchmark suite is to quickly get an impression about +system performance without setting up complex database benchmarks or +even without installing a database at all. Current features allow to +test the following system parameters: +- file I/O performance +- scheduler performance +- memory allocation and transfer speed +- POSIX threads implementation performance +- database server performance (OLTP benchmark) + +Primarily written for MySQL server benchmarking, sysbench will be +further extended to support multiple database backends, distributed +benchmarks and third-party plug-in modules. + + +%prep +%setup -q + +%build +export CFLAGS="%{optflags}" +autoreconf -vif +%configure --with-mysql \ + --with-pgsql \ + +%if 0%{?el6} +make -j2 +%else +%make_build +%endif + +%install +%make_install +rm -f %{buildroot}%{_docdir}/sysbench/manual.html + +%check +make test + +%files +%doc ChangeLog COPYING README.md +%if 0%{?el6} +%else +%license COPYING +%endif +%{_bindir}/* +%{_datadir}/%{name} + + +%changelog +* Thu Apr 6 2017 Alexey Kopytov - 1.0.5-1 +- Reuse downstream Fedora spec with modifications (prefer bundled libraries) + +* Mon Mar 13 2017 Xavier Bachelot 1.0.4-2 +- Don't build aarch64 on el7. + +* Mon Mar 13 2017 Xavier Bachelot 1.0.4-1 +- Fix build for i686. +- Drop bundled cram. + +* Wed Mar 08 2017 Xavier Bachelot 1.0.3-1 +- Update to 1.0.3 (RHBZ#1424670). +- Restrict arches to the same ones as luajit. +- Add --with-gcc-arch=native to configure for %%{arm} and aarch64. +- Ignore test suite results for aarch64, it segfaults in koji. + +* Sat Feb 25 2017 Xavier Bachelot 1.0.2-2 +- Run test suite. + +* Sat Feb 25 2017 Xavier Bachelot 1.0.2-1 +- Update to 1.0.2 (RHBZ#1424670). + +* Sun Feb 12 2017 Honza Horak - 1.0.0-1 +- Update to the first proper release 1.0.0 + +* Sat Feb 11 2017 Fedora Release Engineering - 0.4.12-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Feb 05 2016 Fedora Release Engineering - 0.4.12-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jun 19 2015 Fedora Release Engineering - 0.4.12-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Sep 04 2014 Xavier Bachelot 0.4.12-12 +- Modernize specfile. + +* Mon Aug 18 2014 Fedora Release Engineering - 0.4.12-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 0.4.12-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sun Aug 04 2013 Fedora Release Engineering - 0.4.12-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Feb 15 2013 Fedora Release Engineering - 0.4.12-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 0.4.12-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 0.4.12-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Sep 06 2011 Xavier Bachelot 0.4.12-5 +- Add BR: libaio-devel (rhbz#735882). + +* Wed Mar 23 2011 Dan HorĂ¡k - 0.4.12-4 +- rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) + +* Wed Feb 09 2011 Fedora Release Engineering - 0.4.12-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Dec 24 2010 Xavier Bachelot 0.4.12-2 +- Rebuild against new mysql. + +* Wed Jul 07 2010 Xavier Bachelot 0.4.12-1 +- Update to 0.4.12. + +* Fri Aug 21 2009 Tomas Mraz - 0.4.10-5 +- rebuilt with new openssl + +* Sun Jul 26 2009 Fedora Release Engineering - 0.4.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Mar 18 2009 Xavier Bachelot 0.4.10-3 +- License is GPLv2+, not GPLv2. + +* Sat Mar 14 2009 Xavier Bachelot 0.4.10-2 +- Make postgres support optional, the version in rhel4 is too old. +- Drop TODO and manual.html from %%doc, they are empty. + +* Thu Mar 05 2009 Xavier Bachelot 0.4.10-1 +- Adapt original spec file taken from PLD.