ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1)
+IF("${TESTS}" STREQUAL "ON")
+ ADD_DEFINITIONS(-DTESTS)
+ENDIF()
+
# Sub modules
ADD_SUBDIRECTORY(src/client-api)
ADD_SUBDIRECTORY(src/dumpsys)
ADD_SUBDIRECTORY(src/agent)
ADD_SUBDIRECTORY(src/service)
-ADD_SUBDIRECTORY(tests)
+IF("${TESTS}" STREQUAL "ON")
+ ADD_SUBDIRECTORY(tests)
+ENDIF()
+%define on_off() %{expand:%%{?with_%{1}:ON}%%{!?with_%{1}:OFF}}
+
+%define _with_tests on
+%bcond_with tests
+
Name: dumpsys
Summary: Dumpsys is a framework to get logs from services and applications.
Version: 0.0.3
%description -n libdumpsys-user-devel
This package provides library and header files.
+%if %{with tests}
%package tests
Summary: Contains scripts for testing dumpsys
%description tests
+%endif
%prep
%setup -q
%cmake . \
-DVERSION=%{version} \
+ -DTESTS=%{on_off tests} \
-DDUMPSYS_SYSTEM_TESTS_PATH=%{_libdir}/dumpsys_system_tests/
make %{?jobs:-j%jobs}
%{_libdir}/libdumpsys-user.so
%{_libdir}/pkgconfig/dumpsys-user.pc
+%if %{with tests}
%files tests
%manifest %{name}.manifest
-%attr(0755,root,root) %{_libdir}/dumpsys_system_tests/utils/test-app
+%defattr(0755,root,root)
+%{_libdir}/dumpsys_system_tests/utils/dumpsys-utils.sh
+%{_libdir}/dumpsys_system_tests/utils/test-app
+%{_libdir}/dumpsys_system_tests/run.sh
+%{_libdir}/dumpsys_system_tests/dumpsys_system/dumpsys_system.sh
+%{_libdir}/dumpsys_system_tests/dumpsys_session/dumpsys_session.sh
+%{_libdir}/dumpsys_system_tests/dumpsys_notfound/dumpsys_notfound.sh
+%endif
ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1)
# Sub modules
-ADD_SUBDIRECTORY(system/util)
+ADD_SUBDIRECTORY(system)
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+
+ADD_SUBDIRECTORY(utils)
+
+macro(CONFIGURE_TEST_FILE dir_name file_name)
+ configure_file("${dir_name}/${file_name}.sh.template" "${dir_name}/${file_name}.sh" @ONLY)
+ INSTALL(DIRECTORY ${dir_name}/ DESTINATION ${DUMPSYS_SYSTEM_TESTS_PATH}/${dir_name} FILES_MATCHING PATTERN "*sh")
+endmacro()
+
+macro(CONFIGURE_TEST test_name)
+ set(FILES_LIST ${test_name})
+ list(APPEND FILES_LIST ${ARGN})
+
+ foreach(test ${FILES_LIST})
+ configure_test_file(${test_name} ${test})
+ endforeach()
+endmacro()
+
+configure_test("dumpsys_system")
+configure_test("dumpsys_session")
+configure_test("dumpsys_notfound")
+
+configure_file("run.sh.template" "run.sh" @ONLY)
+INSTALL(FILES run.sh DESTINATION ${DUMPSYS_SYSTEM_TESTS_PATH})
--- /dev/null
+#!/bin/bash
+
+# Check return code of dumpsys in case of a failure
+
+if [ -z "${DUMPSYS_SYSTEM_TESTS}" ]; then
+ DUMPSYS_SYSTEM_TESTS="@DUMPSYS_SYSTEM_TESTS_PATH@"
+fi
+
+DUMPSYS_SYSTEM_TESTS=/usr/lib/dumpsys_system_tests
+
+. ${DUMPSYS_SYSTEM_TESTS}/utils/dumpsys-utils.sh
+
+APP_NAME=org.tizem.some_non_existent_app
+
+dumpsys ${APP_NAME} -- "${ARG1}" "${ARG2}"
+
+if [ $? -eq 1 ]; then
+ exit_ok
+else
+ fail "return code not equal 1"
+fi
--- /dev/null
+#!/bin/bash
+
+# dumpsys session bus test
+
+if [ -z "${DUMPSYS_SYSTEM_TESTS}" ]; then
+ DUMPSYS_SYSTEM_TESTS="@DUMPSYS_SYSTEM_TESTS_PATH@"
+fi
+
+. ${DUMPSYS_SYSTEM_TESTS}/utils/dumpsys-utils.sh
+
+APP_NAME=apka
+MESSAGE="some message"
+ARG1="-some arg 1"
+ARG2="--some arg 2"
+OUTPUT_FILE=/tmp/dumpsys_output
+APP_PID=0
+
+cleanup()
+{
+ if [[ ${APP_PID} != 0 ]]; then
+ kill ${APP_PID}
+ fi
+
+ rm -f "${OUTPUT_FILE:?}"
+}
+
+trap cleanup 0
+
+su -c "${DUMPSYS_SYSTEM_TESTS}/utils/test-app \"${APP_NAME}\" \"${MESSAGE}\"" -l owner > ${OUTPUT_FILE} &
+APP_PID=${!}
+sleep 1
+RESULT=`dumpsys ${APP_NAME} -- "${ARG1}" "${ARG2}"`
+
+check "${MESSAGE}"
+
+RESULT=`cat ${OUTPUT_FILE}`
+
+check "${ARG1}"
+check "${ARG2}"
+
+exit_ok
--- /dev/null
+#!/bin/bash
+
+# dumpsys system bus test
+
+if [ -z "${DUMPSYS_SYSTEM_TESTS}" ]; then
+ DUMPSYS_SYSTEM_TESTS="@DUMPSYS_SYSTEM_TESTS_PATH@"
+fi
+
+DUMPSYS_SYSTEM_TESTS=/usr/lib/dumpsys_system_tests
+
+. ${DUMPSYS_SYSTEM_TESTS}/utils/dumpsys-utils.sh
+
+APP_NAME=apka
+MESSAGE="some message"
+ARG1="-some arg 1"
+ARG2="--some arg 2"
+OUTPUT_FILE=/tmp/dumpsys_output
+APP_PID=0
+
+cleanup()
+{
+ if [[ ${APP_PID} != 0 ]]; then
+ kill ${APP_PID}
+ fi
+ rm -f "${OUTPUT_FILE:?}"
+}
+
+trap cleanup 0
+
+${DUMPSYS_SYSTEM_TESTS}/utils/test-app "${APP_NAME}" "${MESSAGE}" > ${OUTPUT_FILE} &
+
+sleep 1
+RESULT=`dumpsys ${APP_NAME} -- "${ARG1}" "${ARG2}"`
+APP_PID=${!}
+
+check "${MESSAGE}"
+
+RESULT=`cat ${OUTPUT_FILE}`
+
+check "${ARG1}"
+check "${ARG2}"
+
+exit_ok
--- /dev/null
+#!/bin/bash
+
+if [ -z "${DUMPSYS_SYSTEM_TESTS}" ]; then
+ DUMPSYS_SYSTEM_TESTS="@DUMPSYS_SYSTEM_TESTS_PATH@"
+fi
+
+. ${DUMPSYS_SYSTEM_TESTS}/utils/dumpsys-utils.sh
+
+LOG_FILE=/tmp/dumpsys_system-tests.log
+
+function run_test {
+ RED="\033[0;31m"
+ GREEN="\033[0;32m"
+ YELLOW="\033[1;33m"
+ NORMAL="\033[0m"
+ TEST=${1}
+ echo -ne "${TEST}:\t"
+ echo "===================================" >> ${LOG_FILE}
+ echo "Test ${TEST}:" >> ${LOG_FILE}
+ echo "===================================" >> ${LOG_FILE}
+ ${DUMPSYS_SYSTEM_TESTS}/${TEST}/${TEST}.sh 1>> ${LOG_FILE} 2>&1
+ case $? in
+ ${SUCCESS_CODE})
+ echo -e "${GREEN}SUCCESS${NORMAL}"
+ echo "SUCCESS" >> ${LOG_FILE}
+ ;;
+ ${FAIL_CODE})
+ echo -e "${RED}FAIL${NORMAL}"
+ echo "FAIL" >> ${LOG_FILE}
+ ;;
+ ${SKIP_CODE})
+ echo -e "${YELLOW}SKIP${NORMAL}"
+ echo "SKIP" >> ${LOG_FILE}
+ ;;
+ esac
+}
+
+if [ -f ${LOG_FILE} ]; then
+ rm ${LOG_FILE}
+fi
+
+for DIR in ${DUMPSYS_SYSTEM_TESTS}/*/; do
+ test_name=`basename ${DIR}`
+
+ if [ -x ${DUMPSYS_SYSTEM_TESTS}/${test_name}/${test_name}.sh ]; then
+ run_test ${test_name}
+ fi
+done
capi-base-common
dlog
gio-2.0
- gio-unix-2.0)
+ gio-unix-2.0
+ pkgmgr-info)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/shared)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/client-api)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE -Wno-unused-function -Wno-unused-const-variable")
-ADD_EXECUTABLE(test-app test-app.c ${CMAKE_SOURCE_DIR}/src/client-api/dumpsys-system.c)
+ADD_EXECUTABLE(test-app
+ test-app.c
+ ${CMAKE_SOURCE_DIR}/src/client-api/dumpsys-system.c
+ ${CMAKE_SOURCE_DIR}/src/client-api/dumpsys-user.c)
TARGET_LINK_LIBRARIES(test-app PUBLIC ${dumpsys-system_pkgs_LIBRARIES})
INSTALL(TARGETS test-app DESTINATION ${DUMPSYS_SYSTEM_TESTS_PATH}/utils
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
+INSTALL(FILES dumpsys-utils.sh DESTINATION ${DUMPSYS_SYSTEM_TESTS_PATH}/utils)
--- /dev/null
+#!/bin/bash
+
+SUCCESS_CODE=0
+FAIL_CODE=1
+SKIP_CODE=2
+
+function exit_with_code {
+ echo ${1}
+ exit ${2}
+}
+
+function exit_ok {
+ exit_with_code "SUCCESS" ${SUCCESS_CODE}
+}
+
+function fail {
+ exit_with_code "FAIL: $1" ${FAIL_CODE}
+}
+
+function skip {
+ exit_with_code "SKIP: $1" ${SKIP_CODE}
+}
+
+function check {
+ if [[ ${RESULT} =~ ${1} ]]; then
+ return 0
+ fi
+ fail "not found ${1} in ${RESULT}"
+}
+
+function check_file_exists {
+ if [ ! -f ${1} ]; then
+ fail "file not exists $1"
+ fi
+}
+
+function check_file_not_exists {
+ if [ -f ${1} ]; then
+ fail "file exists $1"
+ fi
+}
}
int *handler;
- int ret = dumpsys_system_register_dump_cb(dump, name, (void**)&handler);
+ int ret;
+ ret = dumpsys_system_register_dump_cb(dump, name, (void**)&handler);
+
if (ret != TIZEN_ERROR_NONE) {
printf("Some error :(. Check dlog.\n");
return EXIT_FAILURE;