Merge commit 'weigon/autotools-and-unittest'

This commit is contained in:
Doug MacEachern 2009-08-18 21:19:52 -07:00
commit 43b5297178
38 changed files with 2028 additions and 59 deletions

35
CMakeLists.txt Normal file
View File

@ -0,0 +1,35 @@
PROJECT(sigar C)
cmake_minimum_required(VERSION 2.6)
INCLUDE(CheckIncludeFiles)
INCLUDE(CheckFunctionExists)
INCLUDE(CheckTypeSize)
INCLUDE(CTest)
INCLUDE(InstallRequiredSystemLibraries)
ENABLE_TESTING()
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "6")
SET(CPACK_PACKAGE_VERSION_PATCH "2")
SET(CPACK_PACKAGE_VENDOR "Hyperic")
## SET(CPACK_*) before the INCLUDE(CPack)
INCLUDE(CPack)
IF(WIN32)
## make sure we only use the smallest set of
## headers on win32. Otherwise we get clashes
## between winsock2.h and winsock.h
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
# force the correct version for the redist manifest
ADD_DEFINITIONS(-D_BIND_TO_CURRENT_MFC_VERSION=1 -D_BIND_TO_CURRENT_CRT_VERSION=1)
# turn off security warnings for system calls
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
ENDIF(WIN32)
ADD_SUBDIRECTORY(src build-src)
ADD_SUBDIRECTORY(tests build-tests)
ADD_SUBDIRECTORY(include build-include)

View File

@ -1,2 +1,5 @@
SUBDIRS = src examples SUBDIRS = include src examples tests
EXTRA_DIST=\
CMakeLists.txt \
winbuild.bat

View File

@ -1,15 +1,96 @@
#!/bin/sh #!/bin/sh
set -x # Run this to generate all the initial makefiles, etc.
touch INSTALL NEWS AUTHORS # LIBTOOLIZE=${LIBTOOLIZE:-libtoolize}
libtoolize="libtoolize" LIBTOOLIZE_FLAGS="--copy --force"
if which glibtoolize >/dev/null 2>&1 # ACLOCAL=${ACLOCAL:-aclocal}
then # AUTOHEADER=${AUTOHEADER:-autoheader}
libtoolize=glibtoolize # AUTOMAKE=${AUTOMAKE:-automake}
AUTOMAKE_FLAGS="--add-missing --copy"
# AUTOCONF=${AUTOCONF:-autoconf}
ARGV0=$0
ARGS="$@"
run() {
echo "$ARGV0: running \`$@' $ARGS"
$@ $ARGS
}
## jump out if one of the programs returns 'false'
set -e
## on macosx glibtoolize, others have libtool
if test x$LIBTOOLIZE = x; then
if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then
LIBTOOLIZE=glibtoolize
elif test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then
LIBTOOLIZE=libtoolize-1.5
elif test \! "x`which libtoolize 2> /dev/null | grep -v '^no'`" = x; then
LIBTOOLIZE=libtoolize
else
echo "libtoolize 1.5.x wasn't found, exiting"; exit 0
fi
fi fi
autoheader \ ## suse has aclocal and aclocal-1.9
&& aclocal \ if test x$ACLOCAL = x; then
&& $libtoolize --copy --force \ if test \! "x`which aclocal-1.9 2> /dev/null | grep -v '^no'`" = x; then
&& automake --add-missing --copy \ ACLOCAL=aclocal-1.9
&& autoconf elif test \! "x`which aclocal19 2> /dev/null | grep -v '^no'`" = x; then
ACLOCAL=aclocal19
elif test \! "x`which aclocal 2> /dev/null | grep -v '^no'`" = x; then
ACLOCAL=aclocal
else
echo "automake 1.9.x (aclocal) wasn't found, exiting"; exit 0
fi
fi
if test x$AUTOMAKE = x; then
if test \! "x`which automake-1.9 2> /dev/null | grep -v '^no'`" = x; then
AUTOMAKE=automake-1.9
elif test \! "x`which automake19 2> /dev/null | grep -v '^no'`" = x; then
AUTOMAKE=automake19
elif test \! "x`which automake 2> /dev/null | grep -v '^no'`" = x; then
AUTOMAKE=automake
else
echo "automake 1.9.x wasn't found, exiting"; exit 0
fi
fi
## macosx has autoconf-2.59 and autoconf-2.60
if test x$AUTOCONF = x; then
if test \! "x`which autoconf-2.59 2> /dev/null | grep -v '^no'`" = x; then
AUTOCONF=autoconf-2.59
elif test \! "x`which autoconf259 2> /dev/null | grep -v '^no'`" = x; then
AUTOCONF=autoconf259
elif test \! "x`which autoconf 2> /dev/null | grep -v '^no'`" = x; then
AUTOCONF=autoconf
else
echo "autoconf 2.59+ wasn't found, exiting"; exit 0
fi
fi
if test x$AUTOHEADER = x; then
if test \! "x`which autoheader-2.59 2> /dev/null | grep -v '^no'`" = x; then
AUTOHEADER=autoheader-2.59
elif test \! "x`which autoheader259 2> /dev/null | grep -v '^no'`" = x; then
AUTOHEADER=autoheader259
elif test \! "x`which autoheader 2> /dev/null | grep -v '^no'`" = x; then
AUTOHEADER=autoheader
else
echo "autoconf 2.59+ (autoheader) wasn't found, exiting"; exit 0
fi
fi
run $LIBTOOLIZE $LIBTOOLIZE_FLAGS
run $ACLOCAL $ACLOCAL_FLAGS
# we don't need autoheader as we don't have a config.h
# run $AUTOHEADER
run $AUTOMAKE $AUTOMAKE_FLAGS
run $AUTOCONF
test "$ARGS" = "" && echo "Now type './configure --enable-maintainer-mode ...' and 'make' to compile."

View File

