diff options
Diffstat (limited to 'src/integration-tests')
25 files changed, 3702 insertions, 0 deletions
diff --git a/src/integration-tests/Makefile.am b/src/integration-tests/Makefile.am new file mode 100644 index 0000000..d948b3d --- /dev/null +++ b/src/integration-tests/Makefile.am @@ -0,0 +1,113 @@ +INCLUDES = -I$(top_srcdir)/src/include + +if MINGW + WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols +endif + +if USE_COVERAGE + AM_CFLAGS = --coverage -O0 + XLIB = -lgcov +endif + +bin_PROGRAMS = + +check_PROGRAMS = + +noinst_SCRIPTS = \ + gnunet_testing.py \ + gnunet_pyexpect.py + +if HAVE_PYTHON_PEXPECT +check_SCRIPTS = \ + test_integration_bootstrap_and_connect.py \ + test_integration_bootstrap_and_connect_and_disconnect.py \ + test_integration_bootstrap_and_connect_and_disconnect_nat.py \ + test_integration_restart.py \ + test_integration_clique.py \ + test_integration_clique_nat.py +endif +# test_integration_disconnect.py + + +if ENABLE_TEST_RUN +TESTS = \ + $(check_SCRIPTS) +endif + +do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g' + +%.py: %.py.in Makefile + $(do_subst) < $(srcdir)/$< > $@ + chmod +x $@ + +gnunet_testing.py: gnunet_testing.py.in Makefile + $(do_subst) < $(srcdir)/gnunet_testing.py.in > gnunet_testing.py + chmod +x gnunet_testing.py + +gnunet_pyexpect.py: gnunet_pyexpect.py.in Makefile + $(do_subst) < $(srcdir)/gnunet_pyexpect.py.in > gnunet_pyexpect.py + chmod +x gnunet_pyexpect.py + +test_integration_bootstrap_and_connect.py: test_integration_bootstrap_and_connect.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect.py.in > test_integration_bootstrap_and_connect.py + chmod +x test_integration_bootstrap_and_connect.py + +test_integration_bootstrap_and_connect_and_disconnect.py: test_integration_bootstrap_and_connect_and_disconnect.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect_and_disconnect.py.in > test_integration_bootstrap_and_connect_and_disconnect.py + chmod +x test_integration_bootstrap_and_connect_and_disconnect.py + +test_integration_bootstrap_and_connect_and_disconnect_nat.py: test_integration_bootstrap_and_connect_and_disconnect_nat.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect_and_disconnect_nat.py.in > test_integration_bootstrap_and_connect_and_disconnect_nat.py + chmod +x test_integration_bootstrap_and_connect_and_disconnect_nat.py + + +test_integration_disconnect.py: test_integration_disconnect.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_disconnect.py.in > test_integration_disconnect.py + chmod +x test_integration_disconnect.py + +#test_integration_disconnect_nat.py: test_integration_disconnect_nat.py.in Makefile +# $(do_subst) < $(srcdir)/test_integration_disconnect_nat.py.in > test_integration_disconnect_nat.py +# chmod +x test_integration_disconnect_nat.py + +test_integration_restart.py: test_integration_restart.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_restart.py.in > test_integration_restart.py + chmod +x test_integration_restart.py + +test_integration_clique.py: test_integration_clique.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_clique.py.in > test_integration_clique.py + chmod +x test_integration_clique.py + +test_integration_clique_nat.py: test_integration_clique_nat.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_clique_nat.py.in > test_integration_clique_nat.py + chmod +x test_integration_clique_nat.py + + +EXTRA_DIST = \ + gnunet_testing.py.in \ + gnunet_pyexpect.py.in \ + test_integration_bootstrap_and_connect.py.in \ + test_integration_bootstrap_and_connect_and_disconnect.py.in \ + test_integration_bootstrap_and_connect_and_disconnect_nat.py.in \ + test_integration_disconnect.py.in \ + test_integration_restart.py.in \ + test_integration_clique.py.in \ + test_integration_clique_nat.py.in \ + confs/c_bootstrap_server.conf \ + confs/c_nat_client.conf \ + confs/c_no_nat_client_2.conf \ + confs/c_no_nat_client.conf \ + hostkeys/0000-hostkey \ + hostkeys/0001-hostkey \ + hostkeys/0002-hostkey \ + hostkeys/0003-hostkey \ + hostkeys/0004-hostkey \ + hostkeys/0005-hostkey \ + hostkeys/0006-hostkey \ + hostkeys/0007-hostkey \ + hostkeys/0008-hostkey \ + hostkeys/0009-hostkey +# test_integration_disconnect_nat.py + +CLEANFILES = \ + $(check_SCRIPTS) \ + gnunet_testing.py diff --git a/src/integration-tests/Makefile.in b/src/integration-tests/Makefile.in new file mode 100644 index 0000000..20b13d6 --- /dev/null +++ b/src/integration-tests/Makefile.in @@ -0,0 +1,715 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = +check_PROGRAMS = +subdir = src/integration-tests +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \ + $(top_srcdir)/m4/align.m4 $(top_srcdir)/m4/argz.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libcurl.m4 \ + $(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/libunistring.m4 $(top_srcdir)/m4/ltdl.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/gnunet_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +SCRIPTS = $(noinst_SCRIPTS) +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +ARGZ_H = @ARGZ_H@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_INTERFACE = @DEFAULT_INTERFACE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLDIR = @DLLDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +EXT_LIBS = @EXT_LIBS@ +EXT_LIB_PATH = @EXT_LIB_PATH@ +FGREP = @FGREP@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNUNETDNS_GROUP = @GNUNETDNS_GROUP@ +GN_DAEMON_CONFIG_DIR = @GN_DAEMON_CONFIG_DIR@ +GN_DAEMON_HOME_DIR = @GN_DAEMON_HOME_DIR@ +GN_INTLINCL = @GN_INTLINCL@ +GN_LIBINTL = @GN_LIBINTL@ +GN_LIB_LDFLAGS = @GN_LIB_LDFLAGS@ +GN_PLUGIN_LDFLAGS = @GN_PLUGIN_LDFLAGS@ +GN_USER_HOME_DIR = @GN_USER_HOME_DIR@ +GREP = @GREP@ +HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ +INCLTDL = @INCLTDL@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ +LIBCURL = @LIBCURL@ +LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ +LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@ +LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@ +LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBLTDL = @LIBLTDL@ +LIBOBJS = @LIBOBJS@ +LIBPREFIX = @LIBPREFIX@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUNISTRING = @LIBUNISTRING@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTDLDEPS = @LTDLDEPS@ +LTDLINCL = @LTDLINCL@ +LTDLOPEN = @LTDLOPEN@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBUNISTRING = @LTLIBUNISTRING@ +LT_CONFIG_H = @LT_CONFIG_H@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +MYSQL_CPPFLAGS = @MYSQL_CPPFLAGS@ +MYSQL_LDFLAGS = @MYSQL_LDFLAGS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJC = @OBJC@ +OBJCDEPMODE = @OBJCDEPMODE@ +OBJCFLAGS = @OBJCFLAGS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSTGRES_CPPFLAGS = @POSTGRES_CPPFLAGS@ +POSTGRES_LDFLAGS = @POSTGRES_LDFLAGS@ +POSUB = @POSUB@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SQLITE_CPPFLAGS = @SQLITE_CPPFLAGS@ +SQLITE_LDFLAGS = @SQLITE_LDFLAGS@ +STRIP = @STRIP@ +SUDO_BINARY = @SUDO_BINARY@ +UNIXONLY = @UNIXONLY@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +_libcurl_config = @_libcurl_config@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_OBJC = @ac_ct_OBJC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_target = @build_target@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +ltdl_LIBOBJS = @ltdl_LIBOBJS@ +ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +subdirs = @subdirs@ +sys_symbol_underscore = @sys_symbol_underscore@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = -I$(top_srcdir)/src/include +@MINGW_TRUE@WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols +@USE_COVERAGE_TRUE@AM_CFLAGS = --coverage -O0 +@USE_COVERAGE_TRUE@XLIB = -lgcov +noinst_SCRIPTS = \ + gnunet_testing.py \ + gnunet_pyexpect.py + +@HAVE_PYTHON_PEXPECT_TRUE@check_SCRIPTS = \ +@HAVE_PYTHON_PEXPECT_TRUE@ test_integration_bootstrap_and_connect.py \ +@HAVE_PYTHON_PEXPECT_TRUE@ test_integration_bootstrap_and_connect_and_disconnect.py \ +@HAVE_PYTHON_PEXPECT_TRUE@ test_integration_bootstrap_and_connect_and_disconnect_nat.py \ +@HAVE_PYTHON_PEXPECT_TRUE@ test_integration_restart.py \ +@HAVE_PYTHON_PEXPECT_TRUE@ test_integration_clique.py \ +@HAVE_PYTHON_PEXPECT_TRUE@ test_integration_clique_nat.py + +# test_integration_disconnect.py +@ENABLE_TEST_RUN_TRUE@TESTS = \ +@ENABLE_TEST_RUN_TRUE@ $(check_SCRIPTS) + +do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g' +EXTRA_DIST = \ + gnunet_testing.py.in \ + gnunet_pyexpect.py.in \ + test_integration_bootstrap_and_connect.py.in \ + test_integration_bootstrap_and_connect_and_disconnect.py.in \ + test_integration_bootstrap_and_connect_and_disconnect_nat.py.in \ + test_integration_disconnect.py.in \ + test_integration_restart.py.in \ + test_integration_clique.py.in \ + test_integration_clique_nat.py.in \ + confs/c_bootstrap_server.conf \ + confs/c_nat_client.conf \ + confs/c_no_nat_client_2.conf \ + confs/c_no_nat_client.conf \ + hostkeys/0000-hostkey \ + hostkeys/0001-hostkey \ + hostkeys/0002-hostkey \ + hostkeys/0003-hostkey \ + hostkeys/0004-hostkey \ + hostkeys/0005-hostkey \ + hostkeys/0006-hostkey \ + hostkeys/0007-hostkey \ + hostkeys/0008-hostkey \ + hostkeys/0009-hostkey + +# test_integration_disconnect_nat.py +CLEANFILES = \ + $(check_SCRIPTS) \ + gnunet_testing.py + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/integration-tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/integration-tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes$$std"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: check-am install-am install-strip + +.PHONY: all all-am check check-TESTS check-am clean clean-binPROGRAMS \ + clean-checkPROGRAMS clean-generic clean-libtool distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-binPROGRAMS + + +%.py: %.py.in Makefile + $(do_subst) < $(srcdir)/$< > $@ + chmod +x $@ + +gnunet_testing.py: gnunet_testing.py.in Makefile + $(do_subst) < $(srcdir)/gnunet_testing.py.in > gnunet_testing.py + chmod +x gnunet_testing.py + +gnunet_pyexpect.py: gnunet_pyexpect.py.in Makefile + $(do_subst) < $(srcdir)/gnunet_pyexpect.py.in > gnunet_pyexpect.py + chmod +x gnunet_pyexpect.py + +test_integration_bootstrap_and_connect.py: test_integration_bootstrap_and_connect.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect.py.in > test_integration_bootstrap_and_connect.py + chmod +x test_integration_bootstrap_and_connect.py + +test_integration_bootstrap_and_connect_and_disconnect.py: test_integration_bootstrap_and_connect_and_disconnect.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect_and_disconnect.py.in > test_integration_bootstrap_and_connect_and_disconnect.py + chmod +x test_integration_bootstrap_and_connect_and_disconnect.py + +test_integration_bootstrap_and_connect_and_disconnect_nat.py: test_integration_bootstrap_and_connect_and_disconnect_nat.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect_and_disconnect_nat.py.in > test_integration_bootstrap_and_connect_and_disconnect_nat.py + chmod +x test_integration_bootstrap_and_connect_and_disconnect_nat.py + +test_integration_disconnect.py: test_integration_disconnect.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_disconnect.py.in > test_integration_disconnect.py + chmod +x test_integration_disconnect.py + +#test_integration_disconnect_nat.py: test_integration_disconnect_nat.py.in Makefile +# $(do_subst) < $(srcdir)/test_integration_disconnect_nat.py.in > test_integration_disconnect_nat.py +# chmod +x test_integration_disconnect_nat.py + +test_integration_restart.py: test_integration_restart.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_restart.py.in > test_integration_restart.py + chmod +x test_integration_restart.py + +test_integration_clique.py: test_integration_clique.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_clique.py.in > test_integration_clique.py + chmod +x test_integration_clique.py + +test_integration_clique_nat.py: test_integration_clique_nat.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_clique_nat.py.in > test_integration_clique_nat.py + chmod +x test_integration_clique_nat.py + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/integration-tests/confs/c_bootstrap_server.conf b/src/integration-tests/confs/c_bootstrap_server.conf new file mode 100644 index 0000000..0b919f9 --- /dev/null +++ b/src/integration-tests/confs/c_bootstrap_server.conf @@ -0,0 +1,355 @@ +[PATHS] +SERVICEHOME = /tmp/c_bootstrap_server/ +DEFAULTCONFIG = confs/c_bootstrap_server.conf + +[gnunetd] +#HOSTKEY = $SERVICEHOME/.hostkey +HOSTKEY = hostkeys/0000-hostkey + +[vpn] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/gnunet-service-vpn-15 + +[resolver] +AUTOSTART = YES +PORT = 20017 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-resolver +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-resolver-14 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = NO + +[mesh] +AUTOSTART = YES +PORT = 20016 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-mesh +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-mesh-13 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nse] +AUTOSTART = YES +PORT = 20015 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-nse +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-nse-12 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PROOFFILE = $SERVICEHOME/.nse-proof +HISTOGRAM = $SERVICEHOME/nse-history.log +WORKDELAY = 5 ms +INTERVAL = 1 h +WORKBITS = 26 + +[topology] +MINIMUM-FRIENDS = 0 +FRIENDS-ONLY = NO +AUTOCONNECT = YES +TARGET-CONNECTION-COUNT = 16 +FRIENDS = $SERVICEHOME/friends +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-topology + +[datastore] +AUTOSTART = YES +UNIXPATH = /tmp/test-service-datastore-11 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PORT = 20014 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-datastore +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +QUOTA = 100 MB +BLOOMFILTER = $SERVICEHOME/fs/bloomfilter +DATABASE = sqlite + +[datastore-sqlite] +FILENAME = $SERVICEHOME/datastore/sqlite.db + +[datastore-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[datastore-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[peerinfo] +AUTOSTART = YES +PORT = 20013 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-peerinfo +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-peerinfo-10 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +HOSTS = $SERVICEHOME/data/hosts/ + +[client] +HOME = $SERVICEHOME + +[TESTING] +WEAKRANDOM = YES +CONNECT_TIMEOUT = 30 s +CONNECT_ATTEMPTS = 3 +MAX_OUTSTANDING_CONNECTIONS = 50 +DELETE_FILES = YES + +[ats] +AUTOSTART = YES +PORT = 20012 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-ats +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-ats-9 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +WAN_QUOTA_IN = 65536 +WAN_QUOTA_OUT = 65536 +DUMP_MLP = NO +DUMP_SOLUTION = NO +DUMP_OVERWRITE = NO +DUMP_MIN_PEERS = 0 +DUMP_MIN_ADDRS = 0 +ATS_MIN_INTERVAL = 15000 +ATS_EXEC_INTERVAL = 30000 + +[transport] +AUTOSTART = YES +PORT = 20011 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-transport +NEIGHBOUR_LIMIT = 50 +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +PLUGINS = tcp +UNIXPATH = /tmp/test-service-transport-8 +BLACKLIST_FILE = $SERVICEHOME/blacklist +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[transport-tcp] +USE_LOCALADDR = YES +PORT = 20010 +ADVERTISED_PORT = 20010 +MAX_CONNECTIONS = 128 +TIMEOUT = 5 s + +[transport-udp] +USE_LOCALADDR = YES +PORT = 20009 +BROADCAST = YES +BROADCAST_INTERVAL = 30000 +MAX_BPS = 1000000 + +[transport-http] +PORT = 20008 +MAX_CONNECTIONS = 128 + +[transport-https] +PORT = 20007 +CRYPTO_INIT = NORMAL +KEY_FILE = https.key +CERT_FILE = https.cert +MAX_CONNECTIONS = 128 + +[transport-wlan] +INTERFACE = mon0 +TESTMODE = 0 + +[datacache-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[datacache-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[template] +AUTOSTART = NO +PORT = 20006 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-template +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-template-7 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[fs] +AUTOSTART = YES +INDEXDB = $SERVICEHOME/idxinfo.lst +TRUST = $SERVICEHOME/data/credit/ +IDENTITY_DIR = $SERVICEHOME/identities/ +STATE_DIR = $SERVICEHOME/persistence/ +UPDATE_DIR = $SERVICEHOME/updates/ +PORT = 20005 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-fs +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DELAY = YES +CONTENT_CACHING = YES +CONTENT_PUSHING = YES +UNIXPATH = /tmp/test-service-fs-6 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +MAX_PENDING_REQUESTS = 65536 +MIN_MIGRATION_DELAY = 100 ms +EXPECTED_NEIGHBOUR_COUNT = 128 + +[vpn] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-vpn +IPV6ADDR = 1234::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.11.10.1 +IPV4MASK = 255.255.0.0 +VIRTDNS = 10.11.10.2 +VIRTDNS6 = 1234::17 +IFNAME = vpn-gnunet + +[exit] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-exit +IPV6ADDR = 1234:1::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.10.1.1 +IPV4MASK = 255.255.0.0 +IFNAME = exit-gnunet +ENABLE_UDP = NO +ENABLE_TCP = NO + +[dns] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-dns-5 +PROVIDE_EXIT = NO + +[arm] +PORT = 20004 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-arm +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DEFAULTSERVICES = topology hostlist fs +UNIXPATH = /tmp/test-service-arm-4 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[hostlist] +HTTPPORT = 8080 +HOME = $SERVICEHOME +HOSTLISTFILE = $SERVICEHOME/hostlist/learned.data +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-hostlist +OPTIONS = -p +#SERVERS = http://v9.gnunet.org:58080/ +HTTP-PROXY = + +[core] +AUTOSTART = YES +PORT = 20003 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-core +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-core-3 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nat] +EXTERNAL_ADDRESS = 127.0.0.1 +INTERNAL_ADDRESS = 127.0.0.1 +BINDTO = 127.0.0.1 +BEHIND_NAT = NO +PUNCHED_NAT = NO +ENABLE_UPNP = NO +USE_LOCALADDR = YES +USE_HOSTNAME = NO +ENABLE_ICMP_CLIENT = NO +ENABLE_ICMP_SERVER = NO +DISABLEV6 = YES +RETURN_LOCAL_ADDRESSES = NO +HOSTNAME_DNS_FREQUENCY = 1200000 +IFC_SCAN_FREQUENCY = 3000000 +DYNDNS_FREQUENCY = 140000 + +[gnunet-nat-server] +HOSTNAME = gnunet.org +PORT = 20002 + +[statistics] +AUTOSTART = YES +PORT = 20001 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-statistics +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-statistics-2 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES + +[dht] +AUTOSTART = YES +PORT = 20000 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dht +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +BUCKET_SIZE = 4 +UNIXPATH = /tmp/test-service-dht-1 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[dhtcache] +DATABASE = sqlite +QUOTA = 1 MB + diff --git a/src/integration-tests/confs/c_nat_client.conf b/src/integration-tests/confs/c_nat_client.conf new file mode 100644 index 0000000..59fa0f7 --- /dev/null +++ b/src/integration-tests/confs/c_nat_client.conf @@ -0,0 +1,354 @@ +[PATHS] +SERVICEHOME = /tmp/c_nat_client +DEFAULTCONFIG = confs/c_nat_client.conf + +[gnunetd] +HOSTKEY = hostkeys/0002-hostkey + +[client] +HOME = $SERVICEHOME + +[vpn] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/gnunet-service-vpn-57 + + +[resolver] +AUTOSTART = YES +PORT = 20071 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-resolver +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-resolver-56 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = NO + +[mesh] +AUTOSTART = YES +PORT = 20070 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-mesh +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-mesh-55 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nse] +AUTOSTART = YES +PORT = 20069 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-nse +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-nse-54 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PROOFFILE = $SERVICEHOME/.nse-proof +HISTOGRAM = $SERVICEHOME/nse-history.log +WORKDELAY = 5 ms +INTERVAL = 1 h +WORKBITS = 26 + +[topology] +MINIMUM-FRIENDS = 0 +FRIENDS-ONLY = NO +AUTOCONNECT = YES +TARGET-CONNECTION-COUNT = 16 +FRIENDS = $SERVICEHOME/friends +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-topology + +[datastore] +AUTOSTART = YES +UNIXPATH = /tmp/test-service-datastore-53 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PORT = 20068 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-datastore +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +QUOTA = 100 MB +BLOOMFILTER = $SERVICEHOME/fs/bloomfilter +DATABASE = sqlite + +[datastore-sqlite] +FILENAME = $SERVICEHOME/datastore/sqlite.db + +[datastore-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[datastore-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[peerinfo] +AUTOSTART = YES +PORT = 20067 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-peerinfo +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-peerinfo-52 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +HOSTS = $SERVICEHOME/data/hosts/ + +[TESTING] +WEAKRANDOM = NO +CONNECT_TIMEOUT = 30 s +CONNECT_ATTEMPTS = 3 +MAX_OUTSTANDING_CONNECTIONS = 50 +DELETE_FILES = YES + +[ats] +AUTOSTART = YES +PORT = 20066 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-ats +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-ats-51 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +WAN_QUOTA_IN = 65536 +WAN_QUOTA_OUT = 65536 +DUMP_MLP = NO +DUMP_SOLUTION = NO +DUMP_OVERWRITE = NO +DUMP_MIN_PEERS = 0 +DUMP_MIN_ADDRS = 0 +ATS_MIN_INTERVAL = 15000 +ATS_EXEC_INTERVAL = 30000 + +[transport] +AUTOSTART = YES +PORT = 20065 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-transport +NEIGHBOUR_LIMIT = 50 +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +PLUGINS = tcp +UNIXPATH = /tmp/test-service-transport-50 +BLACKLIST_FILE = $SERVICEHOME/blacklist +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[transport-tcp] +PORT = 0 +ADVERTISED_PORT = 20064 +MAX_CONNECTIONS = 128 +TIMEOUT = 5 s +USE_LOCALADDR = YES + +[transport-udp] +PORT = 0 +BROADCAST = YES +BROADCAST_INTERVAL = 30000 +MAX_BPS = 1000000 +USE_LOCALADDR = YES + +[transport-http] +PORT = 0 +MAX_CONNECTIONS = 128 + +[transport-https] +PORT = 0 +CRYPTO_INIT = NORMAL +KEY_FILE = https.key +CERT_FILE = https.cert +MAX_CONNECTIONS = 128 + +[transport-wlan] +INTERFACE = mon0 +TESTMODE = 0 + +[datacache-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[datacache-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[template] +AUTOSTART = NO +PORT = 20060 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-template +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-template-49 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[fs] +AUTOSTART = YES +INDEXDB = $SERVICEHOME/idxinfo.lst +TRUST = $SERVICEHOME/data/credit/ +IDENTITY_DIR = $SERVICEHOME/identities/ +STATE_DIR = $SERVICEHOME/persistence/ +UPDATE_DIR = $SERVICEHOME/updates/ +PORT = 20059 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-fs +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DELAY = YES +CONTENT_CACHING = YES +CONTENT_PUSHING = YES +UNIXPATH = /tmp/test-service-fs-48 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +MAX_PENDING_REQUESTS = 65536 +MIN_MIGRATION_DELAY = 100 ms +EXPECTED_NEIGHBOUR_COUNT = 128 + +[vpn] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-vpn +IPV6ADDR = 1234::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.11.10.1 +IPV4MASK = 255.255.0.0 +VIRTDNS = 10.11.10.2 +VIRTDNS6 = 1234::17 +IFNAME = vpn-gnunet + +[exit] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-exit +IPV6ADDR = 1234:1::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.10.1.1 +IPV4MASK = 255.255.0.0 +IFNAME = exit-gnunet +ENABLE_UDP = NO +ENABLE_TCP = NO + +[dns] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-dns-47 +PROVIDE_EXIT = NO + +[arm] +PORT = 20058 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-arm +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DEFAULTSERVICES = topology hostlist fs +UNIXPATH = /tmp/test-service-arm-46 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[hostlist] +HTTPPORT = 8080 +HOME = $SERVICEHOME +HOSTLISTFILE = $SERVICEHOME/hostlist/learned.data +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-hostlist +OPTIONS = -b +SERVERS = http://localhost:8080/ +HTTP-PROXY = + +[core] +AUTOSTART = YES +PORT = 20057 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-core +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-core-45 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nat] +BEHIND_NAT = YES +PUNCHED_NAT = NO +ENABLE_UPNP = NO +USE_LOCALADDR = YES +USE_HOSTNAME = NO +ENABLE_ICMP_CLIENT = NO +ENABLE_ICMP_SERVER = NO +DISABLEV6 = YES +RETURN_LOCAL_ADDRESSES = NO +HOSTNAME_DNS_FREQUENCY = 1200000 +IFC_SCAN_FREQUENCY = 3000000 +DYNDNS_FREQUENCY = 140000 +EXTERNAL_ADDRESS = 127.0.0.1 +INTERNAL_ADDRESS = 127.0.0.1 +BINDTO = 127.0.0.1 + +[gnunet-nat-server] +HOSTNAME = gnunet.org +PORT = 20056 + +[statistics] +AUTOSTART = YES +PORT = 20055 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-statistics +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-statistics-44 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES + +[dht] +AUTOSTART = YES +PORT = 20054 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dht +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +BUCKET_SIZE = 4 +UNIXPATH = /tmp/test-service-dht-43 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[dhtcache] +DATABASE = sqlite +QUOTA = 1 MB
\ No newline at end of file diff --git a/src/integration-tests/confs/c_no_nat_client.conf b/src/integration-tests/confs/c_no_nat_client.conf new file mode 100644 index 0000000..4ec077c --- /dev/null +++ b/src/integration-tests/confs/c_no_nat_client.conf @@ -0,0 +1,356 @@ +[PATHS] +SERVICEHOME = /tmp/c_no_nat_client/ +DEFAULTCONFIG = confs/c_no_nat_client.conf + +[gnunetd] +#HOSTKEY = $SERVICEHOME/.hostkey +HOSTKEY = hostkeys/0001-hostkey + +[vpn] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/gnunet-service-vpn-29 + +[resolver] +AUTOSTART = YES +PORT = 20035 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-resolver +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-resolver-28 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = NO + +[mesh] +AUTOSTART = YES +PORT = 20034 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-mesh +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-mesh-27 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nse] +AUTOSTART = YES +PORT = 20033 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-nse +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-nse-26 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PROOFFILE = $SERVICEHOME/.nse-proof +HISTOGRAM = $SERVICEHOME/nse-history.log +WORKDELAY = 5 ms +INTERVAL = 1 h +WORKBITS = 26 + +[topology] +MINIMUM-FRIENDS = 0 +FRIENDS-ONLY = NO +AUTOCONNECT = YES +TARGET-CONNECTION-COUNT = 16 +FRIENDS = $SERVICEHOME/friends +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-topology + +[datastore] +AUTOSTART = YES +UNIXPATH = /tmp/test-service-datastore-25 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PORT = 20032 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-datastore +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +QUOTA = 100 MB +BLOOMFILTER = $SERVICEHOME/fs/bloomfilter +DATABASE = sqlite + +[datastore-sqlite] +FILENAME = $SERVICEHOME/datastore/sqlite.db + +[datastore-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[datastore-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[peerinfo] +AUTOSTART = YES +PORT = 20031 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-peerinfo +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-peerinfo-24 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +HOSTS = $SERVICEHOME/data/hosts/ + +[client] +HOME = $SERVICEHOME + +[TESTING] +WEAKRANDOM = NO +CONNECT_TIMEOUT = 30 s +CONNECT_ATTEMPTS = 3 +MAX_OUTSTANDING_CONNECTIONS = 50 +DELETE_FILES = YES + +[ats] +AUTOSTART = YES +PORT = 20030 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-ats +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-ats-23 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +WAN_QUOTA_IN = 65536 +WAN_QUOTA_OUT = 65536 +DUMP_MLP = NO +DUMP_SOLUTION = NO +DUMP_OVERWRITE = NO +DUMP_MIN_PEERS = 0 +DUMP_MIN_ADDRS = 0 +ATS_MIN_INTERVAL = 15000 +ATS_EXEC_INTERVAL = 30000 + +[transport] +#DEBUG = YES +AUTOSTART = YES +PORT = 20029 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-transport +NEIGHBOUR_LIMIT = 50 +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +PLUGINS = tcp +UNIXPATH = /tmp/test-service-transport-22 +BLACKLIST_FILE = $SERVICEHOME/blacklist +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[transport-tcp] +USE_LOCALADDR = YES +PORT = 20028 +ADVERTISED_PORT = 20028 +MAX_CONNECTIONS = 128 +TIMEOUT = 5 s + +[transport-udp] +USE_LOCALADDR = YES +PORT = 20027 +BROADCAST = YES +BROADCAST_INTERVAL = 30000 +MAX_BPS = 1000000 + +[transport-http] +PORT = 20026 +MAX_CONNECTIONS = 128 + +[transport-https] +PORT = 20025 +CRYPTO_INIT = NORMAL +KEY_FILE = https.key +CERT_FILE = https.cert +MAX_CONNECTIONS = 128 + +[transport-wlan] +INTERFACE = mon0 +TESTMODE = 0 + +[datacache-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[datacache-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[template] +AUTOSTART = NO +PORT = 20024 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-template +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-template-21 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[fs] +AUTOSTART = YES +INDEXDB = $SERVICEHOME/idxinfo.lst +TRUST = $SERVICEHOME/data/credit/ +IDENTITY_DIR = $SERVICEHOME/identities/ +STATE_DIR = $SERVICEHOME/persistence/ +UPDATE_DIR = $SERVICEHOME/updates/ +PORT = 20023 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-fs +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DELAY = YES +CONTENT_CACHING = YES +CONTENT_PUSHING = YES +UNIXPATH = /tmp/test-service-fs-20 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +MAX_PENDING_REQUESTS = 65536 +MIN_MIGRATION_DELAY = 100 ms +EXPECTED_NEIGHBOUR_COUNT = 128 + +[vpn] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-vpn +IPV6ADDR = 1234::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.11.10.1 +IPV4MASK = 255.255.0.0 +VIRTDNS = 10.11.10.2 +VIRTDNS6 = 1234::17 +IFNAME = vpn-gnunet + +[exit] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-exit +IPV6ADDR = 1234:1::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.10.1.1 +IPV4MASK = 255.255.0.0 +IFNAME = exit-gnunet +ENABLE_UDP = NO +ENABLE_TCP = NO + +[dns] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-dns-19 +PROVIDE_EXIT = NO + +[arm] +PORT = 20022 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-arm +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DEFAULTSERVICES = topology hostlist fs +UNIXPATH = /tmp/test-service-arm-18 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[hostlist] +HTTPPORT = 8080 +HOME = $SERVICEHOME +HOSTLISTFILE = $SERVICEHOME/hostlist/learned.data +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-hostlist +OPTIONS = -b +SERVERS = http://localhost:8080/ +HTTP-PROXY = + +[core] +AUTOSTART = YES +PORT = 20021 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-core +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-core-17 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nat] +EXTERNAL_ADDRESS = 127.0.0.1 +INTERNAL_ADDRESS = 127.0.0.1 +BINDTO = 127.0.0.1 +BEHIND_NAT = NO +PUNCHED_NAT = NO +ENABLE_UPNP = NO +USE_LOCALADDR = YES +USE_HOSTNAME = NO +ENABLE_ICMP_CLIENT = NO +ENABLE_ICMP_SERVER = NO +DISABLEV6 = YES +RETURN_LOCAL_ADDRESSES = NO +HOSTNAME_DNS_FREQUENCY = 1200000 +IFC_SCAN_FREQUENCY = 3000000 +DYNDNS_FREQUENCY = 140000 + +[gnunet-nat-server] +HOSTNAME = gnunet.org +PORT = 20020 + +[statistics] +AUTOSTART = YES +PORT = 20019 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-statistics +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-statistics-16 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES + +[dht] +AUTOSTART = YES +PORT = 20018 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dht +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +BUCKET_SIZE = 4 +UNIXPATH = /tmp/test-service-dht-15 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[dhtcache] +DATABASE = sqlite +QUOTA = 1 MB + diff --git a/src/integration-tests/confs/c_no_nat_client_2.conf b/src/integration-tests/confs/c_no_nat_client_2.conf new file mode 100644 index 0000000..bd675d7 --- /dev/null +++ b/src/integration-tests/confs/c_no_nat_client_2.conf @@ -0,0 +1,344 @@ +[PATHS] +SERVICEHOME = /tmp/c_no_nat_client_2/ +DEFAULTCONFIG = confs/c_no_nat_client_2.conf + +[gnunetd] +#HOSTKEY = $SERVICEHOME/.hostkey +HOSTKEY = hostkeys/0002-hostkey + +[resolver] +AUTOSTART = YES +PORT = 20053 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-resolver +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-resolver-42 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = NO + +[mesh] +AUTOSTART = YES +PORT = 20052 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-mesh +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-mesh-41 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nse] +AUTOSTART = YES +PORT = 20051 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-nse +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-nse-40 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PROOFFILE = $SERVICEHOME/.nse-proof +HISTOGRAM = $SERVICEHOME/nse-history.log +WORKDELAY = 5 ms +INTERVAL = 1 h +WORKBITS = 26 + +[topology] +MINIMUM-FRIENDS = 0 +FRIENDS-ONLY = NO +AUTOCONNECT = YES +TARGET-CONNECTION-COUNT = 16 +FRIENDS = $SERVICEHOME/friends +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-topology + +[datastore] +AUTOSTART = YES +UNIXPATH = /tmp/test-service-datastore-39 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PORT = 20050 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-datastore +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +QUOTA = 100 MB +BLOOMFILTER = $SERVICEHOME/fs/bloomfilter +DATABASE = sqlite + +[datastore-sqlite] +FILENAME = $SERVICEHOME/datastore/sqlite.db + +[datastore-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[datastore-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[peerinfo] +AUTOSTART = YES +PORT = 20049 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-peerinfo +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-peerinfo-38 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +HOSTS = $SERVICEHOME/data/hosts/ + +[client] +HOME = $SERVICEHOME + +[TESTING] +WEAKRANDOM = NO +CONNECT_TIMEOUT = 30 s +CONNECT_ATTEMPTS = 3 +MAX_OUTSTANDING_CONNECTIONS = 50 +DELETE_FILES = YES + +[ats] +AUTOSTART = YES +PORT = 20048 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-ats +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-ats-37 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +WAN_QUOTA_IN = 65536 +WAN_QUOTA_OUT = 65536 +DUMP_MLP = NO +DUMP_SOLUTION = NO +DUMP_OVERWRITE = NO +DUMP_MIN_PEERS = 0 +DUMP_MIN_ADDRS = 0 +ATS_MIN_INTERVAL = 15000 +ATS_EXEC_INTERVAL = 30000 + +[transport] +AUTOSTART = YES +PORT = 20047 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-transport +NEIGHBOUR_LIMIT = 50 +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +PLUGINS = tcp +UNIXPATH = /tmp/test-service-transport-36 +BLACKLIST_FILE = $SERVICEHOME/blacklist +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[transport-tcp] +PORT = 20046 +ADVERTISED_PORT = 20046 +MAX_CONNECTIONS = 128 +TIMEOUT = 5 s +USE_LOCALADDR = YES + +[transport-udp] +PORT = 20045 +BROADCAST = YES +BROADCAST_INTERVAL = 30000 +MAX_BPS = 1000000 +USE_LOCALADDR = YES + +[transport-http] +PORT = 20044 +MAX_CONNECTIONS = 128 + +[transport-https] +PORT = 20043 +CRYPTO_INIT = NORMAL +KEY_FILE = https.key +CERT_FILE = https.cert +MAX_CONNECTIONS = 128 + +[transport-wlan] +INTERFACE = mon0 +TESTMODE = 0 + +[datacache-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[datacache-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[template] +AUTOSTART = NO +PORT = 20042 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-template +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-template-35 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[fs] +AUTOSTART = YES +INDEXDB = $SERVICEHOME/idxinfo.lst +TRUST = $SERVICEHOME/data/credit/ +IDENTITY_DIR = $SERVICEHOME/identities/ +STATE_DIR = $SERVICEHOME/persistence/ +UPDATE_DIR = $SERVICEHOME/updates/ +PORT = 20041 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-fs +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DELAY = YES +CONTENT_CACHING = YES +CONTENT_PUSHING = YES +UNIXPATH = /tmp/test-service-fs-34 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +MAX_PENDING_REQUESTS = 65536 +MIN_MIGRATION_DELAY = 100 ms +EXPECTED_NEIGHBOUR_COUNT = 128 + +[vpn] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-vpn +IPV6ADDR = 1234::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.11.10.1 +IPV4MASK = 255.255.0.0 +VIRTDNS = 10.11.10.2 +VIRTDNS6 = 1234::17 +IFNAME = vpn-gnunet + +[exit] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-exit +IPV6ADDR = 1234:1::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.10.1.1 +IPV4MASK = 255.255.0.0 +IFNAME = exit-gnunet +ENABLE_UDP = NO +ENABLE_TCP = NO + +[dns] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-dns-33 +PROVIDE_EXIT = NO + +[arm] +PORT = 20040 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-arm +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DEFAULTSERVICES = topology hostlist fs +UNIXPATH = /tmp/test-service-arm-32 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[hostlist] +HTTPPORT = 8080 +HOME = $SERVICEHOME +HOSTLISTFILE = $SERVICEHOME/hostlist/learned.data +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-hostlist +OPTIONS = -b +SERVERS = http://localhost:8080/ +HTTP-PROXY = + +[core] +AUTOSTART = YES +PORT = 20039 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-core +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-core-31 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nat] +BEHIND_NAT = NO +PUNCHED_NAT = NO +ENABLE_UPNP = NO +USE_LOCALADDR = YES +USE_HOSTNAME = NO +ENABLE_ICMP_CLIENT = NO +ENABLE_ICMP_SERVER = NO +DISABLEV6 = YES +RETURN_LOCAL_ADDRESSES = NO +HOSTNAME_DNS_FREQUENCY = 1200000 +IFC_SCAN_FREQUENCY = 3000000 +DYNDNS_FREQUENCY = 140000 +EXTERNAL_ADDRESS = 127.0.0.1 +INTERNAL_ADDRESS = 127.0.0.1 +BINDTO = 127.0.0.1 + +[gnunet-nat-server] +HOSTNAME = gnunet.org +PORT = 20038 + +[statistics] +AUTOSTART = YES +PORT = 20037 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-statistics +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-statistics-30 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES + +[dht] +AUTOSTART = YES +PORT = 20036 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dht +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +BUCKET_SIZE = 4 +UNIXPATH = /tmp/test-service-dht-29 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[dhtcache] +DATABASE = sqlite +QUOTA = 1 MB + diff --git a/src/integration-tests/gnunet_pyexpect.py.in b/src/integration-tests/gnunet_pyexpect.py.in new file mode 100644 index 0000000..9e5c83f --- /dev/null +++ b/src/integration-tests/gnunet_pyexpect.py.in @@ -0,0 +1,83 @@ +#!@PYTHON@
+# This file is part of GNUnet.
+# (C) 2010 Christian Grothoff (and other contributing authors)
+#
+# GNUnet is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2, or (at your
+# option) any later version.
+#
+# GNUnet is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNUnet; see the file COPYING. If not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+# Testcase for gnunet-peerinfo
+from __future__ import print_function
+import os
+import re
+import subprocess
+import sys
+import shutil
+import time
+
+class pexpect (object):
+ def __init__ (self):
+ super (pexpect, self).__init__ ()
+
+ def spawn (self, stdin, arglist, *pargs, **kwargs):
+ env = kwargs.pop ('env', None)
+ if env is None:
+ env = os.environ.copy ()
+ # This messes up some testcases, disable log redirection
+ env.pop ('GNUNET_FORCE_LOGFILE', None)
+ self.proc = subprocess.Popen (arglist, *pargs, env=env, **kwargs)
+ if self.proc is None:
+ print ("Failed to spawn a process {0}".format (arglist))
+ sys.exit (1)
+ if stdin is not None:
+ self.stdo, self.stde = self.proc.communicate (stdin)
+ else:
+ self.stdo, self.stde = self.proc.communicate ()
+ return self.proc
+
+ def expect (self, s, r, flags=0):
+ stream = self.stdo if s == 'stdout' else self.stde
+ if isinstance (r, str):
+ if r == "EOF":
+ if len (stream) == 0:
+ return True
+ else:
+ print ("Failed to find `{1}' in {0}, which is `{2}' ({3})".format (s, r, stream, len (stream)))
+ sys.exit (2)
+ raise ValueError ("Argument `r' should be an instance of re.RegexObject or a special string, but is `{0}'".format (r))
+ m = r.search (stream, flags)
+ if not m:
+ print ("Failed to find `{1}' in {0}, which is is `{2}'".format (s, r.pattern, stream))
+ sys.exit (2)
+ stream = stream[m.end ():]
+ if s == 'stdout':
+ self.stdo = stream
+ else:
+ self.stde = stream
+ return m
+
+ def read (self, s, size=-1):
+ stream = self.stdo if s == 'stdout' else self.stde
+ result = ""
+ if size < 0:
+ result = stream
+ new_stream = ""
+ else:
+ result = stream[0:size]
+ new_stream = stream[size:]
+ if s == 'stdout':
+ self.stdo = new_stream
+ else:
+ self.stde = new_stream
+ return result
diff --git a/src/integration-tests/gnunet_testing.py.in b/src/integration-tests/gnunet_testing.py.in new file mode 100644 index 0000000..79cbfe9 --- /dev/null +++ b/src/integration-tests/gnunet_testing.py.in @@ -0,0 +1,232 @@ +#!/usr/bin/python +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# Functions for integration testing +import os +import subprocess +import sys +import shutil +import time +from gnunet_pyexpect import pexpect + +class Check: + def __init__(self, test): + self.fulfilled = False + self.conditions = list() + self.test = test + def add (self, condition): + self.conditions.append(condition) + def run (self): + fulfilled = True + pos = 0 + neg = 0 + for c in self.conditions: + if (False == c.check ()): + fulfilled = False + neg += 1 + else: + pos += 1 + self.test.p (str(pos) +' out of '+ str (pos+neg) + ' conditions fulfilled') + return fulfilled + def run_blocking (self, timeout, pos_cont, neg_cont): + execs = 0; + res = False + while ((False == res) and (execs < timeout)): + res = self.run() + time.sleep(1) + execs += 1 + if (res == False): + neg_cont (self) + else: + pos_cont (self) + def evaluate (self, failed_only): + pos = 0 + neg = 0 + for c in self.conditions: + if (False == c.evaluate (failed_only)): + neg += 1 + else: + pos += 1 + print (str(pos) +' out of '+ str (pos+neg) + ' conditions fulfilled') + return self.fulfilled + +class Condition: + def __init__(self): + self.fulfilled = False + self.type = 'generic' + def __init__(self, type): + self.fulfilled = False + self.type = type + def check(self): + return False; + def evaluate (self, failed_only): + if ((self.fulfilled == False) and (failed_only == True)): + print str(self.type) + 'condition for was ' + str(self.fulfilled) + elif (failed_only == False): + print str(self.type) + 'condition for was ' + str(self.fulfilled) + return self.fulfilled + +class FileExistCondition (Condition): + def __init__(self, file): + self.fulfilled = False + self.type = 'file' + self.file = file + def check(self): + if (self.fulfilled == False): + res = os.path.isfile(self.file) + if (res == True): + self.fulfilled = True + return True + else: + return False + else: + return True + def evaluate (self, failed_only): + if ((self.fulfilled == False) and (failed_only == True)): + print str(self.type) + 'condition for file '+self.file+' was ' + str(self.fulfilled) + elif (failed_only == False): + print str(self.type) + 'condition for file '+self.file+' was ' + str(self.fulfilled) + return self.fulfilled + +class StatisticsCondition (Condition): + def __init__(self, peer, subsystem, name, value): + self.fulfilled = False + self.type = 'statistics' + self.peer = peer; + self.subsystem = subsystem; + self.name = name; + self.value = value; + self.result = -1; + def check(self): + if (self.fulfilled == False): + self.result = self.peer.get_statistics_value (self.subsystem, self.name); + if (str(self.result) == str(self.value)): + self.fulfilled = True + return True + else: + return False + else: + return True + def evaluate (self, failed_only): + if (self.result == -1): + res = 'NaN' + else: + res = str(self.result) + if (self.fulfilled == False): + fail = " FAIL!" + op = " != " + else: + fail = "" + op = " == " + if ((self.fulfilled == False) and (failed_only == True)): + print self.peer.id[:4] + " " +self.peer.cfg + " " + str(self.type) + ' condition in subsystem "' + self.subsystem.ljust(12) +'" : "' + self.name.ljust(30) +'" : (expected/real value) ' + str(self.value) + op + res + fail + elif (failed_only == False): + print self.peer.id[:4] + " " +self.peer.cfg + " " + str(self.type) + ' condition in subsystem "' + self.subsystem.ljust(12) +'" : "' + self.name.ljust(30) +'" : (expected/real value) ' + str(self.value) + op + res + fail + return self.fulfilled + +class Test: + def __init__(self, testname, verbose): + self.peers = list() + self.verbose = verbose; + self.name = testname; + srcdir = "../.." + gnunet_pyexpect_dir = os.path.join (srcdir, "contrib") + if gnunet_pyexpect_dir not in sys.path: + sys.path.append (gnunet_pyexpect_dir) + self.gnunetarm = '' + self.gnunetstatistics = '' + if os.name == 'posix': + self.gnunetarm = 'gnunet-arm' + self.gnunetstatistics = 'gnunet-statistics' + self.gnunetpeerinfo = 'gnunet-peerinfo' + elif os.name == 'nt': + self.gnunetarm = 'gnunet-arm.exe' + self.gnunetstatistics = 'gnunet-statistics.exe' + self.gnunetpeerinfo = 'gnunet-peerinfo.exe' + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True) + else: + shutil.rmtree ("/tmp/" + testname, True) + def add_peer (self, peer): + self.peers.append(peer) + def p (self, msg): + if (self.verbose == True): + print msg + +class Peer: + def __init__(self, test, cfg_file): + if (False == os.path.isfile(cfg_file)): + print ("Peer cfg " + cfg_file + ": FILE NOT FOUND") + self.id = "<NaN>" + self.test = test + self.started = False + self.cfg = cfg_file + def __del__(self): + if (self.started == True): + print 'ERROR! Peer using cfg ' + self.cfg + ' was not stopped' + ret = self.stop () + if (False == ret): + print 'ERROR! Peer using cfg ' + self.cfg + ' could not be stopped' + self.started = False + return ret + else: + return False + def start (self): + self.test.p ("Starting peer using cfg " + self.cfg) + try: + server = subprocess.Popen ([self.test.gnunetarm, '-sq', '-c', self.cfg]) + server.communicate () + except OSError: + print "Can not start peer" + self.started = False + return False + self.started = True; + test = '' + try: + server = pexpect () + server.spawn (None, [self.test.gnunetpeerinfo, '-c', self.cfg ,'-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + test = server.read("stdout", 1024) + except OSError: + print "Can not get peer identity" + test = (test.split('`')[1]) + self.id = test.split('\'')[0] + return True + def stop (self): + if (self.started == False): + return False + self.test.p ("Stopping peer using cfg " + self.cfg) + try: + server = subprocess.Popen ([self.test.gnunetarm, '-eq', '-c', self.cfg]) + server.communicate () + except OSError: + print "Can not stop peer" + return False + self.started = False + return True; + def get_statistics_value (self, subsystem, name): + server = pexpect () + server.spawn (None, [self.test.gnunetstatistics, '-c', self.cfg ,'-q','-n', name, '-s', subsystem ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + #server.expect ("stdout", re.compile (r"")) + test = server.read("stdout", 10240) + tests = test.partition('\n')[0] + if (tests.isdigit() == True): + return tests + else: + return -1 +
\ No newline at end of file diff --git a/src/integration-tests/hostkeys/0000-hostkey b/src/integration-tests/hostkeys/0000-hostkey Binary files differnew file mode 100644 index 0000000..c3c2123 --- /dev/null +++ b/src/integration-tests/hostkeys/0000-hostkey diff --git a/src/integration-tests/hostkeys/0001-hostkey b/src/integration-tests/hostkeys/0001-hostkey Binary files differnew file mode 100644 index 0000000..871fc90 --- /dev/null +++ b/src/integration-tests/hostkeys/0001-hostkey diff --git a/src/integration-tests/hostkeys/0002-hostkey b/src/integration-tests/hostkeys/0002-hostkey Binary files differnew file mode 100644 index 0000000..2ffb55f --- /dev/null +++ b/src/integration-tests/hostkeys/0002-hostkey diff --git a/src/integration-tests/hostkeys/0003-hostkey b/src/integration-tests/hostkeys/0003-hostkey Binary files differnew file mode 100644 index 0000000..13bc889 --- /dev/null +++ b/src/integration-tests/hostkeys/0003-hostkey diff --git a/src/integration-tests/hostkeys/0004-hostkey b/src/integration-tests/hostkeys/0004-hostkey Binary files differnew file mode 100644 index 0000000..a15a073 --- /dev/null +++ b/src/integration-tests/hostkeys/0004-hostkey diff --git a/src/integration-tests/hostkeys/0005-hostkey b/src/integration-tests/hostkeys/0005-hostkey Binary files differnew file mode 100644 index 0000000..4bcfffe --- /dev/null +++ b/src/integration-tests/hostkeys/0005-hostkey diff --git a/src/integration-tests/hostkeys/0006-hostkey b/src/integration-tests/hostkeys/0006-hostkey Binary files differnew file mode 100644 index 0000000..c595d91 --- /dev/null +++ b/src/integration-tests/hostkeys/0006-hostkey diff --git a/src/integration-tests/hostkeys/0007-hostkey b/src/integration-tests/hostkeys/0007-hostkey Binary files differnew file mode 100644 index 0000000..f7e9dbc --- /dev/null +++ b/src/integration-tests/hostkeys/0007-hostkey diff --git a/src/integration-tests/hostkeys/0008-hostkey b/src/integration-tests/hostkeys/0008-hostkey Binary files differnew file mode 100644 index 0000000..559a69c --- /dev/null +++ b/src/integration-tests/hostkeys/0008-hostkey diff --git a/src/integration-tests/hostkeys/0009-hostkey b/src/integration-tests/hostkeys/0009-hostkey Binary files differnew file mode 100644 index 0000000..7d8ce5e --- /dev/null +++ b/src/integration-tests/hostkeys/0009-hostkey diff --git a/src/integration-tests/test_integration_bootstrap_and_connect.py.in b/src/integration-tests/test_integration_bootstrap_and_connect.py.in new file mode 100755 index 0000000..32995d2 --- /dev/null +++ b/src/integration-tests/test_integration_bootstrap_and_connect.py.in @@ -0,0 +1,135 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +#definitions + +testname = "test_integration_bootstrap_and_connect" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + +def success_cont (check): + global success + success = True; + +def fail_cont (check): + global success + success = False; + check.evaluate(True) + +def check (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + + check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + +# +# Test execution +# + +def run (): + global success + global test + global server + global client + + success = False + test = Test ('test_integration_bootstrap_and_connect.py', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + client = Peer(test, './confs/c_no_nat_client.conf'); + + assert (True == server.start()); + assert (True == client.start()); + + if ((client.started == True) and (server.started == True)): + test.p ('Peers started, running check') + time.sleep(5) + check () + server.stop () + client.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return False + else: + return True + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) +
\ No newline at end of file diff --git a/src/integration-tests/test_integration_bootstrap_and_connect_and_disconnect.py.in b/src/integration-tests/test_integration_bootstrap_and_connect_and_disconnect.py.in new file mode 100755 index 0000000..b426182 --- /dev/null +++ b/src/integration-tests/test_integration_bootstrap_and_connect_and_disconnect.py.in @@ -0,0 +1,147 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +#definitions + +testname = "test_integration_bootstrap_and_connect" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + +def success_server_stop_cont (check): + global success + success = True; + +def success_cont (check): + server.stop() + + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',0)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',0)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',0)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',0)) + + check.run_blocking (check_timeout, success_server_stop_cont, fail_cont) + +def fail_cont (check): + global success + success = False; + check.evaluate(True) + +def check (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + + check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + +# +# Test execution +# + +def run (): + global success + global test + global server + global client + + success = False + test = Test ('test_integration_bootstrap_and_connect.py', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + client = Peer(test, './confs/c_no_nat_client.conf'); + + assert (True == server.start()); + assert (True == client.start()); + + if ((client.started == True) and (server.started == True)): + test.p ('Peers started, running check') + time.sleep(5) + check () + server.stop () + client.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return False + else: + return True + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) +
\ No newline at end of file diff --git a/src/integration-tests/test_integration_bootstrap_and_connect_and_disconnect_nat.py.in b/src/integration-tests/test_integration_bootstrap_and_connect_and_disconnect_nat.py.in new file mode 100755 index 0000000..f055e79 --- /dev/null +++ b/src/integration-tests/test_integration_bootstrap_and_connect_and_disconnect_nat.py.in @@ -0,0 +1,147 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +#definitions + +testname = "test_integration_bootstrap_and_connect" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + +def success_server_stop_cont (check): + global success + success = True; + +def success_cont (check): + server.stop() + + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',0)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',0)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',0)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',0)) + + check.run_blocking (check_timeout, success_server_stop_cont, fail_cont) + +def fail_cont (check): + global success + success = False; + check.evaluate(True) + +def check (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + + check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + +# +# Test execution +# + +def run (): + global success + global test + global server + global client + + success = False + test = Test ('test_integration_bootstrap_and_connect.py', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + client = Peer(test, './confs/c_nat_client.conf'); + + assert (True == server.start()); + assert (True == client.start()); + + if ((client.started == True) and (server.started == True)): + test.p ('Peers started, running check') + time.sleep(5) + check () + server.stop () + client.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return False + else: + return True + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) +
\ No newline at end of file diff --git a/src/integration-tests/test_integration_clique.py.in b/src/integration-tests/test_integration_clique.py.in new file mode 100755 index 0000000..49a2c59 --- /dev/null +++ b/src/integration-tests/test_integration_clique.py.in @@ -0,0 +1,197 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +# +# This test starts 3 peers and expects bootstrap and a connected clique +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +#definitions + +testname = "test_integration_clique" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client_2"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + shutil.rmtree ("/tmp/c_no_nat_client_2/", True) + + +def success_cont (check): + global success + success = True; + +def fail_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_disconnect_client (): + test.p ('Shutting down bootstrap client') + client.stop () + check = Check (test) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',0)) + check.add (StatisticsCondition (client2, 'core', '# entries in session map',0)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',0)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + + +def success_disconnect_server_cont (check): + check_disconnect_client () + + +def fail_disconnect_server_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_disconnect_server (): + test.p ('Shutting down bootstrap server') + server.stop () + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client2, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_disconnect_server_cont, fail_disconnect_server_cont) + + +def success_connect_cont (check): + check_disconnect_server () + + +def fail_connect_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_connect (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',2)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',2)) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (client2, 'core', '# entries in session map',2)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',2)) + + check.add (StatisticsCondition (server, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',2)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',2)) + + check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) + +# +# Test execution +# +def run (): + global success + global test + global server + global client + global client2 + + success = False + + test = Test ('test_integration_disconnect', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + server.start(); + + client = Peer(test, './confs/c_no_nat_client.conf'); + client.start(); + + client2 = Peer(test, './confs/c_no_nat_client_2.conf'); + client2.start(); + + if ((client.started == True) and (client2.started == True) and (server.started == True)): + test.p ('Peers started, running check') + check_connect () + + server.stop () + client.stop () + client2.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return False + else: + return True + + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + client2.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) + + diff --git a/src/integration-tests/test_integration_clique_nat.py.in b/src/integration-tests/test_integration_clique_nat.py.in new file mode 100755 index 0000000..e8f7719 --- /dev/null +++ b/src/integration-tests/test_integration_clique_nat.py.in @@ -0,0 +1,197 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +# +# This test starts 3 peers (1 bootstrap server, 1 not nat'ed peer, 1 nat'ed peer) +# and expects bootstrap and a connected clique +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +#definitions +testname = "test_integration_clique_nat" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_bootstrap_server"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_nat_client"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + shutil.rmtree ("/tmp/c_nat_client/", True) + + +def success_cont (check): + global success + success = True; + +def fail_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_disconnect_client (): + test.p ('Shutting down bootstrap client') + client.stop () + check = Check (test) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',0)) + check.add (StatisticsCondition (client2, 'core', '# entries in session map',0)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',0)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + + +def success_disconnect_server_cont (check): + check_disconnect_client () + + +def fail_disconnect_server_cont (check): + global success + success= False; + check.evaluate(False) + + +def check_disconnect_server (): + test.p ('Shutting down bootstrap server') + server.stop () + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client2, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_disconnect_server_cont, fail_disconnect_server_cont) + + +def success_connect_cont (check): + check_disconnect_server () + + +def fail_connect_cont (check): + global success + success= False; + check.evaluate(False) + + +def check_connect (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',2)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',2)) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (client2, 'core', '# entries in session map',2)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',2)) + + check.add (StatisticsCondition (server, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',2)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',2)) + + check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) + +# +# Test execution +# +def run (): + global success + global test + global server + global client + global client2 + + success = False + + test = Test ('test_integration_disconnect', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + server.start(); + + client = Peer(test, './confs/c_no_nat_client.conf'); + client.start(); + + client2 = Peer(test, './confs/c_nat_client.conf'); + client2.start(); + + if ((client.started == True) and (client2.started == True) and (server.started == True)): + test.p ('Peers started, running check') + check_connect () + + server.stop () + client.stop () + client2.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return False + else: + return True + + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + client2.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) + + diff --git a/src/integration-tests/test_integration_disconnect.py.in b/src/integration-tests/test_integration_disconnect.py.in new file mode 100755 index 0000000..5e137cf --- /dev/null +++ b/src/integration-tests/test_integration_disconnect.py.in @@ -0,0 +1,156 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server. When both peers are connected +# in transport, core, topology, fs, the server is shutdown +# +# Conditions for successful exit: +# Both peers have 0 connected peer in transport, core, topology, fs + +#definitions + +testname = "test_integration_disconnect" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_bootstrap_server"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + + +def success_disconnect_cont (check): + global success + success = True; + + +def fail_disconnect_cont (check): + global success + success = False; + check.evaluate(True) + + +def check_disconnect (): + test.p ('Shutting down bootstrap server') + server.stop () + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',0)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',0)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',0)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',0)) + check.run_blocking (check_timeout, success_disconnect_cont, fail_disconnect_cont) + + +def success_connect_cont (check): + check_disconnect () + + +def fail_connect_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_connect (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) + +# +# Test execution +# + +def run (): + global success + global test + global server + global client + + success = False + + test = Test ('test_integration_disconnect', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + server.start(); + + client = Peer(test, './confs/c_no_nat_client.conf'); + client.start(); + + + if ((client.started == True) and (server.started == True)): + test.p ('Peers started, running check') + check_connect () + + server.stop () + client.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return True + else: + return False + + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) +
\ No newline at end of file diff --git a/src/integration-tests/test_integration_restart.py.in b/src/integration-tests/test_integration_restart.py.in new file mode 100755 index 0000000..e2a72e7 --- /dev/null +++ b/src/integration-tests/test_integration_restart.py.in @@ -0,0 +1,171 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNUnet; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# +import sys +import os +import subprocess +import re +import shutil +import time +import pexpect +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +# +# This test tests if a fresh peer bootstraps from a hostlist server and then +# successfully connects to the server. When both peers are connected +# in transport, core, topology, fs, botth peers are shutdown and restarted +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs after restart + +#definitions + + +testname = "test_integration_restart" +verbose = False +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + + +def success_restart_cont (check): + global success + test.p ('Shutting down client & server') + server.stop () + client.stop () + success = True; + + +def fail_restart_cont (check): + global success + success = False; + check.evaluate(True) + + +def success_connect_cont (check): + test.p ('Shutting down client & server for restart') + server.stop () + client.stop () + + time.sleep(5) + + test.p ('Restarting client & server') + server.start () + client.start () + + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont) + + +def fail_connect_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_connect (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) + +# +# Test execution +# + +def run (): + global success + global test + global server + global client + + success = False + + test = Test ('test_integration_disconnect', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + server.start(); + + client = Peer(test, './confs/c_no_nat_client.conf'); + client.start(); + + + if ((client.started == True) and (server.started == True)): + test.p ('Peers started, running check') + check_connect () + + server.stop () + client.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return True + else: + return False + + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) +
\ No newline at end of file |