Merge remote-tracking branch 'gh/wip-ceph-test' into next

This commit is contained in:
Sage Weil 2012-12-08 09:18:21 -08:00
commit 81e567c90d
7 changed files with 227 additions and 39 deletions

View File

@ -166,6 +166,26 @@ Requires: libcephfs1 = %{version}-%{release}
This package contains Python libraries for interacting with Cephs RADOS
object storage.
%package -n rest-bench
Summary: RESTful benchmark
Group: System Environment/Libraries
License: LGPL-2.0
Requires: librados2 = %{version}-%{release}
Requires: librbd1 = %{version}-%{release}
Requires: libcephfs1 = %{version}-%{release}
%description -n rest-bench
RESTful bencher that can be used to benchmark radosgw performance.
%package -n ceph-test
Summary: Ceph benchmarks and test tools
Group: System Environment/Libraries
License: LGPL-2.0
Requires: librados2 = %{version}-%{release}
Requires: librbd1 = %{version}-%{release}
Requires: libcephfs1 = %{version}-%{release}
%description -n ceph-test
This package contains Ceph benchmarks and test tools.
# Enable building of debug package on distributions that don't automatically
# build it.
@ -197,6 +217,8 @@ export RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed -e 's/i386/i486/'`
--without-hadoop \
--with-nss \
--without-cryptopp \
--with-rest-bench \
--with-debug \
$MY_CONF_OPT \
%{?_with_ocf} \
%{?with_tcmalloc:--with-tcmalloc} %{!?with_tcmalloc:--without-tcmalloc} \
@ -428,4 +450,73 @@ fi
%{python_sitelib}/rados.py*
%{python_sitelib}/rbd.py*
#################################################################################
%files -n rest-bench
%defattr(-,root,root,-)
%{_bindir}/rest-bench
#################################################################################
%files -n ceph-test
%defattr(-,root,root,-)
%{_bindir}/bench_log
%{_bindir}/dupstore
%{_bindir}/kvstorebench
%{_bindir}/multi_stress_watch
%{_bindir}/omapbench
%{_bindir}/psim
%{_bindir}/radosacl
%{_bindir}/rest-bench
%{_bindir}/rgw_jsonparser
%{_bindir}/rgw_multiparser
%{_bindir}/scratchtool
%{_bindir}/scratchtoolpp
%{_bindir}/smalliobench
%{_bindir}/smalliobenchdumb
%{_bindir}/smalliobenchfs
%{_bindir}/streamtest
%{_bindir}/test_cfuse_cache_invalidate
%{_bindir}/test_cls_lock
%{_bindir}/test_cls_rbd
%{_bindir}/test_cls_refcount
%{_bindir}/test_cls_rgw
%{_bindir}/test_filejournal
%{_bindir}/test_filestore
%{_bindir}/test_filestore_idempotent
%{_bindir}/test_filestore_idempotent_sequence
%{_bindir}/test_filestore_workloadgen
%{_bindir}/test_ioctls
%{_bindir}/test_keyvaluedb_atomicity
%{_bindir}/test_keyvaluedb_iterators
%{_bindir}/test_libcephfs
%{_bindir}/test_librbd
%{_bindir}/test_librbd_fsx
%{_bindir}/test_mon_workloadgen
%{_bindir}/test_mutate
%{_bindir}/test_object_map
%{_bindir}/test_objectcacher_stress
%{_bindir}/test_rados_api_aio
%{_bindir}/test_rados_api_cls
%{_bindir}/test_rados_api_io
%{_bindir}/test_rados_api_list
%{_bindir}/test_rados_api_misc
%{_bindir}/test_rados_api_pool
%{_bindir}/test_rados_api_snapshots
%{_bindir}/test_rados_api_stat
%{_bindir}/test_rados_api_watch_notify
%{_bindir}/test_rewrite_latency
%{_bindir}/test_stress_watch
%{_bindir}/test_trans
%{_bindir}/testcrypto
%{_bindir}/testkeys
%{_bindir}/testmsgr
%{_bindir}/testrados
%{_bindir}/testrados_delete_pools_parallel
%{_bindir}/testrados_list_parallel
%{_bindir}/testrados_open_pools_parallel
%{_bindir}/testrados_watch_notify
%{_bindir}/testsignal_handlers
%{_bindir}/testtimers
%{_bindir}/tpbench
%{_bindir}/xattr_bench
%changelog

View File

@ -55,6 +55,11 @@ AC_PROG_CXX
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
# Compiler flags
AC_SUBST(AM_CXXFLAGS)
AM_CXXFLAGS="${AM_CXXFLAGS}"
# Checks for compiler warning types
# AC_CHECK_CC_FLAG(FLAG_TO_TEST, VARIABLE_TO_SET_IF_SUPPORTED)
@ -133,14 +138,16 @@ if test "x$have_cryptopp" = "xyes"; then
AC_MSG_NOTICE([using cryptopp for cryptography])
AC_DEFINE([USE_CRYPTOPP], [1], [Define if using CryptoPP.])
AC_SUBST([CRYPTO_CFLAGS], [$CRYPTOPP_CFLAGS])
AC_SUBST([CRYPTO_CXXFLAGS], [$CRYPTOPP_CXXFLAGS])
#AC_SUBST([CRYPTO_CXXFLAGS], [$CRYPTOPP_CXXFLAGS])
AM_CXXFLAGS="${AM_CXXFLAGS} ${CRYPTOPP_CXXFLAGS}"
AC_SUBST([CRYPTO_LIBS], [$CRYPTOPP_LIBS])
elif test "x$have_nss" = "xyes"; then
AC_MSG_NOTICE([using nss for cryptography])
AC_DEFINE([USE_NSS], [1], [Define if using NSS.])
AC_SUBST([CRYPTO_CFLAGS], [$NSS_CFLAGS])
# this needs CFLAGS too in practise to get the includes right. ugly.
AC_SUBST([CRYPTO_CXXFLAGS], [$NSS_CFLAGS $NSS_CXXFLAGS])
#AC_SUBST([CRYPTO_CXXFLAGS], [$NSS_CFLAGS $NSS_CXXFLAGS])
AM_CXXFLAGS="${AM_CXXFLAGS} ${NSS_CFLAGS} ${NSS_CXXFLAGS}"
AC_SUBST([CRYPTO_LIBS], [$NSS_LIBS])
else
AC_MSG_FAILURE([no suitable crypto library found])

57
debian/ceph-test.install vendored Normal file
View File

@ -0,0 +1,57 @@
usr/bin/bench_log
usr/bin/dupstore
usr/bin/kvstorebench
usr/bin/multi_stress_watch
usr/bin/omapbench
usr/bin/psim
usr/bin/radosacl
usr/bin/rest-bench
usr/bin/rgw_multiparser
usr/bin/scratchtool
usr/bin/scratchtoolpp
usr/bin/smalliobench
usr/bin/smalliobenchdumb
usr/bin/smalliobenchfs
usr/bin/streamtest
usr/bin/test_cfuse_cache_invalidate
usr/bin/test_cls_lock
usr/bin/test_cls_rbd
usr/bin/test_cls_refcount
usr/bin/test_cls_rgw
usr/bin/test_filejournal
usr/bin/test_filestore
usr/bin/test_filestore_idempotent
usr/bin/test_filestore_idempotent_sequence
usr/bin/test_filestore_workloadgen
usr/bin/test_ioctls
usr/bin/test_keyvaluedb_atomicity
usr/bin/test_keyvaluedb_iterators
usr/bin/test_libcephfs
usr/bin/test_librbd
usr/bin/test_librbd_fsx
usr/bin/test_mutate
usr/bin/test_object_map
usr/bin/test_rados_api_aio
usr/bin/test_rados_api_cls
usr/bin/test_rados_api_io
usr/bin/test_rados_api_list
usr/bin/test_rados_api_misc
usr/bin/test_rados_api_pool
usr/bin/test_rados_api_snapshots
usr/bin/test_rados_api_stat
usr/bin/test_rados_api_watch_notify
usr/bin/test_rewrite_latency
usr/bin/test_stress_watch
usr/bin/test_trans
usr/bin/testcrypto
usr/bin/testkeys
usr/bin/testmsgr
usr/bin/testrados
usr/bin/testrados_delete_pools_parallel
usr/bin/testrados_list_parallel
usr/bin/testrados_open_pools_parallel
usr/bin/testrados_watch_notify
usr/bin/testsignal_handlers
usr/bin/testtimers
usr/bin/tpbench
usr/bin/xattr_bench

12
debian/control vendored
View File

@ -308,6 +308,18 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, ceph-common, xml2, curl
Description: RESTful bencher that can be used to benchmark
radosgw performance.
Package: ceph-test
Architecture: linux-any
Depends: ${shlibs:Depends}, ${misc:Depends}, ceph-common, xml2, curl
Description: Ceph test and benchmarking tools.
Package: ceph-test-dbg
Architecture: linux-any
Section: debug
Priority: extra
Depends: ${shlibs:Depends}, ${misc:Depends}, ceph-common, xml2, curl
Description: Ceph test and benchmarking tools.
Package: python-ceph
Architecture: linux-any
Section: python

2
debian/rules vendored
View File

@ -21,6 +21,7 @@ endif
export DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
extraopts += --with-ocf --with-rest-bench --with-nss
extraopts += --with-debug
extraopts += --enable-cephfs-java
ifeq ($(DEB_HOST_ARCH), armel)
@ -126,6 +127,7 @@ binary-arch: build install
dh_strip -plibcephfs1 --dbg-package=libcephfs1-dbg
dh_strip -pradosgw --dbg-package=radosgw-dbg
dh_strip -prest-bench --dbg-package=rest-bench-dbg
dh_strip -pceph-test --dbg-package=ceph-test-dbg
dh_compress
dh_fixperms

View File

@ -71,8 +71,6 @@ SUBDIRS += leveldb
LEVELDB_INCLUDE = -I$(top_srcdir)/src/leveldb/include
endif
# monitor
ceph_mon_SOURCES = ceph_mon.cc
ceph_mon_LDFLAGS = $(AM_LDFLAGS)
@ -84,7 +82,7 @@ bin_PROGRAMS += ceph-mon
ceph_osd_SOURCES = ceph_osd.cc objclass/class_debug.cc \
objclass/class_api.cc
ceph_osd_LDADD = libosd.a $(LIBOS_LDA) $(LIBGLOBAL_LDA)
ceph_osd_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS} $(LEVELDB_INCLUDE)
ceph_osd_CXXFLAGS = ${AM_CXXFLAGS} $(LEVELDB_INCLUDE)
bin_PROGRAMS += ceph-osd
if LINUX
@ -123,7 +121,7 @@ rgw_dencoder_src = rgw/rgw_dencoder.cc \
rgw/rgw_acl.cc
ceph_dencoder_SOURCES = test/encoding/ceph_dencoder.cc ${rgw_dencoder_src}
ceph_dencoder_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
ceph_dencoder_CXXFLAGS = ${AM_CXXFLAGS}
ceph_dencoder_LDADD = $(LIBGLOBAL_LDA) libcls_lock_client.a libcls_rgw_client.a libosd.a libmds.a $(LIBOS_LDA) libmon.a
bin_PROGRAMS += ceph-dencoder
@ -293,7 +291,7 @@ noinst_LIBRARIES =
libcephfs_la_SOURCES = \
libcephfs.cc
libcephfs_la_CFLAGS= ${CRYPTO_CFLAGS} ${AM_CFLAGS}
libcephfs_la_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
libcephfs_la_CXXFLAGS= ${AM_CXXFLAGS}
libcephfs_la_LIBADD = libclient.la
libcephfs_la_LDFLAGS = $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) \
${AM_LDFLAGS} -version-info 1:0:0 -export-symbols-regex '^ceph_.*'
@ -316,7 +314,7 @@ librados_SOURCES = \
osdc/Striper.cc
librados_la_SOURCES = ${librados_SOURCES}
librados_la_CFLAGS = ${CRYPTO_CFLAGS} ${AM_CFLAGS}
librados_la_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
librados_la_CXXFLAGS = ${AM_CXXFLAGS}
librados_la_LIBADD = libcommon.la $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS)
librados_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 -export-symbols-regex '^rados_.*'
lib_LTLIBRARIES += librados.la
@ -348,7 +346,7 @@ librgw_a_SOURCES = \
rgw/rgw_multi_del.cc \
rgw/rgw_env.cc
librgw_a_CFLAGS = ${CRYPTO_CFLAGS} ${AM_CFLAGS}
librgw_a_CXXFLAGS = -Woverloaded-virtual ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
librgw_a_CXXFLAGS = -Woverloaded-virtual ${AM_CXXFLAGS}
noinst_LIBRARIES += librgw.a
my_radosgw_ldadd = \
@ -367,16 +365,16 @@ radosgw_SOURCES = \
rgw/rgw_swift_auth.cc \
rgw/rgw_main.cc
radosgw_LDADD = $(my_radosgw_ldadd) -lfcgi -lresolv
radosgw_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
radosgw_CXXFLAGS = ${AM_CXXFLAGS}
bin_PROGRAMS += radosgw
radosgw_admin_SOURCES = rgw/rgw_admin.cc
radosgw_admin_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
radosgw_admin_CXXFLAGS = ${AM_CXXFLAGS}
radosgw_admin_LDADD = $(my_radosgw_ldadd)
bin_PROGRAMS += radosgw-admin
rgw_multiparser_SOURCES = rgw/rgw_multiparser.cc
rgw_multiparser_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
rgw_multiparser_CXXFLAGS = ${AM_CXXFLAGS}
rgw_multiparser_LDADD = $(my_radosgw_ldadd)
bin_DEBUGPROGRAMS += rgw_multiparser
@ -403,7 +401,7 @@ librbd_la_SOURCES = \
cls/lock/cls_lock_types.cc \
cls/lock/cls_lock_ops.cc
librbd_la_CFLAGS = ${AM_CFLAGS} ${CRYPTO_CFLAGS}
librbd_la_CXXFLAGS = ${AM_CXXFLAGS} ${CRYPTO_CXXFLAGS}
librbd_la_CXXFLAGS = ${AM_CXXFLAGS}
librbd_la_LIBADD = librados.la
librbd_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 \
-export-symbols-regex '^rbd_.*' $(PTHREAD_LIBS) $(EXTRALIBS)
@ -448,7 +446,7 @@ endif
testcrypto_SOURCES = testcrypto.cc
testcrypto_LDADD = $(LIBGLOBAL_LDA)
testcrypto_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
testcrypto_CXXFLAGS = ${AM_CXXFLAGS}
bin_DEBUGPROGRAMS += testcrypto
testkeys_SOURCES = testkeys.cc
@ -704,7 +702,7 @@ check_PROGRAMS += unittest_bufferlist
unittest_crypto_SOURCES = test/crypto.cc
unittest_crypto_LDFLAGS = ${CRYPTO_LDFLAGS} ${AM_LDFLAGS}
unittest_crypto_LDADD = ${LIBGLOBAL_LDA} ${UNITTEST_LDADD}
unittest_crypto_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
unittest_crypto_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
check_PROGRAMS += unittest_crypto
unittest_perf_counters_SOURCES = test/perf_counters.cc
@ -722,7 +720,7 @@ check_PROGRAMS += unittest_admin_socket
unittest_ceph_crypto_SOURCES = test/ceph_crypto.cc
unittest_ceph_crypto_LDFLAGS = ${CRYPTO_LDFLAGS} ${AM_LDFLAGS}
unittest_ceph_crypto_LDADD = ${UNITTEST_LDADD} $(LIBGLOBAL_LDA)
unittest_ceph_crypto_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
unittest_ceph_crypto_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS}
check_PROGRAMS += unittest_ceph_crypto
unittest_utf8_SOURCES = test/utf8.cc
@ -941,7 +939,7 @@ bin_DEBUGPROGRAMS += test_filestore_workloadgen
test_filestore_idempotent_SOURCES = test/filestore/test_idempotent.cc test/filestore/FileStoreTracker.cc test/common/ObjectContents.cc
test_filestore_idempotent_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
test_filestore_idempotent_CXXFLAGS = ${CRYPTO_CXXFLAGS} $(LEVELDB_INCLUDE)
test_filestore_idempotent_CXXFLAGS = $(AM_CXXFLAGS) $(LEVELDB_INCLUDE)
bin_DEBUGPROGRAMS += test_filestore_idempotent
test_filestore_idempotent_sequence_SOURCES = \
@ -1040,7 +1038,9 @@ ${WARN_TYPE_LIMITS} ${WARN_IGNORED_QUALIFIERS} -Winit-self -Wpointer-arith \
-fno-strict-aliasing
AM_CFLAGS = $(AM_COMMON_FLAGS)
AM_CXXFLAGS = $(AM_COMMON_FLAGS) \
AM_CXXFLAGS = \
@AM_CXXFLAGS@ \
$(AM_COMMON_FLAGS) \
-DCEPH_LIBDIR=\"${libdir}\" \
-Wnon-virtual-dtor \
-Wno-invalid-offsetof \
@ -1162,7 +1162,7 @@ clean-local:
libcommon_la_SOURCES = $(libcommon_files)
libcommon_la_CFLAGS= ${CRYPTO_CFLAGS} ${AM_CFLAGS}
libcommon_la_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
libcommon_la_CXXFLAGS= ${AM_CXXFLAGS}
libcommon_la_LDFLAGS = -lrt
noinst_LTLIBRARIES += libcommon.la
@ -1172,7 +1172,7 @@ libglobal_la_SOURCES = \
global/pidfile.cc \
global/signal_handler.cc
libglobal_la_CFLAGS= ${CRYPTO_CFLAGS} ${AM_CFLAGS}
libglobal_la_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
libglobal_la_CXXFLAGS= ${AM_CXXFLAGS}
libglobal_la_LIBADD= libcommon.la
noinst_LTLIBRARIES += libglobal.la
@ -1309,7 +1309,7 @@ libmon_a_SOURCES = \
mon/AuthMonitor.cc \
mon/Elector.cc \
mon/MonitorStore.cc
libmon_a_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
libmon_a_CXXFLAGS= ${AM_CXXFLAGS}
noinst_LIBRARIES += libmon.a
libmds_a_SOURCES = \
@ -1354,7 +1354,7 @@ libos_a_SOURCES = \
os/FlatIndex.cc \
os/DBObjectMap.cc \
os/LevelDBStore.cc
libos_a_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS} $(LEVELDB_INCLUDE)
libos_a_CXXFLAGS= ${AM_CXXFLAGS} $(LEVELDB_INCLUDE)
noinst_LIBRARIES += libos.a
libosd_a_SOURCES = \
@ -1366,7 +1366,7 @@ libosd_a_SOURCES = \
osd/Watch.cc \
osd/ClassHandler.cc \
osd/OpRequest.cc
libosd_a_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
libosd_a_CXXFLAGS= ${AM_CXXFLAGS}
noinst_LIBRARIES += libosd.a
libosdc_la_SOURCES = \
@ -1374,7 +1374,7 @@ libosdc_la_SOURCES = \
osdc/ObjectCacher.cc \
osdc/Filer.cc \
osdc/Striper.cc
libosdc_la_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
libosdc_la_CXXFLAGS= ${AM_CXXFLAGS}
libosdc_la_LIBADD = libcommon.la
noinst_LTLIBRARIES += libosdc.la
@ -1879,20 +1879,39 @@ noinst_HEADERS = \
test/osd/TestOpStat.h\
global/pidfile.h\
common/sync_filesystem.h \
test/encoding/types.h \
test/kv_store_bench.h \
test/omap_bench.h \
test/system/cross_process_sem.h \
test/system/st_rados_create_pool.h \
test/system/st_rados_list_objects.h \
test/system/st_rados_delete_objs.h \
test/system/st_rados_delete_pool.h \
test/system/st_rados_notify.h \
test/system/st_rados_watch.h \
test/system/systest_runnable.h \
test/system/systest_settings.h \
test/librados/test.h \
test/unit.h \
test/bench/distribution.h \
test/bench/rados_backend.h \
test/bench/bencher.h \
test/bench/backend.h \
test/bench/dumb_backend.h \
test/bench/stat_collector.h \
test/bench/detailed_stat_collector.h \
test/bench/filestore_backend.h \
test/common/ObjectContents.h \
test/encoding/types.h \
test/filestore/DeterministicOpSequence.h \
test/filestore/FileStoreTracker.h \
test/filestore/FileStoreDiff.h \
test/filestore/TestFileStoreState.h \
test/filestore/workload_generator.h \
test/kv_store_bench.h \
test/librados/test.h \
test/ObjectMap/KeyValueDBMemory.h \
test/omap_bench.h \
test/osd/Object.h \
test/osd/RadosModel.h \
test/osd/TestOpStat.h \
test/osdc/FakeWriteback.h \
test/system/cross_process_sem.h \
test/system/st_rados_create_pool.h \
test/system/st_rados_list_objects.h \
test/system/st_rados_delete_objs.h \
test/system/st_rados_delete_pool.h \
test/system/st_rados_notify.h \
test/system/st_rados_watch.h \
test/system/systest_runnable.h \
test/system/systest_settings.h \
test/unit.h \
os/ObjectMap.h \
os/DBObjectMap.h \
os/KeyValueDB.h \

View File

@ -43,7 +43,7 @@ public:
}
void seek_to(uint64_t _pos) {
if (pos > _pos ||
iter != parent->seeds.end() && _pos >= iter->first) {
(iter != parent->seeds.end() && _pos >= iter->first)) {
iter = parent->seeds.upper_bound(_pos);
--iter;
current_state = iter->second;