@ -1,9 +1,21 @@
dnl ... hmm ... we have to duplicate the data below again
AC_INIT(libsigar, 1.6.2) AC_INIT(libsigar, 1.6.2)
AC_CONFIG_SRCDIR(src/sigar.c) AC_CONFIG_SRCDIR(src/sigar.c)
AC_CONFIG_HEADERS(src/config.h) dnl AC_CONFIG_HEADERS(src/config.h)
AM_INIT_AUTOMAKE AM_INIT_AUTOMAKE([foreign])
AC_CANONICAL_HOST AC_CANONICAL_HOST
dnl for sigar_version_autoconf.c.in
VERSION_MAJOR=1
VERSION_MINOR=6
VERSION_MAINT=2
VERSION_BUILD=0
AC_SUBST(VERSION_MAJOR)
AC_SUBST(VERSION_MINOR)
AC_SUBST(VERSION_MAINT)
AC_SUBST(VERSION_BUILD)
AC_PROG_CC AC_PROG_CC
AC_PROG_LN_S AC_PROG_LN_S
AC_PROG_INSTALL AC_PROG_INSTALL
@ -11,57 +23,109 @@ AC_PROG_MAKE_SET
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
AC_MSG_CHECKING([for os type ($host_os)]) AC_MSG_CHECKING([for os type ($host_os)])
FRAMEWORK=
case $host_os in case $host_os in
*aix*) *aix*)
SRC_OS="aix" SRC_OS="aix"
AC_DEFINE(SIGAR_TEST_OS_AIX, [1], [for the tests])
LIBS="-lodm -lcfg -lperfstat -lpthreads"
;; ;;
*darwin*) *darwin*)
SRC_OS="darwin" SRC_OS="darwin"
;; AC_DEFINE(DARWIN,[],[running on MacOS X])
*freebsd*) AC_DEFINE(SIGAR_TEST_OS_DARWIN, [1], [for the tests])
SRC_OS="darwin" SIGAR_INCLUDES="-I /Developer/Headers/FlatCarbon/"
LIBS="-lkvm" SIGAR_LIBS="-framework IOKit -framework CoreServices"
;;
*hpux*)
SRC_OS="hpux"
;;
*linux*)
SRC_OS="linux"
;;
*openbsd*)
SRC_OS="darwin"
LIBS="-lkvm"
;; ;;
*netbsd*) *netbsd*)
SRC_OS="darwin" SRC_OS="darwin"
LIBS="-lkvm" AC_DEFINE(SIGAR_TEST_OS_DARWIN, [1], [for the tests])
SIGAR_LIBS="-lkvm"
;;
*openbsd*)
SRC_OS="darwin"
AC_DEFINE(SIGAR_TEST_OS_DARWIN, [1], [for the tests])
SIGAR_LIBS="-lkvm"
;;
*freebsd*)
SRC_OS="darwin"
AC_DEFINE(SIGAR_TEST_OS_DARWIN, [1], [for the tests])
SIGAR_LIBS="-lkvm"
;;
*hpux*)
AC_DEFINE(SIGAR_HPUX,[],[running on HPUX])
SRC_OS="hpux"
AC_DEFINE(SIGAR_TEST_OS_HPUX, [1], [for the tests])
SIGAR_LIBS="-lnm -lnsl"
;;
*linux*)
SRC_OS="linux"
AC_DEFINE(SIGAR_TEST_OS_LINUX, [1], [for the tests])
;; ;;
*solaris*) *solaris*)
AC_DEFINE(SOLARIS,[],[running on Solaris])
SRC_OS="solaris" SRC_OS="solaris"
LIBS="-lkstat -lsocket" AC_DEFINE(SIGAR_TEST_OS_SOLARIS, [1], [for the tests])
SIGAR_LIBS="-lkstat -lsocket"
;; ;;
*) *)
ac_system="unknown" ac_system="unknown"
esac esac
AC_MSG_RESULT([$ac_system])
AC_MSG_RESULT([$SRC_OS]) AC_MSG_RESULT([$SRC_OS])
INCLUDES="-I\$(top_builddir)/include -I\$(srcdir)/os/$SRC_OS" AC_CHECK_HEADERS(libproc.h valgrind/valgrind.h)
if test $ac_cv_header_libproc_h = yes; then
AC_DEFINE(DARWIN_HAS_LIBPROC_H, [1], [sigar named them DARWIN_HAS_... instead of HAVE_])
fi
INCLUDES="-I\$(top_srcdir)/include -I\$(top_srcdir)/src/os/$SRC_OS $SIGAR_INCLUDES"
AC_SUBST(SRC_OS) AC_SUBST(SRC_OS)
AC_SUBST(INCLUDES) AC_SUBST(INCLUDES)
AC_SUBST(LIBS) AC_SUBST(SIGAR_LIBS)
AM_CONDITIONAL(OS_WIN32, test x$SRC_OS = xwin32)
AM_CONDITIONAL(OS_MACOSX, test x$SRC_OS = xdarwin)
AM_CONDITIONAL(OS_LINUX, test x$SRC_OS = xlinux)
AM_CONDITIONAL(OS_HPUX, test x$SRC_OS = xhpux)
AM_CONDITIONAL(OS_AIX, test x$SRC_OS = xaix)
AM_CONDITIONAL(OS_SOLARIS, test x$SRC_OS = xsolaris)
AC_ARG_WITH(valgrind, [AC_HELP_STRING(
[--with-valgrind[=binary]],
[run the tests in valgrind to check for mem-leaks]
)],
[],
[with_valgrind=no])
AS_IF([test "x$with_valgrind" != xno],
[AS_IF([test "x$with_valgrind" = xyes],
[AC_CHECK_PROG(VALGRIND, valgrind)
AS_IF([test "x$VALGRIND" = x],
[AC_MSG_ERROR("--with-valgrind ... but no valgrind found")])
],
[VALGRIND="$with_valgrind"
AC_SUBST(VALGRIND)])
])
AM_CONDITIONAL(USE_VALGRIND, test "x$VALGRIND" != x)
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile
include/Makefile
src/Makefile src/Makefile
src/os/Makefile src/os/Makefile
src/os/aix/Makefile src/os/aix/Makefile
src/os/darwin/Makefile src/os/darwin/Makefile
src/os/linux/Makefile src/os/freebsd/Makefile
src/os/hpux/Makefile src/os/hpux/Makefile
src/os/linux/Makefile
src/os/netware/Makefile
src/os/osf1/Makefile
src/os/solaris/Makefile src/os/solaris/Makefile
src/os/stub/Makefile
src/os/win32/Makefile
examples/Makefile examples/Makefile
src/sigar_version_autoconf.c
tests/Makefile
]) ])
AC_OUTPUT AC_OUTPUT

10
include/CMakeLists.txt Normal file
View File

@ -0,0 +1,10 @@
INSTALL(FILES sigar.h
sigar_fileinfo.h
sigar_format.h
sigar_getline.h
sigar_log.h
sigar_private.h
sigar_ptql.h
sigar_util.h
DESTINATION include/
)

