You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2016/03/16 04:44:37 UTC
[27/49] bookkeeper git commit: BOOKKEEPER-769: Remove the Hedwig Code
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/m4/ax_doxygen.m4
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/m4/ax_doxygen.m4 b/hedwig-client/src/main/cpp/m4/ax_doxygen.m4
deleted file mode 100644
index 6334fd4..0000000
--- a/hedwig-client/src/main/cpp/m4/ax_doxygen.m4
+++ /dev/null
@@ -1,533 +0,0 @@
-# ===========================================================================
-# http://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# DX_INIT_DOXYGEN(PROJECT-NAME, DOXYFILE-PATH, [OUTPUT-DIR])
-# DX_DOXYGEN_FEATURE(ON|OFF)
-# DX_DOT_FEATURE(ON|OFF)
-# DX_HTML_FEATURE(ON|OFF)
-# DX_CHM_FEATURE(ON|OFF)
-# DX_CHI_FEATURE(ON|OFF)
-# DX_MAN_FEATURE(ON|OFF)
-# DX_RTF_FEATURE(ON|OFF)
-# DX_XML_FEATURE(ON|OFF)
-# DX_PDF_FEATURE(ON|OFF)
-# DX_PS_FEATURE(ON|OFF)
-#
-# DESCRIPTION
-#
-# The DX_*_FEATURE macros control the default setting for the given
-# Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for
-# generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML
-# help (for MS users), 'CHI' for generating a seperate .chi file by the
-# .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate
-# output formats. The environment variable DOXYGEN_PAPER_SIZE may be
-# specified to override the default 'a4wide' paper size.
-#
-# By default, HTML, PDF and PS documentation is generated as this seems to
-# be the most popular and portable combination. MAN pages created by
-# Doxygen are usually problematic, though by picking an appropriate subset
-# and doing some massaging they might be better than nothing. CHM and RTF
-# are specific for MS (note that you can't generate both HTML and CHM at
-# the same time). The XML is rather useless unless you apply specialized
-# post-processing to it.
-#
-# The macros mainly control the default state of the feature. The use can
-# override the default by specifying --enable or --disable. The macros
-# ensure that contradictory flags are not given (e.g.,
-# --enable-doxygen-html and --enable-doxygen-chm,
-# --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each
-# feature will be automatically disabled (with a warning) if the required
-# programs are missing.
-#
-# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN
-# with the following parameters: a one-word name for the project for use
-# as a filename base etc., an optional configuration file name (the
-# default is 'Doxyfile', the same as Doxygen's default), and an optional
-# output directory name (the default is 'doxygen-doc').
-#
-# Automake Support
-#
-# The following is a template aminclude.am file for use with Automake.
-# Make targets and variables values are controlled by the various
-# DX_COND_* conditionals set by autoconf.
-#
-# The provided targets are:
-#
-# doxygen-doc: Generate all doxygen documentation.
-#
-# doxygen-run: Run doxygen, which will generate some of the
-# documentation (HTML, CHM, CHI, MAN, RTF, XML)
-# but will not do the post processing required
-# for the rest of it (PS, PDF, and some MAN).
-#
-# doxygen-man: Rename some doxygen generated man pages.
-#
-# doxygen-ps: Generate doxygen PostScript documentation.
-#
-# doxygen-pdf: Generate doxygen PDF documentation.
-#
-# Note that by default these are not integrated into the automake targets.
-# If doxygen is used to generate man pages, you can achieve this
-# integration by setting man3_MANS to the list of man pages generated and
-# then adding the dependency:
-#
-# $(man3_MANS): doxygen-doc
-#
-# This will cause make to run doxygen and generate all the documentation.
-#
-# The following variable is intended for use in Makefile.am:
-#
-# DX_CLEANFILES = everything to clean.
-#
-# Then add this variable to MOSTLYCLEANFILES.
-#
-# ----- begin aminclude.am -------------------------------------
-#
-# ## --------------------------------- ##
-# ## Format-independent Doxygen rules. ##
-# ## --------------------------------- ##
-#
-# if DX_COND_doc
-#
-# ## ------------------------------- ##
-# ## Rules specific for HTML output. ##
-# ## ------------------------------- ##
-#
-# if DX_COND_html
-#
-# DX_CLEAN_HTML = @DX_DOCDIR@/html
-#
-# endif DX_COND_html
-#
-# ## ------------------------------ ##
-# ## Rules specific for CHM output. ##
-# ## ------------------------------ ##
-#
-# if DX_COND_chm
-#
-# DX_CLEAN_CHM = @DX_DOCDIR@/chm
-#
-# if DX_COND_chi
-#
-# DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
-#
-# endif DX_COND_chi
-#
-# endif DX_COND_chm
-#
-# ## ------------------------------ ##
-# ## Rules specific for MAN output. ##
-# ## ------------------------------ ##
-#
-# if DX_COND_man
-#
-# DX_CLEAN_MAN = @DX_DOCDIR@/man
-#
-# endif DX_COND_man
-#
-# ## ------------------------------ ##
-# ## Rules specific for RTF output. ##
-# ## ------------------------------ ##
-#
-# if DX_COND_rtf
-#
-# DX_CLEAN_RTF = @DX_DOCDIR@/rtf
-#
-# endif DX_COND_rtf
-#
-# ## ------------------------------ ##
-# ## Rules specific for XML output. ##
-# ## ------------------------------ ##
-#
-# if DX_COND_xml
-#
-# DX_CLEAN_XML = @DX_DOCDIR@/xml
-#
-# endif DX_COND_xml
-#
-# ## ----------------------------- ##
-# ## Rules specific for PS output. ##
-# ## ----------------------------- ##
-#
-# if DX_COND_ps
-#
-# DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
-#
-# DX_PS_GOAL = doxygen-ps
-#
-# doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
-#
-# @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
-# cd @DX_DOCDIR@/latex; \
-# rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
-# $(DX_LATEX) refman.tex; \
-# $(MAKEINDEX_PATH) refman.idx; \
-# $(DX_LATEX) refman.tex; \
-# countdown=5; \
-# while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
-# refman.log > /dev/null 2>&1 \
-# && test $$countdown -gt 0; do \
-# $(DX_LATEX) refman.tex; \
-# countdown=`expr $$countdown - 1`; \
-# done; \
-# $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
-#
-# endif DX_COND_ps
-#
-# ## ------------------------------ ##
-# ## Rules specific for PDF output. ##
-# ## ------------------------------ ##
-#
-# if DX_COND_pdf
-#
-# DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
-#
-# DX_PDF_GOAL = doxygen-pdf
-#
-# doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
-#
-# @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
-# cd @DX_DOCDIR@/latex; \
-# rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
-# $(DX_PDFLATEX) refman.tex; \
-# $(DX_MAKEINDEX) refman.idx; \
-# $(DX_PDFLATEX) refman.tex; \
-# countdown=5; \
-# while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
-# refman.log > /dev/null 2>&1 \
-# && test $$countdown -gt 0; do \
-# $(DX_PDFLATEX) refman.tex; \
-# countdown=`expr $$countdown - 1`; \
-# done; \
-# mv refman.pdf ../@PACKAGE@.pdf
-#
-# endif DX_COND_pdf
-#
-# ## ------------------------------------------------- ##
-# ## Rules specific for LaTeX (shared for PS and PDF). ##
-# ## ------------------------------------------------- ##
-#
-# if DX_COND_latex
-#
-# DX_CLEAN_LATEX = @DX_DOCDIR@/latex
-#
-# endif DX_COND_latex
-#
-# .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
-#
-# .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
-#
-# doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
-#
-# doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
-#
-# @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
-# rm -rf @DX_DOCDIR@
-# $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
-#
-# DX_CLEANFILES = \
-# @DX_DOCDIR@/@PACKAGE@.tag \
-# -r \
-# $(DX_CLEAN_HTML) \
-# $(DX_CLEAN_CHM) \
-# $(DX_CLEAN_CHI) \
-# $(DX_CLEAN_MAN) \
-# $(DX_CLEAN_RTF) \
-# $(DX_CLEAN_XML) \
-# $(DX_CLEAN_PS) \
-# $(DX_CLEAN_PDF) \
-# $(DX_CLEAN_LATEX)
-#
-# endif DX_COND_doc
-#
-# ----- end aminclude.am ---------------------------------------
-#
-# LICENSE
-#
-# Copyright (c) 2009 Oren Ben-Kiki <or...@ben-kiki.org>
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved. This file is offered as-is, without any
-# warranty.
-
-#serial 10
-
-## ----------##
-## Defaults. ##
-## ----------##
-
-DX_ENV=""
-AC_DEFUN([DX_FEATURE_doc], ON)
-AC_DEFUN([DX_FEATURE_dot], ON)
-AC_DEFUN([DX_FEATURE_man], OFF)
-AC_DEFUN([DX_FEATURE_html], ON)
-AC_DEFUN([DX_FEATURE_chm], OFF)
-AC_DEFUN([DX_FEATURE_chi], OFF)
-AC_DEFUN([DX_FEATURE_rtf], OFF)
-AC_DEFUN([DX_FEATURE_xml], OFF)
-AC_DEFUN([DX_FEATURE_pdf], ON)
-AC_DEFUN([DX_FEATURE_ps], ON)
-
-## --------------- ##
-## Private macros. ##
-## --------------- ##
-
-# DX_ENV_APPEND(VARIABLE, VALUE)
-# ------------------------------
-# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
-AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
-
-# DX_DIRNAME_EXPR
-# ---------------
-# Expand into a shell expression prints the directory part of a path.
-AC_DEFUN([DX_DIRNAME_EXPR],
- [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
-
-# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
-# -------------------------------------
-# Expands according to the M4 (static) status of the feature.
-AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
-
-# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
-# ----------------------------------
-# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
-AC_DEFUN([DX_REQUIRE_PROG], [
-AC_PATH_TOOL([$1], [$2])
-if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
- AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
- AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0)
-fi
-])
-
-# DX_TEST_FEATURE(FEATURE)
-# ------------------------
-# Expand to a shell expression testing whether the feature is active.
-AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
-
-# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
-# -------------------------------------------------
-# Verify that a required features has the right state before trying to turn on
-# the DX_CURRENT_FEATURE.
-AC_DEFUN([DX_CHECK_DEPEND], [
-test "$DX_FLAG_$1" = "$2" \
-|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
- requires, contradicts) doxygen-DX_CURRENT_FEATURE])
-])
-
-# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
-# ----------------------------------------------------------
-# Turn off the DX_CURRENT_FEATURE if the required feature is off.
-AC_DEFUN([DX_CLEAR_DEPEND], [
-test "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0)
-])
-
-# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
-# CHECK_DEPEND, CLEAR_DEPEND,
-# REQUIRE, DO-IF-ON, DO-IF-OFF)
-# --------------------------------------------
-# Parse the command-line option controlling a feature. CHECK_DEPEND is called
-# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
-# otherwise CLEAR_DEPEND is called to turn off the default state if a required
-# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
-# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
-# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
-AC_DEFUN([DX_ARG_ABLE], [
- AC_DEFUN([DX_CURRENT_FEATURE], [$1])
- AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
- AC_ARG_ENABLE(doxygen-$1,
- [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
- [--enable-doxygen-$1]),
- DX_IF_FEATURE([$1], [don't $2], [$2]))],
- [
-case "$enableval" in
-#(
-y|Y|yes|Yes|YES)
- AC_SUBST([DX_FLAG_$1], 1)
- $3
-;; #(
-n|N|no|No|NO)
- AC_SUBST([DX_FLAG_$1], 0)
-;; #(
-*)
- AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
-;;
-esac
-], [
-AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
-$4
-])
-if DX_TEST_FEATURE([$1]); then
- $5
- :
-fi
-if DX_TEST_FEATURE([$1]); then
- AM_CONDITIONAL(DX_COND_$1, :)
- $6
- :
-else
- AM_CONDITIONAL(DX_COND_$1, false)
- $7
- :
-fi
-])
-
-## -------------- ##
-## Public macros. ##
-## -------------- ##
-
-# DX_XXX_FEATURE(DEFAULT_STATE)
-# -----------------------------
-AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])])
-AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])])
-AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])])
-AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])])
-AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])])
-AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])])
-AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
-AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
-AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])])
-AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])])
-
-# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
-# ---------------------------------------------------------
-# PROJECT also serves as the base name for the documentation files.
-# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
-AC_DEFUN([DX_INIT_DOXYGEN], [
-
-# Files:
-AC_SUBST([DX_PROJECT], [$1])
-AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
-AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
-
-# Environment variables used inside doxygen.cfg:
-DX_ENV_APPEND(SRCDIR, $srcdir)
-DX_ENV_APPEND(PROJECT, $DX_PROJECT)
-DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
-DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
-
-# Doxygen itself:
-DX_ARG_ABLE(doc, [generate any doxygen documentation],
- [],
- [],
- [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
- DX_REQUIRE_PROG([DX_PERL], perl)],
- [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
-
-# Dot for graphics:
-DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [DX_REQUIRE_PROG([DX_DOT], dot)],
- [DX_ENV_APPEND(HAVE_DOT, YES)
- DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
- [DX_ENV_APPEND(HAVE_DOT, NO)])
-
-# Man pages generation:
-DX_ARG_ABLE(man, [generate doxygen manual pages],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [],
- [DX_ENV_APPEND(GENERATE_MAN, YES)],
- [DX_ENV_APPEND(GENERATE_MAN, NO)])
-
-# RTF file generation:
-DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [],
- [DX_ENV_APPEND(GENERATE_RTF, YES)],
- [DX_ENV_APPEND(GENERATE_RTF, NO)])
-
-# XML file generation:
-DX_ARG_ABLE(xml, [generate doxygen XML documentation],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [],
- [DX_ENV_APPEND(GENERATE_XML, YES)],
- [DX_ENV_APPEND(GENERATE_XML, NO)])
-
-# (Compressed) HTML help generation:
-DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [DX_REQUIRE_PROG([DX_HHC], hhc)],
- [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
- DX_ENV_APPEND(GENERATE_HTML, YES)
- DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
- [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
-
-# Seperate CHI file generation.
-DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
- [DX_CHECK_DEPEND(chm, 1)],
- [DX_CLEAR_DEPEND(chm, 1)],
- [],
- [DX_ENV_APPEND(GENERATE_CHI, YES)],
- [DX_ENV_APPEND(GENERATE_CHI, NO)])
-
-# Plain HTML pages generation:
-DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
- [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
- [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
- [],
- [DX_ENV_APPEND(GENERATE_HTML, YES)],
- [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
-
-# PostScript file generation:
-DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [DX_REQUIRE_PROG([DX_LATEX], latex)
- DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
- DX_REQUIRE_PROG([DX_DVIPS], dvips)
- DX_REQUIRE_PROG([DX_EGREP], egrep)])
-
-# PDF file generation:
-DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
- [DX_CHECK_DEPEND(doc, 1)],
- [DX_CLEAR_DEPEND(doc, 1)],
- [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
- DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
- DX_REQUIRE_PROG([DX_EGREP], egrep)])
-
-# LaTeX generation for PS and/or PDF:
-if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
- AM_CONDITIONAL(DX_COND_latex, :)
- DX_ENV_APPEND(GENERATE_LATEX, YES)
-else
- AM_CONDITIONAL(DX_COND_latex, false)
- DX_ENV_APPEND(GENERATE_LATEX, NO)
-fi
-
-# Paper size for PS and/or PDF:
-AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
- [a4wide (default), a4, letter, legal or executive])
-case "$DOXYGEN_PAPER_SIZE" in
-#(
-"")
- AC_SUBST(DOXYGEN_PAPER_SIZE, "")
-;; #(
-a4wide|a4|letter|legal|executive)
- DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
-;; #(
-*)
- AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
-;;
-esac
-
-#For debugging:
-#echo DX_FLAG_doc=$DX_FLAG_doc
-#echo DX_FLAG_dot=$DX_FLAG_dot
-#echo DX_FLAG_man=$DX_FLAG_man
-#echo DX_FLAG_html=$DX_FLAG_html
-#echo DX_FLAG_chm=$DX_FLAG_chm
-#echo DX_FLAG_chi=$DX_FLAG_chi
-#echo DX_FLAG_rtf=$DX_FLAG_rtf
-#echo DX_FLAG_xml=$DX_FLAG_xml
-#echo DX_FLAG_pdf=$DX_FLAG_pdf
-#echo DX_FLAG_ps=$DX_FLAG_ps
-#echo DX_ENV=$DX_ENV
-])
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/m4/gtest.m4
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/m4/gtest.m4 b/hedwig-client/src/main/cpp/m4/gtest.m4
deleted file mode 100644
index 648f43c..0000000
--- a/hedwig-client/src/main/cpp/m4/gtest.m4
+++ /dev/null
@@ -1,74 +0,0 @@
-dnl GTEST_LIB_CHECK([minimum version [,
-dnl action if found [,action if not found]]])
-dnl
-dnl Check for the presence of the Google Test library, optionally at a minimum
-dnl version, and indicate a viable version with the HAVE_GTEST flag. It defines
-dnl standard variables for substitution including GTEST_CPPFLAGS,
-dnl GTEST_CXXFLAGS, GTEST_LDFLAGS, and GTEST_LIBS. It also defines
-dnl GTEST_VERSION as the version of Google Test found. Finally, it provides
-dnl optional custom action slots in the event GTEST is found or not.
-AC_DEFUN([GTEST_LIB_CHECK],
-[
-dnl Provide a flag to enable or disable Google Test usage.
-AC_ARG_ENABLE([gtest],
- [AS_HELP_STRING([--enable-gtest],
- [Enable tests using the Google C++ Testing Framework.
- (Default is disabled.)])],
- [],
- [enable_gtest=no])
-AC_ARG_VAR([GTEST_CONFIG],
- [The exact path of Google Test's 'gtest-config' script.])
-AC_ARG_VAR([GTEST_CPPFLAGS],
- [C-like preprocessor flags for Google Test.])
-AC_ARG_VAR([GTEST_CXXFLAGS],
- [C++ compile flags for Google Test.])
-AC_ARG_VAR([GTEST_LDFLAGS],
- [Linker path and option flags for Google Test.])
-AC_ARG_VAR([GTEST_LIBS],
- [Library linking flags for Google Test.])
-AC_ARG_VAR([GTEST_VERSION],
- [The version of Google Test available.])
-HAVE_GTEST="no"
-AS_IF([test "x${enable_gtest}" != "xno"],
- [AC_MSG_CHECKING([for 'gtest-config'])
- AS_IF([test "x${enable_gtest}" != "xyes"],
- [AS_IF([test -x "${enable_gtest}/scripts/gtest-config"],
- [GTEST_CONFIG="${enable_gtest}/scripts/gtest-config"],
- [GTEST_CONFIG="${enable_gtest}/bin/gtest-config"])
- AS_IF([test -x "${GTEST_CONFIG}"], [],
- [AC_MSG_RESULT([no])
- AC_MSG_ERROR([dnl
-Unable to locate either a built or installed Google Test.
-The specific location '${enable_gtest}' was provided for a built or installed
-Google Test, but no 'gtest-config' script could be found at this location.])
- ])],
- [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
- AS_IF([test -x "${GTEST_CONFIG}"],
- [AC_MSG_RESULT([${GTEST_CONFIG}])
- m4_ifval([$1],
- [_gtest_min_version="--min-version=$1"
- AC_MSG_CHECKING([for Google Test at least version >= $1])],
- [_gtest_min_version="--min-version=0"
- AC_MSG_CHECKING([for Google Test])])
- AS_IF([${GTEST_CONFIG} ${_gtest_min_version}],
- [AC_MSG_RESULT([yes])
- HAVE_GTEST='yes'],
- [AC_MSG_RESULT([no])])],
- [AC_MSG_RESULT([no])])
- AS_IF([test "x${HAVE_GTEST}" = "xyes"],
- [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
- GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
- GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
- GTEST_LIBS=`${GTEST_CONFIG} --libs`
- GTEST_VERSION=`${GTEST_CONFIG} --version`
- AC_DEFINE([HAVE_GTEST],[1],[Defined when Google Test is available.])],
- [AS_IF([test "x${enable_gtest}" = "xyes"],
- [AC_MSG_ERROR([dnl
-Google Test was enabled, but no viable version could be found.])
- ])])])
-AC_SUBST([HAVE_GTEST])
-AM_CONDITIONAL([HAVE_GTEST],[test "x$HAVE_GTEST" = "xyes"])
-AS_IF([test "x$HAVE_GTEST" = "xyes"],
- [m4_ifval([$2], [$2])],
- [m4_ifval([$3], [$3])])
-])
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/scripts/log4cxx.conf
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/scripts/log4cxx.conf b/hedwig-client/src/main/cpp/scripts/log4cxx.conf
deleted file mode 100644
index 1917d7e..0000000
--- a/hedwig-client/src/main/cpp/scripts/log4cxx.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-#
-
-log4j.appender.rootAppender=org.apache.log4j.ConsoleAppender
-log4j.appender.rootAppender.layout=org.apache.log4j.BasicLayout
-
-log4j.appender.hedwig=org.apache.log4j.RollingFileAppender
-#log4j.appender.hedwig=org.apache.log4j.ConsoleAppender
-log4j.appender.hedwig.fileName=./testLog.log
-log4j.appender.hedwig.layout=org.apache.log4j.PatternLayout
-log4j.appender.hedwig.layout.ConversionPattern=[%d{%H:%M:%S.%l}] %t %p %c - %m%n
-
-log4j.appender.hedwigtest=org.apache.log4j.RollingFileAppender
-#log4j.appender.hedwigtest=org.apache.log4j.ConsoleAppender
-log4j.appender.hedwigtest.fileName=./testLog.log
-log4j.appender.hedwigtest.layout=org.apache.log4j.PatternLayout
-log4j.appender.hedwigtest.layout.ConversionPattern=[%d{%H:%M:%S.%l}] %t %p %c - %m%n
-
-# category
-log4j.category.hedwig=DEBUG, hedwig
-log4j.category.hedwigtest=DEBUG, hedwigtest
-
-log4j.rootCategory=OFF
-
-#log4j.category.hedwig.channel=ERROR
-
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/scripts/network-delays.sh
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/scripts/network-delays.sh b/hedwig-client/src/main/cpp/scripts/network-delays.sh
deleted file mode 100644
index 83fd132..0000000
--- a/hedwig-client/src/main/cpp/scripts/network-delays.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-setup_delays() {
-
- UNAME=`uname -s`
-
- echo "Setting delay to ${1}ms"
- case "$UNAME" in
- Darwin|FreeBSD)
- sudo ipfw pipe 1 config delay ${1}ms
- sudo ipfw add pipe 1 dst-port 4081
- sudo ipfw add pipe 1 src-port 4081
- sudo ipfw add pipe 1 dst-port 4082
- sudo ipfw add pipe 1 src-port 4082
- sudo ipfw add pipe 1 dst-port 4083
- sudo ipfw add pipe 1 src-port 4083
- ;;
- Linux)
- sudo tc qdisc add dev lo root handle 1: prio
- sudo tc qdisc add dev lo parent 1:3 handle 30: netem delay ${1}ms
- sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip dport 4081 0xffff flowid 1:3
- sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip dport 4081 0xffff flowid 1:3
- sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport 4082 0xffff flowid 1:3
- sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport 4082 0xffff flowid 1:3
- sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport 4083 0xffff flowid 1:3
- sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport 4083 0xffff flowid 1:3
- ;;
- *)
- echo "Unknown system type, $UNAME, only Linux, Darwin & FreeBSD supported"
- ;;
- esac
-}
-
-clear_delays() {
- UNAME=`uname -s`
-
- case "$UNAME" in
- Darwin|FreeBSD)
- echo "Flushing ipfw"
- sudo ipfw -f -q flush
- ;;
- Linux)
- echo "Clearing delay"
- sudo tc qdisc del dev lo root
- ;;
- *)
- echo "Unknown system type, $UNAME, only Linux, Darwin & FreeBSD supported"
- ;;
- esac
-}
-
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/scripts/server-control.sh
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/scripts/server-control.sh b/hedwig-client/src/main/cpp/scripts/server-control.sh
deleted file mode 100644
index cd8563a..0000000
--- a/hedwig-client/src/main/cpp/scripts/server-control.sh
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-BASE=../../../../../
-BKSCRIPT=$BASE/bookkeeper-server/bin/bookkeeper
-HWSCRIPT=$BASE/hedwig-server/bin/hedwig
-ZKCLIENT=org.apache.zookeeper.ZooKeeperMain
-
-check_bk_down() {
- NUM_UP=100
- for i in 0 1 2 3 4 5 6 7 8 9; do
- NUM_UP=`$BKSCRIPT $ZKCLIENT ls /ledgers/available 2> /dev/null | awk 'BEGIN{SERVERS=0} /^\[/ { gsub(/[,\[\]]/, ""); SERVERS=NF} END{ print SERVERS }'`
- if [ $NUM_UP == 0 ]; then
- break;
- fi
- sleep 1
- done
-
- if [ $NUM_UP != 0 ]; then
- echo "Warning: Couldn't stop all bookies"
- exit 1;
- fi
-}
-
-check_bk_up() {
- NUM_BOOKIES=$1
- NUM_UP=0
- for i in 0 1 2 3 4 5 6 7 8 9; do
- NUM_UP=`$BKSCRIPT $ZKCLIENT ls /ledgers/available 2> /dev/null | awk 'BEGIN{SERVERS=0} /^\[/ { gsub(/[,\[\]]/, ""); SERVERS=NF} END{ print SERVERS }'`
- if [ $NUM_UP == $NUM_BOOKIES ]; then
- break;
- fi
- sleep 1
- done
-
- if [ $NUM_UP != $NUM_BOOKIES ]; then
- echo "Couldn't start bookkeeper"
- exit 1;
- fi
-}
-
-check_hw_down() {
- REGION=$1
- NUM_UP=100
- for i in 0 1 2 3 4 5 6 7 8 9; do
- NUM_UP=`$BKSCRIPT $ZKCLIENT ls /hedwig/$REGION/hosts 2> /dev/null | awk 'BEGIN{SERVERS=0} /^\[/ { gsub(/[,\[\]]/, ""); SERVERS=NF} END{ print SERVERS }'`
- if [ $NUM_UP == 0 ]; then
- break;
- fi
- sleep 1
- done
-
- if [ $NUM_UP != 0 ]; then
- echo "Warning: Couldn't stop all hedwig servers"
- exit 1;
- fi
-}
-
-check_hw_up() {
- REGION=$1
- NUM_SERVERS=$2
- NUM_UP=0
- for i in 0 1 2 3 4 5 6 7 8 9; do
- NUM_UP=`$BKSCRIPT $ZKCLIENT ls /hedwig/$REGION/hosts 2> /dev/null | awk 'BEGIN{SERVERS=0} /^\[/ { gsub(/[,\[\]]/, ""); SERVERS=NF} END{ print SERVERS }'`
- if [ $NUM_UP == $NUM_SERVERS ]; then
- break;
- fi
- sleep 1
- done
-
- if [ $NUM_UP != $NUM_SERVERS ]; then
- echo "Couldn't start hedwig"
- exit 1;
- fi
-}
-
-start_hw_server () {
- REGION=$1
- COUNT=$2
- PORT=$((4080+$COUNT))
- SSL_PORT=$((9876+$COUNT))
-
- export HEDWIG_LOG_CONF=/tmp/hw-log4j-$COUNT.properties
- cat > $HEDWIG_LOG_CONF <<EOF
-log4j.rootLogger=INFO, ROLLINGFILE
-#
-# Add ROLLINGFILE to rootLogger to get log file output
-# Log DEBUG level and above messages to a log file
-log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.ROLLINGFILE.Threshold=DEBUG
-log4j.appender.ROLLINGFILE.File=/tmp/hedwig-server-$COUNT.log
-log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
-log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n
-# uncomment the next line to limit number of backup files
-#log4j.appender.ROLLINGFILE.MaxBackupIndex=10
-log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
-log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n
-log4j.logger.org.apache.zookeeper=OFF,ROLLINGFILE
-log4j.logger.org.apache.hedwig.zookeeper=OFF,ROLLINGFILE
-EOF
-
- export HEDWIG_SERVER_CONF=/tmp/hw-server-$COUNT.conf
- cat > $HEDWIG_SERVER_CONF <<EOF
-zk_host=localhost:2181
-# The number of milliseconds of each tick in ZooKeeper.
-zk_timeout=2000
-# The port at which the clients will connect.
-server_port=$PORT
-# The SSL port at which the clients will connect (only if SSL is enabled).
-ssl_server_port=$SSL_PORT
-# Flag indicating if the server should also operate in SSL mode.
-ssl_enabled=true
-cert_path=$PWD/../../../../../hedwig-server/src/main/resources/server.p12
-password=eUySvp2phM2Wk
-region=$REGION
-EOF
- $HWSCRIPT server 2>&1 > hwoutput.$COUNT.log &
- echo $! > hwprocess.$COUNT.pid
-}
-
-start_cluster() {
- if [ -e bkprocess.pid ] || [ `ls hwprocess.*.pid 2> /dev/null | wc -l` != 0 ]; then
- stop_cluster;
- fi
-
- $BKSCRIPT localbookie 3 2>&1 > bkoutput.log &
- echo $! > bkprocess.pid
- check_bk_up 3
-
- for i in 1 2 3; do
- start_hw_server CppUnitTest $i
- done
- check_hw_up CppUnitTest 3
-}
-
-stop_cluster() {
- for i in hwprocess.*.pid; do
- if [ ! -e $i ]; then
- continue;
- fi
- kill `cat $i`;
- rm $i;
- done
- check_hw_down
-
- if [ ! -e bkprocess.pid ]; then
- return;
- fi
-
- kill `cat bkprocess.pid`
- rm bkprocess.pid
-
- check_bk_down
-}
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/scripts/tester.sh
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/scripts/tester.sh b/hedwig-client/src/main/cpp/scripts/tester.sh
deleted file mode 100644
index 85e1f74..0000000
--- a/hedwig-client/src/main/cpp/scripts/tester.sh
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-cd `dirname $0`;
-
-export LOG4CXX_CONF=`pwd`/log4cxx.conf
-
-source network-delays.sh
-source server-control.sh
-
-runtest() {
- if [ "z$HEDWIG_NETWORK_DELAY" != "z" ]; then
- setup_delays $HEDWIG_NETWORK_DELAY
- fi
-
- stop_cluster;
- start_cluster;
-
- if [ "z$2" != "z" ]; then
- ../test/hedwigtest -s true -m true
- else
- if [ "z$1" == "zssl" ]; then
- ../test/hedwigtest -s true
- elif [ "z$1" == "zmultiplex" ]; then
- ../test/hedwigtest -m true
- else
- ../test/hedwigtest
- fi
- fi
-
- RESULT=$?
- stop_cluster;
-
- if [ "z$HEDWIG_NETWORK_DELAY" != "z" ]; then
- clear_delays
- else
- cat <<EOF
-
-The environment variable HEDWIG_NETWORK_DELAY is not set, so the tests were run directly
-with a localhost server. This isn't quite realistic as usually there will be some delay between
-the client and the hedwig server. Set HEDWIG_NETWORK_DELAY to the number of milliseconds you want
-to delay the packets between the server and client.
-
- $ export HEDWIG_NETWORK_DELAY=500
-
-Requires root privileges.
-
-WARNING!!! This will modify your traffic shaping and firewall rules. If you do run with delays,
-check your firewall rules afterwards.
-
-EOF
- fi
-
- exit $RESULT
-}
-
-runall() {
- runtest;
- runtest ssl;
- runtest multiplex;
- runtest ssl multiplex;
-}
-
-singletest() {
- if [ "z$HEDWIG_NETWORK_DELAY" != "z" ]; then
- setup_delays $HEDWIG_NETWORK_DELAY
- fi
-
- stop_cluster;
- start_cluster;
-
- ../test/hedwigtest --gtest_filter=$1
- RESULT=$?
- stop_cluster;
-
- if [ "z$HEDWIG_NETWORK_DELAY" != "z" ]; then
- clear_delays
- else
- cat <<EOF
-
-The environment variable HEDWIG_NETWORK_DELAY is not set, so the tests were run directly
-with a localhost server. This isn't quite realistic as usually there will be some delay between
-the client and the hedwig server. Set HEDWIG_NETWORK_DELAY to the number of milliseconds you want
-to delay the packets between the server and client.
-
- $ export HEDWIG_NETWORK_DELAY=500
-
-Requires root privileges.
-
-WARNING!!! This will modify your traffic shaping and firewall rules. If you do run with delays,
-check your firewall rules afterwards.
-
-EOF
- fi
-
- exit $RESULT
-}
-
-case "$1" in
- start-cluster)
- start_cluster
- ;;
- stop-cluster)
- stop_cluster
- ;;
- simple-test)
- runtest
- ;;
- ssl-simple-test)
- runtest ssl
- ;;
- multiplex-test)
- runtest multiplex
- ;;
- ssl-multiplex-test)
- runtest ssl multiplex
- ;;
- setup-delays)
- setup_delays $2
- ;;
- clear-delays)
- clear_delays
- ;;
- all)
- runall
- ;;
- singletest)
- singletest $2
- ;;
- *)
- cat <<EOF
-Usage: tester.sh [command]
-
-tester.sh all
- Run through the tests (both simple and ssl), setting up and cleaning up all prerequisites.
-
-tester.sh simple-test
- Run through the tests (simple mode), setting up and cleaning up all prerequisites.
-
-tester.sh ssl-test
- Run through the tests (ssl mode), setting up and cleaning up all prerequisites.
-
-tester.sh singletest <name>
- Run a single test
-
-tester.sh start-cluster
- Start a hedwig cluster
-
-tester.sh stop-cluster
- Stops a hedwig cluster
-
-tester.sh setup-delays <delay>
- Set the millisecond delay for accessing the hedwig servers for the tests.
-
-tester.sh clear-delays
- Clear the delay for accessing the hedwig servers.
-EOF
- ;;
-esac
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/test/Makefile.am
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/test/Makefile.am b/hedwig-client/src/main/cpp/test/Makefile.am
deleted file mode 100644
index d55100c..0000000
--- a/hedwig-client/src/main/cpp/test/Makefile.am
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-if HAVE_GTEST
-bin_PROGRAMS = hedwigtest
-hedwigtest_SOURCES = main.cpp utiltest.cpp publishtest.cpp subscribetest.cpp pubsubtest.cpp messageboundtest.cpp messagefiltertest.cpp throttledeliverytest.cpp multiplextest.cpp
-hedwigtest_CPPFLAGS = -I$(top_srcdir)/inc $(DEPS_CFLAGS) $(GTEST_CPPFLAGS) $(BOOST_CPPFLAGS)
-hedwigtest_CXXFLAGS = $(GTEST_CXXFLAGS)
-hedwigtest_LDADD = $(DEPS_LIBS) $(GTEST_LIBS) -L$(top_builddir)/lib -lhedwig01
-hedwigtest_LDFLAGS = -no-undefined $(BOOST_ASIO_LIB) $(BOOST_LDFLAGS) $(BOOST_THREAD_LIB) $(GTEST_LDFLAGS)
-
-check: hedwigtest
- bash ../scripts/tester.sh all
-
-simplesslcheck: hedwigtest
- bash ../scripts/tester.sh ssl-simple-test
-
-simplecheck: hedwigtest
- bash ../scripts/tester.sh simple-test
-
-multiplexsslcheck: hedwigtest
- bash ../scripts/tester.sh ssl-multiplex-test
-
-multiplexcheck: hedwigtest
- bash ../scripts/tester.sh multiplex-test
-
-else
-check:
- @echo "\n\nYou haven't configured with gtest. Run the ./configure command with --enable-gtest=<path_to_gtest>"
- @echo "i.e. ./configure --enable-gtest=/home/user/src/gtest-1.6.0"
- @echo "See the README for more info\n\n\b"
-endif
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/test/main.cpp
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/test/main.cpp b/hedwig-client/src/main/cpp/test/main.cpp
deleted file mode 100644
index 7c08c97..0000000
--- a/hedwig-client/src/main/cpp/test/main.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "../lib/channel.h"
-#include "../lib/util.h"
-#include <hedwig/protocol.h>
-#include <hedwig/callback.h>
-#include <iostream>
-
-#include <log4cxx/logger.h>
-#include <log4cxx/basicconfigurator.h>
-#include <log4cxx/propertyconfigurator.h>
-#include <log4cxx/helpers/exception.h>
-
-#include "util.h"
-
-#include "gtest/gtest.h"
-
-bool TestServerConfiguration::isSSL = false;
-std::string TestServerConfiguration::certFile = "";
-bool TestServerConfiguration::multiplexing = false;
-
-int main( int argc, char **argv)
-{
- try {
- if (getenv("LOG4CXX_CONF") == NULL) {
- std::cerr << "Set LOG4CXX_CONF in your environment to get logging." << std::endl;
- log4cxx::BasicConfigurator::configure();
- } else {
- log4cxx::PropertyConfigurator::configure(getenv("LOG4CXX_CONF"));
- }
- } catch (std::exception &e) {
- std::cerr << "exception caught while configuring log4cpp via : " << e.what() << std::endl;
- } catch (...) {
- std::cerr << "unknown exception while configuring log4cpp vi'." << std::endl;
- }
-
- // Enable SSL for testing
- int opt;
- while((opt = getopt(argc,argv,"s:c:m:")) > 0) {
- switch(opt) {
- case 's':
- if (std::string(optarg) == "true") {
- std::cout << "run in ssl mode...." << std::endl;
- TestServerConfiguration::isSSL = true;
- } else {
- TestServerConfiguration::isSSL = false;
- }
- break;
- case 'm':
- if (std::string(optarg) == "true") {
- std::cout << "run in multiplexing mode ..." << std::endl;
- TestServerConfiguration::multiplexing = true;
- } else {
- TestServerConfiguration::multiplexing = false;
- }
- break;
- case 'c':
- std::cout << "use cert file :" << optarg << std::endl;
- TestServerConfiguration::certFile = std::string(optarg);
- break;
- }//switch
- }//while
-
- ::testing::InitGoogleTest(&argc, argv);
- int ret = RUN_ALL_TESTS();
- google::protobuf::ShutdownProtobufLibrary();
-
- return ret;
-}
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/test/messageboundtest.cpp
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/test/messageboundtest.cpp b/hedwig-client/src/main/cpp/test/messageboundtest.cpp
deleted file mode 100644
index 9315e72..0000000
--- a/hedwig-client/src/main/cpp/test/messageboundtest.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gtest/gtest.h"
-
-#include "../lib/clientimpl.h"
-#include <hedwig/exceptions.h>
-#include <hedwig/callback.h>
-#include <stdexcept>
-#include <pthread.h>
-
-#include <log4cxx/logger.h>
-
-#include "util.h"
-
-static log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("hedwig."__FILE__));
-
-class MessageBoundConfiguration : public TestServerConfiguration {
-public:
- MessageBoundConfiguration() : TestServerConfiguration() {}
-
- virtual int getInt(const std::string& key, int defaultVal) const {
- if (key == Configuration::SUBSCRIPTION_MESSAGE_BOUND) {
- return 5;
- }
- return TestServerConfiguration::getInt(key, defaultVal);
- }
-};
-
-class MessageBoundOrderCheckingMessageHandlerCallback : public Hedwig::MessageHandlerCallback {
-public:
- MessageBoundOrderCheckingMessageHandlerCallback(const int nextExpectedMsg)
- : nextExpectedMsg(nextExpectedMsg) {
- }
-
- virtual void consume(const std::string& topic, const std::string& subscriberId,
- const Hedwig::Message& msg, Hedwig::OperationCallbackPtr& callback) {
- boost::lock_guard<boost::mutex> lock(mutex);
-
- int thisMsg = atoi(msg.body().c_str());
- LOG4CXX_DEBUG(logger, "received message " << thisMsg);
- if (thisMsg == nextExpectedMsg) {
- nextExpectedMsg++;
- }
- // checking msgId
- callback->operationComplete();
- }
-
- int nextExpected() {
- return nextExpectedMsg;
- }
-
-protected:
- boost::mutex mutex;
- int nextExpectedMsg;
-};
-
-void sendXExpectLastY(Hedwig::Publisher& pub, Hedwig::Subscriber& sub, const std::string& topic,
- const std::string& subid, int X, int Y) {
- for (int i = 0; i < X;) {
- std::stringstream oss;
- oss << i;
- try {
- pub.publish(topic, oss.str());
- ++i;
- } catch (std::exception &e) {
- LOG4CXX_WARN(logger, "Exception when publishing message " << i << " : "
- << e.what());
- }
- }
-
- sub.subscribe(topic, subid, Hedwig::SubscribeRequest::ATTACH);
-
- MessageBoundOrderCheckingMessageHandlerCallback* cb =
- new MessageBoundOrderCheckingMessageHandlerCallback(X - Y);
-
- Hedwig::MessageHandlerCallbackPtr handler(cb);
- sub.startDelivery(topic, subid, handler);
-
- for (int i = 0; i < 100; i++) {
- if (cb->nextExpected() == X) {
- break;
- } else {
- sleep(1);
- }
- }
- ASSERT_TRUE(cb->nextExpected() == X);
-
- sub.stopDelivery(topic, subid);
- sub.closeSubscription(topic, subid);
-}
-
-TEST(MessageBoundTest, testMessageBound) {
- Hedwig::Configuration* conf = new MessageBoundConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- std::string topic = "testMessageBound";
- std::string subid = "testSubId";
- sub.subscribe(topic, subid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- sub.closeSubscription(topic, subid);
-
- sendXExpectLastY(pub, sub, topic, subid, 100, 5);
-}
-
-TEST(MessageBoundTest, testMultipleSubscribers) {
- Hedwig::Configuration* conf = new TestServerConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- Hedwig::SubscriptionOptions options5;
- options5.set_messagebound(5);
- options5.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- Hedwig::SubscriptionOptions options20;
- options20.set_messagebound(20);
- options20.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- Hedwig::SubscriptionOptions optionsUnlimited;
- optionsUnlimited.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
-
- std::string topic = "testMultipleSubscribers";
- std::string subid5 = "testSubId5";
- std::string subid20 = "testSubId20";
- std::string subidUnlimited = "testSubIdUnlimited";
-
- sub.subscribe(topic, subid5, options5);
- sub.closeSubscription(topic, subid5);
-
- sendXExpectLastY(pub, sub, topic, subid5, 1000, 5);
-
- sub.subscribe(topic, subid20, options20);
- sub.closeSubscription(topic, subid20);
- sendXExpectLastY(pub, sub, topic, subid20, 1000, 20);
-
- sub.subscribe(topic, subidUnlimited, optionsUnlimited);
- sub.closeSubscription(topic, subidUnlimited);
-
- sendXExpectLastY(pub, sub, topic, subidUnlimited, 1000, 1000);
- sub.unsubscribe(topic, subidUnlimited);
-
- sendXExpectLastY(pub, sub, topic, subid20, 1000, 20);
- sub.unsubscribe(topic, subid20);
-
- sendXExpectLastY(pub, sub, topic, subid5, 1000, 5);
- sub.unsubscribe(topic, subid5);
-}
-
-TEST(MessageBoundTest, testUpdateMessageBound) {
- Hedwig::Configuration* conf = new TestServerConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- Hedwig::SubscriptionOptions options5;
- options5.set_messagebound(5);
- options5.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- Hedwig::SubscriptionOptions options20;
- options20.set_messagebound(20);
- options20.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- Hedwig::SubscriptionOptions options10;
- options10.set_messagebound(10);
- options10.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
-
- std::string topic = "testUpdateMessageBound";
- std::string subid = "updateSubId";
-
- sub.subscribe(topic, subid, options5);
- sub.closeSubscription(topic, subid);
- sendXExpectLastY(pub, sub, topic, subid, 50, 5);
-
- // update bound to 20
- sub.subscribe(topic, subid, options20);
- sub.closeSubscription(topic, subid);
- sendXExpectLastY(pub, sub, topic, subid, 50, 20);
-
- // update bound to 10
- sub.subscribe(topic, subid, options10);
- sub.closeSubscription(topic, subid);
- sendXExpectLastY(pub, sub, topic, subid, 50, 10);
-
- // message bound is not provided, no update
- sub.subscribe(topic, subid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- sub.closeSubscription(topic, subid);
- sendXExpectLastY(pub, sub, topic, subid, 50, 10);
-}
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/test/messagefiltertest.cpp
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/test/messagefiltertest.cpp b/hedwig-client/src/main/cpp/test/messagefiltertest.cpp
deleted file mode 100644
index 907d95d..0000000
--- a/hedwig-client/src/main/cpp/test/messagefiltertest.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gtest/gtest.h"
-
-#include "../lib/clientimpl.h"
-#include <hedwig/exceptions.h>
-#include <hedwig/callback.h>
-#include <stdexcept>
-#include <pthread.h>
-
-#include <log4cxx/logger.h>
-
-#include "util.h"
-
-static log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("hedwig."__FILE__));
-
-class MessageFilterConfiguration : public TestServerConfiguration {
-public:
- MessageFilterConfiguration() : TestServerConfiguration() {}
-
- virtual bool getBool(const std::string& key, bool defaultVal) const {
- if (key == Configuration::SUBSCRIBER_AUTOCONSUME) {
- return false;
- } else {
- return TestServerConfiguration::getBool(key, defaultVal);
- }
- }
-};
-
-class ModMessageFilter : public Hedwig::ClientMessageFilter {
-public:
- ModMessageFilter() : mod(0) {
- }
-
- virtual void setSubscriptionPreferences(const std::string& topic, const std::string& subscriberId,
- const Hedwig::SubscriptionPreferencesPtr& preferences) {
- if (!preferences->has_options()) {
- return;
- }
-
- const Hedwig::Map& userOptions = preferences->options();
- int numOpts = userOptions.entries_size();
- for (int i=0; i<numOpts; i++) {
- const Hedwig::Map_Entry& opt = userOptions.entries(i);
- const std::string& key = opt.key();
- if ("MOD" != key) {
- continue;
- }
- const std::string& value = opt.value();
- mod = atoi(value.c_str());
- break;
- }
- return;
- }
- virtual bool testMessage(const Hedwig::Message& message) {
- int value = atoi(message.body().c_str());
- return 0 == value % mod;
- }
-private:
- int mod;
-};
-
-class GapCheckingMessageHandlerCallback : public Hedwig::MessageHandlerCallback {
-public:
- GapCheckingMessageHandlerCallback(Hedwig::Subscriber& sub,
- const int start, const int nextValue,
- const int gap, bool doConsume)
- : sub(sub), start(start), nextValue(nextValue), gap(gap), doConsume(doConsume) {
- }
-
- virtual void consume(const std::string& topic, const std::string& subscriberId,
- const Hedwig::Message& msg, Hedwig::OperationCallbackPtr& callback) {
- boost::lock_guard<boost::mutex> lock(mutex);
-
- int value = atoi(msg.body().c_str());
- if(value > start) {
- LOG4CXX_DEBUG(logger, "received message " << value);
- if (value == nextValue) {
- nextValue += gap;
- }
- }
- callback->operationComplete();
- if (doConsume) {
- sub.consume(topic, subscriberId, msg.msgid());
- }
- }
-
- int nextExpected() {
- return nextValue;
- }
-
-protected:
- boost::mutex mutex;
- Hedwig::Subscriber& sub;
- int start;
- int nextValue;
- int gap;
- bool doConsume;
-};
-
-void publishNums(Hedwig::Publisher& pub, const std::string& topic,
- int start, int num, int M) {
- for (int i=1; i<=num; i++) {
- int value = start + i;
- int mod = value % M;
-
- std::stringstream valSS;
- valSS << value;
-
- std::stringstream modSS;
- modSS << mod;
-
- Hedwig::Message msg;
- msg.set_body(valSS.str());
- Hedwig::MessageHeader* header = msg.mutable_header();
- Hedwig::Map* properties = header->mutable_properties();
- Hedwig::Map_Entry* entry = properties->add_entries();
- entry->set_key("mod");
- entry->set_value(modSS.str());
-
- pub.publish(topic, msg);
- }
-}
-
-void receiveNumModM(Hedwig::Subscriber& sub,
- const std::string& topic, const std::string& subid,
- int start, int num, int M, bool consume) {
- Hedwig::SubscriptionOptions options;
- options.set_createorattach(Hedwig::SubscribeRequest::ATTACH);
- Hedwig::Map* userOptions = options.mutable_options();
- Hedwig::Map_Entry* opt = userOptions->add_entries();
- opt->set_key("MOD");
-
- std::stringstream modSS;
- modSS << M;
- opt->set_value(modSS.str());
-
- sub.subscribe(topic, subid, options);
-
- int base = start + M - start % M;
- int end = base + num * M;
-
- GapCheckingMessageHandlerCallback * cb =
- new GapCheckingMessageHandlerCallback(sub, start, base, M, consume);
- Hedwig::MessageHandlerCallbackPtr handler(cb);
- Hedwig::ClientMessageFilterPtr filter(new ModMessageFilter());
-
- sub.startDeliveryWithFilter(topic, subid, handler, filter);
-
- for (int i = 0; i < 100; i++) {
- if (cb->nextExpected() == end) {
- break;
- } else {
- sleep(1);
- }
- }
- ASSERT_TRUE(cb->nextExpected() == end);
-
- sub.stopDelivery(topic, subid);
- sub.closeSubscription(topic, subid);
-}
-
-TEST(MessageFilterTest, testNullMessageFilter) {
- Hedwig::Configuration* conf = new MessageFilterConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
-
- std::string topic = "testNullMessageFilter";
- std::string subid = "myTestSubid";
-
- sub.subscribe(topic, subid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
-
- GapCheckingMessageHandlerCallback * cb =
- new GapCheckingMessageHandlerCallback(sub, 0, 0, 0, true);
- Hedwig::MessageHandlerCallbackPtr handler(cb);
- Hedwig::ClientMessageFilterPtr filter(new ModMessageFilter());
-
- ASSERT_THROW(sub.startDeliveryWithFilter(topic, subid, handler,
- Hedwig::ClientMessageFilterPtr()),
- Hedwig::NullMessageFilterException);
- ASSERT_THROW(sub.startDeliveryWithFilter(topic, subid,
- Hedwig::MessageHandlerCallbackPtr(), filter),
- Hedwig::NullMessageHandlerException);
-}
-
-TEST(MessageFilterTest, testMessageFilter) {
- Hedwig::Configuration* conf = new MessageFilterConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- std::string topic = "testMessageFilter";
- std::string subid = "myTestSubid";
- sub.subscribe(topic, subid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- sub.closeSubscription(topic, subid);
-
- publishNums(pub, topic, 0, 100, 2);
- receiveNumModM(sub, topic, subid, 0, 50, 2, true);
-}
-
-TEST(MessageFilterTest, testUpdateMessageFilter) {
- Hedwig::Configuration* conf = new MessageFilterConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- std::string topic = "testUpdateMessageFilter";
- std::string subid = "myTestSubid";
-
- sub.subscribe(topic, subid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- sub.closeSubscription(topic, subid);
-
- publishNums(pub, topic, 0, 100, 2);
- receiveNumModM(sub, topic, subid, 0, 50, 2, false);
- receiveNumModM(sub, topic, subid, 0, 25, 4, false);
- receiveNumModM(sub, topic, subid, 0, 33, 3, false);
-}
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/test/multiplextest.cpp
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/test/multiplextest.cpp b/hedwig-client/src/main/cpp/test/multiplextest.cpp
deleted file mode 100644
index 534d9ef..0000000
--- a/hedwig-client/src/main/cpp/test/multiplextest.cpp
+++ /dev/null
@@ -1,418 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gtest/gtest.h"
-
-#include "../lib/clientimpl.h"
-#include <hedwig/exceptions.h>
-#include <hedwig/callback.h>
-#include <stdexcept>
-#include <pthread.h>
-
-#include <log4cxx/logger.h>
-
-#include "util.h"
-
-static log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("hedwig."__FILE__));
-
-class MultiplexConfiguration : public TestServerConfiguration {
-public:
- MultiplexConfiguration() : TestServerConfiguration() {}
-
- virtual bool getBool(const std::string& key, bool defaultVal) const {
- if (key == Configuration::SUBSCRIBER_AUTOCONSUME) {
- return false;
- } else if (key == Configuration::SUBSCRIPTION_CHANNEL_SHARING_ENABLED) {
- return true;
- } else {
- return TestServerConfiguration::getBool(key, defaultVal);
- }
- }
-};
-
-class MultiplexMessageHandlerCallback : public Hedwig::MessageHandlerCallback {
-public:
- MultiplexMessageHandlerCallback(Hedwig::Subscriber& sub,
- const int start, const int numMsgsAtFirstRun,
- const bool receiveSecondRun,
- const int numMsgsAtSecondRun)
- : sub(sub), next(start), start(start), numMsgsAtFirstRun(numMsgsAtFirstRun),
- numMsgsAtSecondRun(numMsgsAtSecondRun), receiveSecondRun(receiveSecondRun) {
- }
-
- virtual void consume(const std::string& topic, const std::string& subscriberId,
- const Hedwig::Message& msg, Hedwig::OperationCallbackPtr& callback) {
- const int value = atoi(msg.body().c_str());
- LOG4CXX_DEBUG(logger, "received message " << value);
- boost::lock_guard<boost::mutex> lock(mutex);
- if (value == next) {
- ++next;
- } else {
- LOG4CXX_ERROR(logger, "Did not receive expected value " << next << ", got " << value);
- next = 0;
- firstLatch.setSuccess(false);
- firstLatch.notify();
- secondLatch.setSuccess(false);
- secondLatch.notify();
- }
- if (numMsgsAtFirstRun + start == next) {
- firstLatch.setSuccess(true);
- firstLatch.notify();
- }
- if (receiveSecondRun) {
- if (numMsgsAtFirstRun + numMsgsAtSecondRun + start == next) {
- secondLatch.setSuccess(true);
- secondLatch.notify();
- }
- } else {
- if (numMsgsAtFirstRun + start + 1 == next) {
- secondLatch.setSuccess(true);
- secondLatch.notify();
- }
- }
- callback->operationComplete();
- sub.consume(topic, subscriberId, msg.msgid());
- }
-
- void checkFirstRun() {
- firstLatch.timed_wait(10000);
- ASSERT_TRUE(firstLatch.wasSuccess());
- ASSERT_EQ(numMsgsAtFirstRun + start, next);
- }
-
- void checkSecondRun() {
- if (receiveSecondRun) {
- secondLatch.timed_wait(10000);
- ASSERT_TRUE(secondLatch.wasSuccess());
- ASSERT_EQ(numMsgsAtFirstRun + numMsgsAtSecondRun + start, next);
- } else {
- secondLatch.timed_wait(3000);
- ASSERT_TRUE(!secondLatch.wasSuccess());
- ASSERT_EQ(numMsgsAtFirstRun + start, next);
- }
- }
-
-protected:
- Hedwig::Subscriber& sub;
- boost::mutex mutex;
- int next;
- const int start;
- const int numMsgsAtFirstRun;
- const int numMsgsAtSecondRun;
- SimpleWaitCondition firstLatch;
- SimpleWaitCondition secondLatch;
- const bool receiveSecondRun;
-};
-
-class MultiplexThrottleDeliveryMessageHandlerCallback : public Hedwig::MessageHandlerCallback {
-public:
- MultiplexThrottleDeliveryMessageHandlerCallback(Hedwig::Subscriber& sub,
- const int start, const int numMsgs,
- const bool enableThrottle,
- const int numMsgsThrottle)
- : sub(sub), next(start), start(start), numMsgs(numMsgs),
- numMsgsThrottle(numMsgsThrottle), enableThrottle(enableThrottle) {
- }
-
- virtual void consume(const std::string& topic, const std::string& subscriberId,
- const Hedwig::Message& msg, Hedwig::OperationCallbackPtr& callback) {
- const int value = atoi(msg.body().c_str());
- LOG4CXX_DEBUG(logger, "received message " << value);
- boost::lock_guard<boost::mutex> lock(mutex);
- if (value == next) {
- ++next;
- } else {
- LOG4CXX_ERROR(logger, "Did not receive expected value " << next << ", got " << value);
- next = 0;
- throttleLatch.setSuccess(false);
- throttleLatch.notify();
- nonThrottleLatch.setSuccess(false);
- nonThrottleLatch.notify();
- }
- if (next == numMsgsThrottle + start + 1) {
- throttleLatch.setSuccess(true);
- throttleLatch.notify();
- } else if (next == numMsgs + 1) {
- nonThrottleLatch.setSuccess(true);
- nonThrottleLatch.notify();
- }
- callback->operationComplete();
- if (enableThrottle) {
- if (next > numMsgsThrottle + start) {
- sub.consume(topic, subscriberId, msg.msgid());
- }
- } else {
- sub.consume(topic, subscriberId, msg.msgid());
- }
- }
-
- void checkThrottle() {
- if (enableThrottle) {
- throttleLatch.timed_wait(3000);
- ASSERT_TRUE(!throttleLatch.wasSuccess());
- ASSERT_EQ(numMsgsThrottle + start, next);
- } else {
- throttleLatch.timed_wait(10000);
- ASSERT_TRUE(throttleLatch.wasSuccess());
- nonThrottleLatch.timed_wait(10000);
- ASSERT_TRUE(nonThrottleLatch.wasSuccess());
- ASSERT_EQ(numMsgs + start, next);
- }
- }
-
- void checkAfterThrottle() {
- if (enableThrottle) {
- nonThrottleLatch.timed_wait(10000);
- ASSERT_TRUE(nonThrottleLatch.wasSuccess());
- ASSERT_EQ(numMsgs + start, next);
- }
- }
-
-protected:
- Hedwig::Subscriber& sub;
- boost::mutex mutex;
- int next;
- const int start;
- const int numMsgs;
- const int numMsgsThrottle;
- const bool enableThrottle;
- SimpleWaitCondition throttleLatch;
- SimpleWaitCondition nonThrottleLatch;
-};
-
-TEST(MultiplexTest, testStopDelivery) {
- Hedwig::Configuration* conf = new MultiplexConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- const int numMsgs = 20;
- std::string topic1 = "testStopDelivery-1";
- std::string subid1 = "mysubid-1";
- std::string topic2 = "testStopDelivery-2";
- std::string subid2 = "mysubid-2";
-
- MultiplexMessageHandlerCallback * cb11 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, true, numMsgs);
- MultiplexMessageHandlerCallback * cb12 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, false, 0);
- MultiplexMessageHandlerCallback * cb21 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, false, 0);
- MultiplexMessageHandlerCallback * cb22 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, true, numMsgs);
-
- Hedwig::MessageHandlerCallbackPtr handler11(cb11);
- Hedwig::MessageHandlerCallbackPtr handler12(cb12);
- Hedwig::MessageHandlerCallbackPtr handler21(cb21);
- Hedwig::MessageHandlerCallbackPtr handler22(cb22);
-
- sub.subscribe(topic1, subid1, Hedwig::SubscribeRequest::CREATE);
- sub.subscribe(topic1, subid2, Hedwig::SubscribeRequest::CREATE);
- sub.subscribe(topic2, subid1, Hedwig::SubscribeRequest::CREATE);
- sub.subscribe(topic2, subid2, Hedwig::SubscribeRequest::CREATE);
-
- // start deliveries
- sub.startDelivery(topic1, subid1, handler11);
- sub.startDelivery(topic1, subid2, handler12);
- sub.startDelivery(topic2, subid1, handler21);
- sub.startDelivery(topic2, subid2, handler22);
-
- // first publish
- for (int i = 1; i <= numMsgs; i++) {
- std::stringstream oss;
- oss << i;
- pub.publish(topic1, oss.str());
- pub.publish(topic2, oss.str());
- }
-
- // check first run
- cb11->checkFirstRun();
- cb12->checkFirstRun();
- cb21->checkFirstRun();
- cb22->checkFirstRun();
-
- // stop delivery for <topic1, subscriber2> and <topic2, subscriber1>
- sub.stopDelivery(topic1, subid2);
- sub.stopDelivery(topic2, subid1);
-
- // second publish
- for (int i = numMsgs+1; i <= 2*numMsgs; i++) {
- std::stringstream oss;
- oss << i;
- pub.publish(topic1, oss.str());
- pub.publish(topic2, oss.str());
- }
-
- cb11->checkSecondRun();
- cb12->checkSecondRun();
- cb21->checkSecondRun();
- cb22->checkSecondRun();
-}
-
-TEST(MultiplexTest, testCloseSubscription) {
- Hedwig::Configuration* conf = new MultiplexConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- const int numMsgs = 20;
- std::string topic1 = "testCloseSubscription-1";
- std::string subid1 = "mysubid-1";
- std::string topic2 = "testCloseSubscription-2";
- std::string subid2 = "mysubid-2";
-
- MultiplexMessageHandlerCallback * cb11 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, true, numMsgs);
- MultiplexMessageHandlerCallback * cb12 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, false, 0);
- MultiplexMessageHandlerCallback * cb21 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, false, 0);
- MultiplexMessageHandlerCallback * cb22 =
- new MultiplexMessageHandlerCallback(sub, 1, numMsgs, true, numMsgs);
-
- Hedwig::MessageHandlerCallbackPtr handler11(cb11);
- Hedwig::MessageHandlerCallbackPtr handler12(cb12);
- Hedwig::MessageHandlerCallbackPtr handler21(cb21);
- Hedwig::MessageHandlerCallbackPtr handler22(cb22);
-
- sub.subscribe(topic1, subid1, Hedwig::SubscribeRequest::CREATE);
- sub.subscribe(topic1, subid2, Hedwig::SubscribeRequest::CREATE);
- sub.subscribe(topic2, subid1, Hedwig::SubscribeRequest::CREATE);
- sub.subscribe(topic2, subid2, Hedwig::SubscribeRequest::CREATE);
-
- // start deliveries
- sub.startDelivery(topic1, subid1, handler11);
- sub.startDelivery(topic1, subid2, handler12);
- sub.startDelivery(topic2, subid1, handler21);
- sub.startDelivery(topic2, subid2, handler22);
-
- // first publish
- for (int i = 1; i <= numMsgs; i++) {
- std::stringstream oss;
- oss << i;
- pub.publish(topic1, oss.str());
- pub.publish(topic2, oss.str());
- }
-
- // check first run
- cb11->checkFirstRun();
- cb12->checkFirstRun();
- cb21->checkFirstRun();
- cb22->checkFirstRun();
-
- // close subscription for <topic1, subscriber2> and <topic2, subscriber1>
- sub.closeSubscription(topic1, subid2);
- sub.closeSubscription(topic2, subid1);
-
- // second publish
- for (int i = numMsgs+1; i <= 2*numMsgs; i++) {
- std::stringstream oss;
- oss << i;
- pub.publish(topic1, oss.str());
- pub.publish(topic2, oss.str());
- }
-
- cb11->checkSecondRun();
- cb12->checkSecondRun();
- cb21->checkSecondRun();
- cb22->checkSecondRun();
-}
-
-TEST(MultiplexTest, testThrottle) {
- Hedwig::Configuration* conf = new MultiplexConfiguration();
- std::auto_ptr<Hedwig::Configuration> confptr(conf);
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- std::auto_ptr<Hedwig::Client> clientptr(client);
-
- Hedwig::Subscriber& sub = client->getSubscriber();
- Hedwig::Publisher& pub = client->getPublisher();
-
- const int numMsgs = 10;
- std::string topic1 = "testThrottle-1";
- std::string subid1 = "mysubid-1";
- std::string topic2 = "testThrottle-2";
- std::string subid2 = "mysubid-2";
-
- MultiplexThrottleDeliveryMessageHandlerCallback * cb11 =
- new MultiplexThrottleDeliveryMessageHandlerCallback(sub, 1, 3*numMsgs, false, numMsgs);
- MultiplexThrottleDeliveryMessageHandlerCallback * cb12 =
- new MultiplexThrottleDeliveryMessageHandlerCallback(sub, 1, 3*numMsgs, true, numMsgs);
- MultiplexThrottleDeliveryMessageHandlerCallback * cb21 =
- new MultiplexThrottleDeliveryMessageHandlerCallback(sub, 1, 3*numMsgs, true, numMsgs);
- MultiplexThrottleDeliveryMessageHandlerCallback * cb22 =
- new MultiplexThrottleDeliveryMessageHandlerCallback(sub, 1, 3*numMsgs, false, numMsgs);
-
- Hedwig::MessageHandlerCallbackPtr handler11(cb11);
- Hedwig::MessageHandlerCallbackPtr handler12(cb12);
- Hedwig::MessageHandlerCallbackPtr handler21(cb21);
- Hedwig::MessageHandlerCallbackPtr handler22(cb22);
-
- Hedwig::SubscriptionOptions options;
- options.set_createorattach(Hedwig::SubscribeRequest::CREATE_OR_ATTACH);
- options.set_messagewindowsize(numMsgs);
-
- sub.subscribe(topic1, subid1, options);
- sub.subscribe(topic1, subid2, options);
- sub.subscribe(topic2, subid1, options);
- sub.subscribe(topic2, subid2, options);
-
- // start deliveries
- sub.startDelivery(topic1, subid1, handler11);
- sub.startDelivery(topic1, subid2, handler12);
- sub.startDelivery(topic2, subid1, handler21);
- sub.startDelivery(topic2, subid2, handler22);
-
- // first publish
- for (int i = 1; i <= 3*numMsgs; i++) {
- std::stringstream oss;
- oss << i;
- pub.publish(topic1, oss.str());
- pub.publish(topic2, oss.str());
- }
-
- // check first run
- cb11->checkThrottle();
- cb12->checkThrottle();
- cb21->checkThrottle();
- cb22->checkThrottle();
-
- // consume messages to not throttle them
- for (int i=1; i<=numMsgs; i++) {
- Hedwig::MessageSeqId msgid;
- msgid.set_localcomponent(i);
- sub.consume(topic1, subid2, msgid);
- sub.consume(topic2, subid1, msgid);
- }
-
- cb11->checkAfterThrottle();
- cb12->checkAfterThrottle();
- cb21->checkAfterThrottle();
- cb22->checkAfterThrottle();
-}
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/9a8d62b1/hedwig-client/src/main/cpp/test/publishtest.cpp
----------------------------------------------------------------------
diff --git a/hedwig-client/src/main/cpp/test/publishtest.cpp b/hedwig-client/src/main/cpp/test/publishtest.cpp
deleted file mode 100644
index 46b146a..0000000
--- a/hedwig-client/src/main/cpp/test/publishtest.cpp
+++ /dev/null
@@ -1,318 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gtest/gtest.h"
-
-#include "../lib/clientimpl.h"
-#include <hedwig/exceptions.h>
-#include <hedwig/callback.h>
-#include <stdexcept>
-#include <pthread.h>
-
-#include <log4cxx/logger.h>
-
-#include "util.h"
-
-static log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("hedwig."__FILE__));
-
-TEST(PublishTest, testPublishByMessage) {
- Hedwig::Configuration* conf = new TestServerConfiguration();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- Hedwig::Message syncMsg;
- syncMsg.set_body("sync publish by Message");
- pub.publish("testTopic", syncMsg);
-
- SimpleWaitCondition* cond = new SimpleWaitCondition();
- Hedwig::OperationCallbackPtr testcb(new TestCallback(cond));
- Hedwig::Message asyncMsg;
- asyncMsg.set_body("async publish by Message");
- pub.asyncPublish("testTopic", asyncMsg, testcb);
- cond->wait();
- ASSERT_TRUE(cond->wasSuccess());
- delete cond;
-
- delete client;
- delete conf;
-}
-
-TEST(PublishTest, testSyncPublish) {
- Hedwig::Configuration* conf = new TestServerConfiguration();
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- pub.publish("testTopic", "testMessage 1");
-
- delete client;
- delete conf;
-}
-
-TEST(PublishTest, testSyncPublishWithResponse) {
- Hedwig::Configuration* conf = new TestServerConfiguration();
-
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- int numMsgs = 20;
- for(int i=1; i<=numMsgs; i++) {
- Hedwig::PublishResponsePtr pubResponse = pub.publish("testSyncPublishWithResponse", "testMessage " + i);
- ASSERT_EQ(i, (int)pubResponse->publishedmsgid().localcomponent());
- }
-
- delete client;
- delete conf;
-}
-
-TEST(PublishTest, testAsyncPublish) {
- SimpleWaitCondition* cond = new SimpleWaitCondition();
-
- Hedwig::Configuration* conf = new TestServerConfiguration();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- Hedwig::OperationCallbackPtr testcb(new TestCallback(cond));
- pub.asyncPublish("testTopic", "async test message", testcb);
-
- cond->wait();
-
- ASSERT_TRUE(cond->wasSuccess());
-
- delete cond;
- delete client;
- delete conf;
-}
-
-TEST(PublishTest, testAsyncPublishWithResponse) {
- Hedwig::Configuration* conf = new TestServerConfiguration();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- int numMsgs = 20;
- for (int i=1; i<=numMsgs; i++) {
- SimpleWaitCondition* cond = new SimpleWaitCondition();
- TestPublishResponseCallback* callback =
- new TestPublishResponseCallback(cond);
- Hedwig::PublishResponseCallbackPtr testcb(callback);
- Hedwig::Message asyncMsg;
- asyncMsg.set_body("testAsyncPublishWithResponse-" + i);
- pub.asyncPublishWithResponse("testAsyncPublishWithResponse", asyncMsg, testcb);
-
- cond->wait();
-
- ASSERT_TRUE(cond->wasSuccess());
- ASSERT_EQ(i, (int)callback->getResponse()->publishedmsgid().localcomponent());
-
- delete cond;
- }
- delete client;
- delete conf;
-}
-
-TEST(PublishTest, testMultipleAsyncPublish) {
- SimpleWaitCondition* cond1 = new SimpleWaitCondition();
- SimpleWaitCondition* cond2 = new SimpleWaitCondition();
- SimpleWaitCondition* cond3 = new SimpleWaitCondition();
-
- Hedwig::Configuration* conf = new TestServerConfiguration();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- Hedwig::OperationCallbackPtr testcb1(new TestCallback(cond1));
- Hedwig::OperationCallbackPtr testcb2(new TestCallback(cond2));
- Hedwig::OperationCallbackPtr testcb3(new TestCallback(cond3));
-
- pub.asyncPublish("testTopic", "async test message #1", testcb1);
- pub.asyncPublish("testTopic", "async test message #2", testcb2);
- pub.asyncPublish("testTopic", "async test message #3", testcb3);
-
- cond3->wait();
- ASSERT_TRUE(cond3->wasSuccess());
- cond2->wait();
- ASSERT_TRUE(cond2->wasSuccess());
- cond1->wait();
- ASSERT_TRUE(cond1->wasSuccess());
-
- delete cond3; delete cond2; delete cond1;
- delete client;
- delete conf;
-}
-
-class UnresolvedDefaultHostCallback : public Hedwig::OperationCallback {
-public:
- UnresolvedDefaultHostCallback(SimpleWaitCondition* cond) : cond(cond) {}
-
- virtual void operationComplete() {
- cond->setSuccess(false);
- cond->notify();
- }
-
- virtual void operationFailed(const std::exception& exception) {
- LOG4CXX_ERROR(logger, "Failed with exception : " << exception.what());
- cond->setSuccess(exception.what() == Hedwig::HostResolutionException().what());
- cond->notify();
- }
-
-private:
- SimpleWaitCondition *cond;
-};
-
-TEST(PublishTest, testPublishWithUnresolvedDefaultHost) {
- std::string invalidHost("");
- Hedwig::Configuration* conf = new TestServerConfiguration(invalidHost);
-
- SimpleWaitCondition* cond = new SimpleWaitCondition();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
- Hedwig::OperationCallbackPtr testcb(new UnresolvedDefaultHostCallback(cond));
-
- pub.asyncPublish("testTopic", "testPublishWithUnresolvedDefaultHost", testcb);
-
- cond->wait();
- ASSERT_TRUE(cond->wasSuccess());
-
- delete cond;
- delete client;
- delete conf;
-}
- /* void simplePublish() {
- LOG4CXX_DEBUG(logger, ">>> simplePublish");
- SimpleWaitCondition* cond = new SimpleWaitCondition();
-
- Hedwig::Configuration* conf = new Configuration1();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
-
- Hedwig::OperationCallbackPtr testcb(new TestCallback(cond));
- pub.asyncPublish("foobar", "barfoo", testcb);
-
- LOG4CXX_DEBUG(logger, "wait for response");
- cond->wait();
- delete cond;
- LOG4CXX_DEBUG(logger, "got response");
-
-
- delete client;
- delete conf;
- LOG4CXX_DEBUG(logger, "<<< simplePublish");
- }
-
- class MyMessageHandler : public Hedwig::MessageHandlerCallback {
- public:
- MyMessageHandler(SimpleWaitCondition* cond) : cond(cond) {}
-
- void consume(const std::string& topic, const std::string& subscriberId, const Hedwig::Message& msg, Hedwig::OperationCallbackPtr& callback) {
- LOG4CXX_DEBUG(logger, "Topic: " << topic << " subscriberId: " << subscriberId);
- LOG4CXX_DEBUG(logger, " Message: " << msg.body());
-
- callback->operationComplete();
- cond->setTrue();
- cond->signal();
- }
- private:
- SimpleWaitCondition* cond;
- };*/
- /*
- void simplePublishAndSubscribe() {
- SimpleWaitCondition* cond1 = new SimpleWaitCondition();
- SimpleWaitCondition* cond2 = new SimpleWaitCondition();
- SimpleWaitCondition* cond3 = new SimpleWaitCondition();
-
- Hedwig::Configuration* conf = new Configuration1();
- Hedwig::Client* client = new Hedwig::Client(*conf);
- Hedwig::Publisher& pub = client->getPublisher();
- Hedwig::Subscriber& sub = client->getSubscriber();
-
- std::string topic("foobar");
- std::string sid("mysubscriber");
- Hedwig::OperationCallbackPtr testcb1(new TestCallback(cond1));
- sub.asyncSubscribe(topic, sid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH, testcb1);
- Hedwig::MessageHandlerCallbackPtr messagecb(new MyMessageHandler(cond2));
- sub.startDelivery(topic, sid, messagecb);
- cond1->wait();
-
- Hedwig::OperationCallbackPtr testcb2(new TestCallback(cond3));
- pub.asyncPublish("foobar", "barfoo", testcb2);
- cond3->wait();
- cond2->wait();
-
- delete cond1;
- delete cond3;
- delete cond2;
-
- delete client;
- delete conf;
- }
-
- void publishAndSubscribeWithRedirect() {
- SimpleWaitCondition* cond1 = new SimpleWaitCondition();
- SimpleWaitCondition* cond2 = new SimpleWaitCondition();
- SimpleWaitCondition* cond3 = new SimpleWaitCondition();
- SimpleWaitCondition* cond4 = new SimpleWaitCondition();
-
- Hedwig::Configuration* publishconf = new Configuration1();
- Hedwig::Configuration* subscribeconf = new Configuration2();
-
- Hedwig::Client* publishclient = new Hedwig::Client(*publishconf);
- Hedwig::Publisher& pub = publishclient->getPublisher();
-
- Hedwig::Client* subscribeclient = new Hedwig::Client(*subscribeconf);
- Hedwig::Subscriber& sub = subscribeclient->getSubscriber();
-
- LOG4CXX_DEBUG(logger, "publishing");
- Hedwig::OperationCallbackPtr testcb2(new TestCallback(cond3));
- pub.asyncPublish("foobar", "barfoo", testcb2);
- cond3->wait();
-
- LOG4CXX_DEBUG(logger, "Subscribing");
- std::string topic("foobar");
- std::string sid("mysubscriber");
- Hedwig::OperationCallbackPtr testcb1(new TestCallback(cond1));
- sub.asyncSubscribe(topic, sid, Hedwig::SubscribeRequest::CREATE_OR_ATTACH, testcb1);
- LOG4CXX_DEBUG(logger, "Starting delivery");
- Hedwig::MessageHandlerCallbackPtr messagecb(new MyMessageHandler(cond2));
- sub.startDelivery(topic, sid, messagecb);
-
- LOG4CXX_DEBUG(logger, "Subscribe wait");
- cond1->wait();
-
- Hedwig::OperationCallbackPtr testcb3(new TestCallback(cond4));
- pub.asyncPublish("foobar", "barfoo", testcb3);
- cond4->wait();
-
-
- LOG4CXX_DEBUG(logger, "Delivery wait");
-
- cond2->wait();
-
- sub.stopDelivery(topic, sid);
-
- delete cond1;
- delete cond3;
- delete cond2;
- delete cond4;
-
- delete subscribeclient;
- delete publishclient;
- delete publishconf;
- delete subscribeconf;
- }*/