12
include/Makefile.am Normal file
View File

@ -0,0 +1,12 @@
include_HEADERS = \
sigar.h \
sigar_fileinfo.h \
sigar_format.h \
sigar_getline.h \
sigar_log.h \
sigar_private.h \
sigar_ptql.h \
sigar_util.h
EXTRA_DIST=\
CMakeLists.txt

92
src/CMakeLists.txt Normal file
View File

@ -0,0 +1,92 @@
## sigar has some base files + a set of platform specific files
MESSAGE(STATUS "CMAKE_SYSTEM_NAME is ${CMAKE_SYSTEM_NAME}")
INCLUDE_DIRECTORIES(../include/)
## linux
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
SET(SIGAR_SRC os/linux/linux_sigar.c)
INCLUDE_DIRECTORIES(os/linux/)
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
## macosx, freebsd
IF(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)")
SET(SIGAR_SRC os/darwin/darwin_sigar.c)
INCLUDE_DIRECTORIES(os/darwin/)
IF(CMAKE_SYSTEM_NAME MATCHES "(Darwin)")
INCLUDE_DIRECTORIES(/Developer/Headers/FlatCarbon/)
ADD_DEFINITIONS(-DDARWIN)
SET(SIGAR_LINK_FLAGS "-framework CoreServices -framework IOKit")
ELSE(CMAKE_SYSTEM_NAME MATCHES "(Darwin)")
## freebsd needs libkvm
SET(SIGAR_LINK_FLAGS "-lkvm")
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(Darwin)")
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)")
## solaris
IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)" )
SET(SIGAR_SRC
os/solaris/solaris_sigar.c
os/solaris/get_mib2.c
os/solaris/kstats.c
os/solaris/procfs.c
)
INCLUDE_DIRECTORIES(os/solaris/)
ADD_DEFINITIONS(-DSOLARIS)
SET(SIGAR_LINK_FLAGS -lkstat -ldl -lnsl -lsocket -lresolv)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)" )
## solaris
IF (CMAKE_SYSTEM_NAME MATCHES "(hpux)" )
SET(SIGAR_SRC
os/hpux/hpux_sigar.c
os/hpux/dlpi.c
)
INCLUDE_DIRECTORIES(os/hpux/)
ADD_DEFINITIONS(-DSIGAR_HPUX)
SET(SIGAR_LINK_FLAGS -lnm)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(hpux)" )
## aix
IF (CMAKE_SYSTEM_NAME MATCHES "(AIX)" )
SET(SIGAR_SRC os/aix/aix_sigar.c)
INCLUDE_DIRECTORIES(os/aix/)
SET(SIGAR_LINK_FLAGS -lodm -lcfg)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(AIX)" )
IF(WIN32)
ADD_DEFINITIONS(-DSIGAR_SHARED)
SET(SIGAR_SRC os/win32/peb.c os/win32/win32_sigar.c)
INCLUDE_DIRECTORIES(os/win32)
ENDIF(WIN32)
SET(SIGAR_SRC ${SIGAR_SRC}
sigar.c
sigar_cache.c
sigar_fileinfo.c
sigar_format.c
sigar_getline.c
sigar_ptql.c
sigar_signal.c
sigar_util.c
)
ADD_LIBRARY(sigar SHARED ${SIGAR_SRC})
IF(WIN32)
TARGET_LINK_LIBRARIES(sigar ws2_32 netapi32 version)
ENDIF(WIN32)
IF(SIGAR_LINK_FLAGS)
SET_TARGET_PROPERTIES(sigar PROPERTIES LINK_FLAGS "${SIGAR_LINK_FLAGS}")
ENDIF(SIGAR_LINK_FLAGS)
INSTALL(TARGETS sigar
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

View File

@ -2,26 +2,15 @@ SUBDIRS = os
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
include_HEADERS = \
$(top_builddir)/include/sigar.h \
$(top_builddir)/include/sigar_log.h \
$(top_builddir)/include/sigar_format.h \
$(top_builddir)/include/sigar_fileinfo.h \
$(top_builddir)/include/sigar_ptql.h
lib_LTLIBRARIES = libsigar.la lib_LTLIBRARIES = libsigar.la
libsigar_la_LDFLAGS = libsigar_la_LDFLAGS = $(SIGAR_LIBS)
libsigar_la_LIBADD = $(top_builddir)/src/os/@SRC_OS@/libsigar_os.la libsigar_la_LIBADD = $(top_builddir)/src/os/@SRC_OS@/libsigar_os.la
libsigar_la_CFLAGS = libsigar_la_CFLAGS = -I$(top_srcdir)/include
libsigar_la_SOURCES = \ libsigar_la_SOURCES = \
$(include_HEADERS) \
$(top_builddir)/include/sigar_private.h \
$(top_builddir)/include/sigar_util.h \
$(top_builddir)/include/sigar_getline.h \
sigar.c \ sigar.c \
sigar_cache.c \ sigar_cache.c \
sigar_fileinfo.c \ sigar_fileinfo.c \
@ -29,5 +18,10 @@ libsigar_la_SOURCES = \
sigar_getline.c \ sigar_getline.c \
sigar_ptql.c \ sigar_ptql.c \
sigar_signal.c \ sigar_signal.c \
sigar_util.c sigar_util.c \
sigar_version_autoconf.c
EXTRA_DIST=\
sigar_version.c.in \
CMakeLists.txt

View File

@ -1 +1,11 @@
SUBDIRS = @SRC_OS@ SUBDIRS = \
aix \
darwin \
freebsd \
hpux \
linux \
netware \
osf1 \
solaris \
stub \
win32

View File

@ -1,7 +1,18 @@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
SIGAR_OS_SRCS = aix_sigar.c
SIGAR_OS_HDRS = sigar_os.h
if OS_AIX
noinst_LTLIBRARIES = libsigar_os.la noinst_LTLIBRARIES = libsigar_os.la
libsigar_os_la_SOURCES = aix_sigar.c libsigar_os_la_SOURCES = ${SIGAR_OS_SRCS}
noinst_HEADERS = ${SIGAR_OS_HDRS}
else
EXTRA_DIST=\
${SIGAR_OS_SRCS} \
${SIGAR_OS_HDRS}
endif
noinst_HEADERS = sigar_os.h

View File

@ -1,7 +1,18 @@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
SIGAR_OS_SRCS=\
darwin_sigar.c
SIGAR_OS_HDRS=\
sigar_os.h
if OS_MACOSX
noinst_LTLIBRARIES = libsigar_os.la noinst_LTLIBRARIES = libsigar_os.la
libsigar_os_la_SOURCES = darwin_sigar.c libsigar_os_la_SOURCES = ${SIGAR_OS_SRCS}
noinst_HEADERS = sigar_os.h noinst_HEADERS = ${SIGAR_OS_HDRS}
else
EXTRA_DIST=\
${SIGAR_OS_SRCS} \
${SIGAR_OS_HDRS}
endif

View File

@ -0,0 +1,2 @@
EXTRA_DIST=\
README

View File

@ -1,7 +1,17 @@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
SIGAR_OS_SRCS = hpux_sigar.c dlpi.c
SIGAR_OS_HDRS = sigar_os.h
if OS_HPUX
noinst_LTLIBRARIES = libsigar_os.la noinst_LTLIBRARIES = libsigar_os.la
libsigar_os_la_SOURCES = hpux_sigar.c dlpi.c libsigar_os_la_SOURCES = ${SIGAR_OS_SRCS}
noinst_HEADERS = sigar_os.h noinst_HEADERS = ${SIGAR_OS_HDRS}
else
EXTRA_DIST=\
${SIGAR_OS_SRCS} \
${SIGAR_OS_HDRS}
endif

View File

@ -1,7 +1,18 @@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
SIGAR_OS_SRCS = linux_sigar.c
SIGAR_OS_HDRS = sigar_os.h
if OS_LINUX
noinst_LTLIBRARIES = libsigar_os.la noinst_LTLIBRARIES = libsigar_os.la
libsigar_os_la_SOURCES = linux_sigar.c libsigar_os_la_SOURCES = ${SIGAR_OS_SRCS}
noinst_HEADERS = ${SIGAR_OS_HDRS}
else
EXTRA_DIST=\
${SIGAR_OS_SRCS} \
${SIGAR_OS_HDRS}
endif
noinst_HEADERS = sigar_os.h

View File

@ -0,0 +1,5 @@
EXTRA_DIST=\
Makefile.nw \
netware_sigar.c \
sigar.def.in \
sigar_os.h

3
src/os/osf1/Makefile.am Normal file
View File

@ -0,0 +1,3 @@
EXTRA_DIST=\
osf1_sigar.c \
sigar_os.h

View File

@ -1,7 +1,18 @@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
SIGAR_OS_SRCS = solaris_sigar.c get_mib2.c kstats.c procfs.c
SIGAR_OS_HDRS = sigar_os.h get_mib2.h hmekstat.h
if OS_SOLARIS
noinst_LTLIBRARIES = libsigar_os.la noinst_LTLIBRARIES = libsigar_os.la
libsigar_os_la_SOURCES = solaris_sigar.c get_mib2.c kstats.c procfs.c libsigar_os_la_SOURCES = ${SIGAR_OS_SRCS}
noinst_HEADERS = ${SIGAR_OS_HDRS}
else
EXTRA_DIST=\
${SIGAR_OS_SRCS} \
${SIGAR_OS_HDRS}
endif
noinst_HEADERS = sigar_os.h

3
src/os/stub/Makefile.am Normal file
View File

@ -0,0 +1,3 @@
EXTRA_DIST=\
sigar_os.h \
stub_sigar.c

8
src/os/win32/Makefile.am Normal file
View File

@ -0,0 +1,8 @@
EXTRA_DIST=\
build-cpu.bat \
counter_names.txt \
peb.c \
sigar.rc.in \
sigar_os.h \
sigar_pdh.h \
win32_sigar.c

View File

@ -0,0 +1,22 @@
#include "sigar.h"
static sigar_version_t sigar_version = {
__DATE__,
"@SCM_REVISION@",
"@PACKAGE_STRING@",
"@build@",
"@build_os@",
"@build_cpu@",
"SIGAR-@PACKAGE_VERSION@, "
"SCM revision @SCM_REVISION@, "
"built "__DATE__" as @build_cpu@",
@VERSION_MAJOR@,
@VERSION_MINOR@,
@VERSION_MAINT@,
@VERSION_BUILD@
};
SIGAR_DECLARE(sigar_version_t *) sigar_version_get(void)
{
return &sigar_version;
}

52
tests/CMakeLists.txt Normal file
View File

@ -0,0 +1,52 @@
MACRO(SIGAR_TEST name)
ADD_EXECUTABLE(${name} ${name}.c)
TARGET_LINK_LIBRARIES(${name} sigar)
ADD_TEST(${name} ${name})
ENDMACRO(SIGAR_TEST name)
INCLUDE_DIRECTORIES(../include/)
MESSAGE(STATUS "CMAKE_SYSTEM_NAME is ${CMAKE_SYSTEM_NAME}")
## linux
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
ADD_DEFINITIONS(-DSIGAR_TEST_OS_LINUX)
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
## macosx, freebsd
IF(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)")
ADD_DEFINITIONS(-DSIGAR_TEST_OS_DARWIN)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)")
## solaris
IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)" )
ADD_DEFINITIONS(-DSIGAR_TEST_OS_SOLARIS)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)" )
## solaris
IF (CMAKE_SYSTEM_NAME MATCHES "(hpux)" )
ADD_DEFINITIONS(-DSIGAR_TEST_OS_HPUX)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(hpux)" )
## aix
IF (CMAKE_SYSTEM_NAME MATCHES "(AIX)" )
ADD_DEFINITIONS(-DSIGAR_TEST_OS_AIX)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "(AIX)" )
IF(WIN32)
ADD_DEFINITIONS(-DSIGAR_TEST_OS_WIN32)
ENDIF(WIN32)
SIGAR_TEST(t_sigar_cpu)
SIGAR_TEST(t_sigar_fs)
SIGAR_TEST(t_sigar_loadavg)
SIGAR_TEST(t_sigar_mem)
SIGAR_TEST(t_sigar_netconn)
SIGAR_TEST(t_sigar_netif)
SIGAR_TEST(t_sigar_pid)
SIGAR_TEST(t_sigar_proc)
SIGAR_TEST(t_sigar_reslimit)
SIGAR_TEST(t_sigar_swap)
SIGAR_TEST(t_sigar_sysinfo)
SIGAR_TEST(t_sigar_uptime)
# SIGAR_TEST(t_sigar_version)

69
tests/Makefile.am Normal file
View File

@ -0,0 +1,69 @@
TESTS = \
t_sigar_cpu \
t_sigar_proc \
t_sigar_swap \
t_sigar_mem \
t_sigar_sysinfo \
t_sigar_version \
t_sigar_loadavg \
t_sigar_uptime \
t_sigar_reslimit \
t_sigar_fs \
t_sigar_netif \
t_sigar_netconn \
t_sigar_pid
if USE_VALGRIND
TESTS_ENVIRONMENT = \
VALGRIND=${VALGRIND} \
${srcdir}/valgrind-leak-check
endif
check_PROGRAMS = \
$(TESTS)
t_sigar_mem_SOURCES = t_sigar_mem.c
t_sigar_mem_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_pid_SOURCES = t_sigar_pid.c
t_sigar_pid_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_swap_SOURCES = t_sigar_swap.c
t_sigar_swap_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_cpu_SOURCES = t_sigar_cpu.c
t_sigar_cpu_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_proc_SOURCES = t_sigar_proc.c
t_sigar_proc_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_sysinfo_SOURCES = t_sigar_sysinfo.c
t_sigar_sysinfo_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_uptime_SOURCES = t_sigar_uptime.c
t_sigar_uptime_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_loadavg_SOURCES = t_sigar_loadavg.c
t_sigar_loadavg_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_version_SOURCES = t_sigar_version.c
t_sigar_version_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_fs_SOURCES = t_sigar_fs.c
t_sigar_fs_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_reslimit_SOURCES = t_sigar_reslimit.c
t_sigar_reslimit_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_netif_SOURCES = t_sigar_netif.c
t_sigar_netif_LDADD = $(top_builddir)/src/libsigar.la
t_sigar_netconn_SOURCES = t_sigar_netconn.c
t_sigar_netconn_LDADD = $(top_builddir)/src/libsigar.la
noinst_HEADERS=\
sigar_tests.h
EXTRA_DIST=\
valgrind-leak-check \
CMakeLists.txt

50
tests/sigar_tests.h Normal file
View File

@ -0,0 +1,50 @@
#ifndef __SIGAR_TESTS_H__
#define __SIGAR_TESTS_H__
#ifdef WIN32
#define EOL "\r\n"
#else
#define EOL "\n"
#endif
/**
* pick the right format for a unsigned 64bit int */
#ifdef WIN32
# define F_U64 "%I64u"
# define F_SIZE_T "%lu"
#else
# ifdef SIGAR_64BIT
# define F_U64 "%lu"
# define F_SIZE_T "%lu"
# else
# define F_U64 "%llu"
# define F_SIZE_T "%lu"
# endif
#endif
#ifndef RLIM_INFINITY
# define RLIM_INFINITY -1
#endif
#define IS_IMPL_U64(x) \
(x != (sigar_uint64_t)SIGAR_FIELD_NOTIMPL)
#define IS_IMPL_INT(x) \
(x != (int)SIGAR_FIELD_NOTIMPL)
#define IS_RLIM_INF(x) \
(x == (sigar_uint64_t)RLIM_INFINITY)
#define F_IF_VALID_U64 \
"%s" F_U64
#define TEST(name) \
static int name(sigar_t *t)
#define NETADDR_IF_IMPL(x, value) \
if (x.family != SIGAR_AF_UNSPEC) { \
value = calloc(1, SIGAR_INET6_ADDRSTRLEN + 1); \
assert(SIGAR_OK == sigar_net_address_to_string(t, &x, value));\
}
#endif

147
tests/t_sigar_cpu.c Normal file
View File

@ -0,0 +1,147 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_cpu_get) {
sigar_cpu_t cpu;
int ret;
if (SIGAR_OK == (ret = sigar_cpu_get(t, &cpu))) {
assert(IS_IMPL_U64(cpu.user));
assert(IS_IMPL_U64(cpu.sys));
#if !(defined(SIGAR_TEST_OS_AIX))
assert(IS_IMPL_U64(cpu.nice));
#endif
assert(IS_IMPL_U64(cpu.idle));
assert(IS_IMPL_U64(cpu.wait));
assert(IS_IMPL_U64(cpu.total));
} else {
switch (ret) {
/* track the expected error code */
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
return 0;
}
TEST(test_sigar_cpu_list_get) {
sigar_cpu_list_t cpulist;
size_t i;
int ret;
if (SIGAR_OK != (ret = sigar_cpu_list_get(t, &cpulist))) {
switch (ret) {
/* track the expected error code */
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
for (i = 0; i < cpulist.number; i++) {
sigar_cpu_t cpu = cpulist.data[i];
assert(IS_IMPL_U64(cpu.user));
assert(IS_IMPL_U64(cpu.user));
assert(IS_IMPL_U64(cpu.sys));
#if !(defined(SIGAR_TEST_OS_AIX))
assert(IS_IMPL_U64(cpu.nice));
#endif
assert(IS_IMPL_U64(cpu.idle));
assert(IS_IMPL_U64(cpu.wait));
assert(IS_IMPL_U64(cpu.total));
}
sigar_cpu_list_destroy(t, &cpulist);
return 0;
}
TEST(test_sigar_cpu_info_get) {
sigar_cpu_info_list_t cpuinfo;
size_t i;
assert(SIGAR_OK == sigar_cpu_info_list_get(t, &cpuinfo));
for (i = 0; i < cpuinfo.number; i++) {
sigar_cpu_info_t info = cpuinfo.data[i];
assert(info.vendor);
assert(info.model);
#if !(defined(SIGAR_TEST_OS_DARWIN))
/* freebsd doesn't always expose it */
assert(IS_IMPL_INT(info.mhz));
#endif
#if !(defined(SIGAR_TEST_OS_DARWIN) || defined(SIGAR_TEST_OS_SOLARIS) || defined(SIGAR_TEST_OS_HPUX) || defined(_WIN32))
/* freebsd, solaris, hpux nor win32 do expose it */
assert(IS_IMPL_U64(info.cache_size));
#endif
}
sigar_cpu_info_list_destroy(t, &cpuinfo);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_cpu_get(t);
test_sigar_cpu_list_get(t);
test_sigar_cpu_info_get(t);
sigar_close(t);
return err ? -1 : 0;
}

163
tests/t_sigar_fs.c Normal file
View File

@ -0,0 +1,163 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#if defined(_WIN32)
#include <WinError.h>
#endif
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_file_system_list_get) {
sigar_file_system_list_t fslist;
size_t i;
assert(SIGAR_OK == sigar_file_system_list_get(t, &fslist));
assert(fslist.number > 0);
for (i = 0; i < fslist.number; i++) {
sigar_file_system_t fs = fslist.data[i];
sigar_file_system_usage_t fsusage;
sigar_disk_usage_t diskusage;
int ret;
assert(fs.dir_name);
assert(fs.dev_name);
assert(fs.type_name);
assert(fs.sys_type_name);
assert(fs.type);
if (SIGAR_OK != (ret = sigar_file_system_ping(t, &fs))) {
continue;
}
if (SIGAR_OK == (ret = sigar_file_system_usage_get(t, fs.dir_name, &fsusage))) {
assert(IS_IMPL_U64(fsusage.total));
assert(IS_IMPL_U64(fsusage.free));
assert(IS_IMPL_U64(fsusage.used));
assert(IS_IMPL_U64(fsusage.avail));
#if !(defined(SIGAR_TEST_OS_SOLARIS) || defined(_WIN32))
/* solaris 8 */
assert(IS_IMPL_U64(fsusage.files));
#endif
assert(fsusage.use_percent >= 0);
} else {
switch (ret) {
/* track the expected error code */
#if defined(_WIN32)
case ERROR_NOT_READY:
break;
#endif
default:
fprintf(stderr, "sigar_file_system_usage_get(%s) ret = %d (%s)\n",
fs.dir_name,
ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
if (SIGAR_OK == (ret = sigar_disk_usage_get(t, fs.dev_name, &diskusage))) {
assert(IS_IMPL_U64(diskusage.reads));
assert(IS_IMPL_U64(diskusage.writes));
#if !defined(SIGAR_TEST_OS_DARWIN)
/* freebsd */
assert(IS_IMPL_U64(diskusage.read_bytes));
assert(IS_IMPL_U64(diskusage.write_bytes));
assert(IS_IMPL_U64(diskusage.rtime));
assert(IS_IMPL_U64(diskusage.wtime));
#endif
#if !(defined(SIGAR_TEST_OS_LINUX) || defined(SIGAR_TEST_OS_DARWIN) || defined(_WIN32))
/* depending on the Linux version they might not be set */
assert(IS_IMPL_U64(diskusage.qtime));
#endif
#if !(defined(SIGAR_TEST_OS_LINUX) || defined(SIGAR_TEST_OS_DARWIN))
assert(IS_IMPL_U64(diskusage.time));
#endif
#if !defined(SIGAR_TEST_OS_DARWIN)
assert(IS_IMPL_U64(diskusage.snaptime));
#endif
#if 0
/* is -1 if undefined */
assert(diskusage.service_time >= 0);
assert(diskusage.queue >= 0);
#endif
} else {
switch (ret) {
case ESRCH: /* macosx */
case ENXIO: /* solaris */
case ENOENT: /* aix */
case SIGAR_ENOTIMPL: /* hpux */
/* track the expected error code */
fprintf(stderr, "sigar_disk_usage_get(%s) ret = %d (%s)\n",
fs.dev_name,
ret, sigar_strerror(t, ret));
break;
default:
fprintf(stderr, "sigar_disk_usage_get(%s) ret = %d (%s)\n",
fs.dev_name,
ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
}
sigar_file_system_list_destroy(t, &fslist);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_file_system_list_get(t);
sigar_close(t);
return err ? -1 : 0;
}

83
tests/t_sigar_loadavg.c Normal file
View File

@ -0,0 +1,83 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_loadavg_get) {
sigar_loadavg_t loadavg;
int ret;
if (SIGAR_OK == (ret = sigar_loadavg_get(t, &loadavg))) {
assert(loadavg.loadavg[0] >= 0);
assert(loadavg.loadavg[1] >= 0);
assert(loadavg.loadavg[2] >= 0);
} else {
switch (ret) {
/* track the expected error code */
default:
#if !(defined(_WIN32))
/* win32 has no loadavg */
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
#endif
break;
}
}
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_loadavg_get(t);
sigar_close(t);
return 0;
}

76
tests/t_sigar_mem.c Normal file
View File

@ -0,0 +1,76 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_mem_get) {
sigar_mem_t mem;
int status;
assert(SIGAR_OK == (status = sigar_mem_get(t, &mem)));
assert(mem.ram > 0);
assert(mem.total > 0);
assert(mem.used > 0);
assert(mem.free > 0);
assert(mem.actual_free > 0);
assert(mem.actual_used > 0);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_mem_get(t);
sigar_close(t);
return err ? -1 : 0;
}

98
tests/t_sigar_netconn.c Normal file
View File

@ -0,0 +1,98 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_net_connections_get) {
sigar_net_connection_list_t connlist;
size_t i;
int ret;
if (SIGAR_OK == (ret = sigar_net_connection_list_get(t, &connlist,
SIGAR_NETCONN_SERVER | SIGAR_NETCONN_CLIENT |
SIGAR_NETCONN_TCP | SIGAR_NETCONN_UDP))) {
assert(connlist.number > 0);
for (i = 0; i < connlist.number; i++) {
sigar_net_connection_t con = connlist.data[i];
assert(con.local_port < 65536);
assert(con.local_port < 65536);
assert(con.uid >= 0);
assert(con.inode >= 0);
assert(con.type >= 0);
assert(con.state >= 0);
assert(con.send_queue >= 0);
assert(con.receive_queue >= 0);
}
assert(SIGAR_OK == sigar_net_connection_list_destroy(t, &connlist));
} else {
switch (ret) {
case 40013: /* AIX: SIGAR_EPERM_KMEM */
/* track the expected error code */
break;
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_net_connections_get(t);
sigar_close(t);
return err ? -1 : 0;
}

136
tests/t_sigar_netif.c Normal file
View File

@ -0,0 +1,136 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_net_iflist_get) {
sigar_net_interface_list_t net_iflist;
size_t i;
int ret;
assert(SIGAR_OK == sigar_net_interface_list_get(t, &net_iflist));
assert(net_iflist.number > 0);
for (i = 0; i < net_iflist.number; i++) {
char *ifname = net_iflist.data[i];
sigar_net_interface_stat_t ifstat;
sigar_net_interface_config_t config;
if (SIGAR_OK == (ret = sigar_net_interface_stat_get(t, ifname, &ifstat))) {
#if defined(SIGAR_TEST_OS_SOLARIS)
/* on solaris "lo" has no real stats, skip it */
if (0 == strncmp(ifname, "lo", 2)) continue;
#endif
assert(IS_IMPL_U64(ifstat.rx_packets));
assert(IS_IMPL_U64(ifstat.rx_bytes));
assert(IS_IMPL_U64(ifstat.rx_errors));
#if !(defined(SIGAR_TEST_OS_AIX))
assert(IS_IMPL_U64(ifstat.rx_dropped));
#endif
#if !(defined(SIGAR_TEST_OS_DARWIN) || defined(SIGAR_TEST_OS_AIX) || defined(SIGAR_TEST_OS_HPUX) || defined(_WIN32))
assert(IS_IMPL_U64(ifstat.rx_overruns));
assert(IS_IMPL_U64(ifstat.rx_frame));
#endif
assert(IS_IMPL_U64(ifstat.tx_packets));
assert(IS_IMPL_U64(ifstat.tx_bytes));
assert(IS_IMPL_U64(ifstat.tx_errors));
#if !(defined(SIGAR_TEST_OS_HPUX) || defined(_WIN32))
assert(IS_IMPL_U64(ifstat.tx_collisions));
#endif
#if !(defined(SIGAR_TEST_OS_DARWIN) || defined(SIGAR_TEST_OS_AIX))
assert(IS_IMPL_U64(ifstat.tx_dropped));
#endif
#if !(defined(SIGAR_TEST_OS_DARWIN) || defined(SIGAR_TEST_OS_AIX) || defined(SIGAR_TEST_OS_HPUX) || defined(_WIN32))
assert(IS_IMPL_U64(ifstat.tx_overruns));
assert(IS_IMPL_U64(ifstat.tx_carrier));
#endif
#ifndef SIGAR_TEST_OS_LINUX
assert(IS_IMPL_U64(ifstat.speed));
#endif
} else {
switch (ret) {
/* track the expected error code */
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
if (SIGAR_OK == (ret = sigar_net_interface_config_get(t, ifname, &config))) {
assert(config.name);
assert(config.type);
assert(config.description);
assert(IS_IMPL_U64(config.flags));
assert(IS_IMPL_U64(config.mtu));
assert(IS_IMPL_U64(config.metric));
} else {
switch (ret) {
/* track the expected error code */
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
}
assert(SIGAR_OK == sigar_net_interface_list_destroy(t, &net_iflist));
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_net_iflist_get(t);
sigar_close(t);
return err ? -1 : 0;
}

68
tests/t_sigar_pid.c Normal file
View File

@ -0,0 +1,68 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_pid_get) {
sigar_pid_t pid;
pid = sigar_pid_get(t);
assert(pid > 0);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_pid_get(t);
sigar_close(t);
return 0;
}

199
tests/t_sigar_proc.c Normal file
View File

@ -0,0 +1,199 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#if defined(_WIN32)
#include <WinError.h>
#endif
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
#ifdef HAVE_VALGRIND_VALGRIND_H
#include <valgrind/valgrind.h>
#else
#define RUNNING_ON_VALGRIND 0
#endif
TEST(test_sigar_proc_stat_get) {
sigar_proc_stat_t proc_stat;
assert(SIGAR_OK == sigar_proc_stat_get(t, &proc_stat));
assert(proc_stat.total > 0);
return 0;
}
TEST(test_sigar_proc_list_get) {
sigar_proc_list_t proclist;
size_t i;
assert(SIGAR_OK == sigar_proc_list_get(t, &proclist));
assert(proclist.number > 0);
for (i = 0; i < proclist.number; i++) {
sigar_pid_t pid = proclist.data[i];
sigar_proc_mem_t proc_mem;
sigar_proc_time_t proc_time;
sigar_proc_state_t proc_state;
int ret;
if (SIGAR_OK == (ret = sigar_proc_mem_get(t, pid, &proc_mem))) {
assert(IS_IMPL_U64(proc_mem.size));
assert(IS_IMPL_U64(proc_mem.resident));
#if !(defined(SIGAR_TEST_OS_DARWIN) || defined(SIGAR_TEST_OS_SOLARIS) || defined(_WIN32))
/* MacOS X, solaris nor win32 do provide them */
assert(IS_IMPL_U64(proc_mem.share));
assert(IS_IMPL_U64(proc_mem.minor_faults));
assert(IS_IMPL_U64(proc_mem.major_faults));
#endif
#if !(defined(SIGAR_TEST_OS_DARWIN))
/* freebsd */
assert(IS_IMPL_U64(proc_mem.page_faults));
#endif
} else {
switch (ret) {
case ESRCH:
case EPERM:
/* track the expected error code */
break;
#if (defined(SIGAR_TEST_OS_DARWIN))
/* valgrind on macosx doesn't handle this syscall yet */
case ENOSYS:
if (RUNNING_ON_VALGRIND) {
break;
}
#endif
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
if (SIGAR_OK == (ret = sigar_proc_time_get(t, pid, &proc_time))) {
assert(IS_IMPL_U64(proc_time.start_time));
assert(IS_IMPL_U64(proc_time.user));
assert(IS_IMPL_U64(proc_time.sys));
assert(IS_IMPL_U64(proc_time.total));
#if !(defined(SIGAR_TEST_OS_DARWIN))
/* Freebsd */
assert(proc_time.start_time > 0);
#endif
assert(proc_time.user >= 0);
assert(proc_time.sys >= 0);
assert(proc_time.total == proc_time.user + proc_time.sys);
} else {
switch (ret) {
case EPERM:
case ESRCH:
#if (defined(_WIN32))
/* OpenProcess() may return ERROR_ACCESS_DENIED */
case ERROR_ACCESS_DENIED:
#endif
/* track the expected error code */
break;
#if (defined(SIGAR_TEST_OS_DARWIN))
/* valgrind on macosx doesn't handle this syscall yet */
case ENOSYS:
if (RUNNING_ON_VALGRIND) {
break;
}
#endif
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
if (SIGAR_OK == sigar_proc_state_get(t, pid, &proc_state)) {
assert(proc_state.name != NULL);
#if 0
/* all values are fine */
(proc_state.state); /* we should check if the state is one of the announced group */
(proc_state.ppid);
(proc_state.tty);
(proc_state.priority);
(proc_state.nice);
(proc_state.processor);
#endif
#if !(defined(SIGAR_TEST_OS_DARWIN) || defined(SIGAR_TEST_OS_LINUX))
/* MacOS X doesn't provide them, Linux-IA64 neither */
assert(IS_IMPL_U64(proc_state.threads));
#endif
} else {
switch (ret) {
/* track the expected error code */
#if (defined(SIGAR_TEST_OS_DARWIN))
/* valgrind on macosx doesn't handle this syscall yet */
case ENOSYS:
if (RUNNING_ON_VALGRIND) {
break;
}
#endif
default:
fprintf(stderr, "ret = %d (%s)\n", ret, sigar_strerror(t, ret));
assert(ret == SIGAR_OK);
break;
}
}
}
sigar_proc_list_destroy(t, &proclist);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_proc_stat_get(t);
test_sigar_proc_list_get(t);
sigar_close(t);
return err ? -1 : 0;
}

68
tests/t_sigar_reslimit.c Normal file
View File

@ -0,0 +1,68 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_resource_limit_get) {
sigar_resource_limit_t rlimit;
assert(SIGAR_OK == sigar_resource_limit_get(t, &rlimit));
/* we can't check if the limits are reasonable */
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_resource_limit_get(t);
sigar_close(t);
return err ? -1 : 0;
}

68
tests/t_sigar_swap.c Normal file
View File

@ -0,0 +1,68 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_swap_get) {
sigar_swap_t swap;
assert(SIGAR_OK == sigar_swap_get(t, &swap));
assert(swap.total == swap.used + swap.free);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_swap_get(t);
sigar_close(t);
return err ? -1 : 0;
}

77
tests/t_sigar_sysinfo.c Normal file
View File

@ -0,0 +1,77 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_sys_info_get) {
sigar_sys_info_t sysinfo;
assert(SIGAR_OK == sigar_sys_info_get(t, &sysinfo));
assert(sysinfo.name);
assert(sysinfo.version);
assert(sysinfo.arch);
assert(sysinfo.machine);
assert(sysinfo.description);
assert(sysinfo.patch_level);
assert(sysinfo.vendor);
assert(sysinfo.vendor_version);
assert(sysinfo.vendor_name);
assert(sysinfo.vendor_code_name);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_sys_info_get(t);
sigar_close(t);
return err ? -1 : 0;
}

68
tests/t_sigar_uptime.c Normal file
View File

@ -0,0 +1,68 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_uptime_get) {
sigar_uptime_t uptime;
assert(SIGAR_OK == sigar_uptime_get(t, &uptime));
assert(uptime.uptime > 0);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_uptime_get(t);
sigar_close(t);
return 0;
}

71
tests/t_sigar_version.c Normal file
View File

@ -0,0 +1,71 @@
/**
* Copyright (c) 2009, Sun Microsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of Sun Microsystems Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "sigar.h"
#include "sigar_private.h"
#include "sigar_format.h"
#include "sigar_tests.h"
TEST(test_sigar_version_get) {
sigar_version_t *version;
version = sigar_version_get();
assert(version->major >= 0);
assert(version->minor >= 0);
assert(version->maint >= 0);
assert(version->build >= 0);
return 0;
}
int main() {
sigar_t *t;
int err = 0;
assert(SIGAR_OK == sigar_open(&t));
test_sigar_version_get(t);
sigar_close(t);
return 0;
}

25
tests/valgrind-leak-check Normal file
View File

@ -0,0 +1,25 @@
#!/bin/sh
if test x$VALGRIND = x; then
echo "\$VALGRIND isn't set, can't check for mem-leaks"
exit 1
fi
tempfoo=`basename $0`
TEMPFILE=`mktemp -t ${tempfoo}` || exit 1
function rm_tmpfile () {
cat $TEMPFILE
rm -f $TEMPFILE
}
trap rm_tmpfile ERR
set -e
DYLD_LIBRARY_PATH=../src/.libs/ \
$VALGRIND --auto-run-dsymutil=yes --log-file=$TEMPFILE .libs/$1
# make the test fail, if this line isn't found
grep "ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)" $TEMPFILE > /dev/null
grep "definitely lost: 0 bytes in 0 blocks." $TEMPFILE > /dev/null
rm -f $TEMPFILE

53
winbuild.bat Normal file
View File

@ -0,0 +1,53 @@
@rem $%BEGINLICENSE%$
@rem $%ENDLICENSE%$
@echo "Run this from a shell started with the Visual Studio Build environment set!"
@IF DEFINED GENERATOR (GOTO GENERAL_CONF)
@rem Sane default is VS2005, but maybe not what we really want...
@SET GENERATOR="Visual Studio 8 2005"
@GOTO GENERAL_CONF
:GENERAL_CONF
@echo Using %GENERATOR%
@rem MSVC 8 2005 doesn't seem to have devenv.com
@SET VS_CMD="%VS90COMNTOOLS%\..\IDE\VCExpress.exe"
@rem clear the cache if neccesary to let cmake recheck everything
@rem del CMakeCache.txt
:CMAKE
@rem make sure that /D NDEBUG isn't set as it disables all the assert()ions in the testcase
cmake -G %GENERATOR% -DBUILD_NUMBER=%BUILD_NUMBER% -DCMAKE_INSTALL_PREFIX=%INST_PREFIX% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="/MD /Zi /O2 /Ob1" .
@IF NOT %GENERATOR%=="NMake Makefiles" (GOTO VS08BUILD)
nmake
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
cp build-src/sigar.dll build-tests/
nmake test
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
nmake install
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
@GOTO CLEANUP
:VS08BUILD
%VS_CMD% mysql-proxy.sln /Clean
%VS_CMD% mysql-proxy.sln /Build Release
%VS_CMD% mysql-proxy.sln /Build Release /project RUN_TESTS
%VS_CMD% mysql-proxy.sln /Build Release /project PACKAGE
%VS_CMD% mysql-proxy.sln /Build Release /project INSTALL
@GOTO CLEANUP
@rem if you use VS8 to build then VS80COMNTOOLS should be set
@rem "%VS80COMNTOOLS%\..\IDE\devenv.com" mysql-proxy.sln /Clean
@rem "%VS80COMNTOOLS%\..\IDE\devenv.com" mysql-proxy.sln /Build
@rem "%VS80COMNTOOLS%\..\IDE\devenv.com" mysql-proxy.sln /Build Debug /project RUN_TESTS
@rem "%VS80COMNTOOLS%\..\IDE\devenv.com" mysql-proxy.sln /Build Debug /project PACKAGE
@rem "%VS80COMNTOOLS%\..\IDE\devenv.com" mysql-proxy.sln /Build Debug /project INSTALL
:CLEANUP
:END