gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r35221 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r35221 - gnunet/src/ats
Date: Wed, 11 Feb 2015 17:17:21 +0100

Author: grothoff
Date: 2015-02-11 17:17:20 +0100 (Wed, 11 Feb 2015)
New Revision: 35221

Added:
   gnunet/src/ats/test_ats_api.c
   gnunet/src/ats/test_ats_api_mlp.conf
   gnunet/src/ats/test_ats_api_proportional.conf
   gnunet/src/ats/test_ats_api_ril.conf
   gnunet/src/ats/test_ats_lib.c
   gnunet/src/ats/test_ats_lib.h
Removed:
   gnunet/src/ats/test_ats_api_common.c
   gnunet/src/ats/test_ats_api_common.h
   gnunet/src/ats/test_ats_api_delayed_service_performance_list_all_addresses.c
   gnunet/src/ats/test_ats_api_delayed_service_performance_monitor.c
   gnunet/src/ats/test_ats_api_delayed_service_scheduling_add_address.c
   gnunet/src/ats/test_ats_api_performance_list_all_addresses.c
   gnunet/src/ats/test_ats_api_performance_list_all_addresses_active.c
   gnunet/src/ats/test_ats_api_performance_list_peer_addresses.c
   gnunet/src/ats/test_ats_api_performance_monitor.c
   gnunet/src/ats/test_ats_api_performance_monitor_initial_callback.c
   gnunet/src/ats/test_ats_api_scheduling_add_address.c
   gnunet/src/ats/test_ats_api_scheduling_add_address_duplicate.c
   gnunet/src/ats/test_ats_api_scheduling_add_address_inbound.c
   gnunet/src/ats/test_ats_api_scheduling_add_session.c
   gnunet/src/ats/test_ats_api_scheduling_destroy_address.c
   gnunet/src/ats/test_ats_api_scheduling_init.c
   gnunet/src/ats/test_ats_solver_add_address.c
   gnunet/src/ats/test_ats_solver_add_address_and_request.c
   gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c
   gnunet/src/ats/test_ats_solver_request_and_add_address.c
   gnunet/src/ats/test_ats_solver_request_and_delete_address.c
Modified:
   gnunet/src/ats/Makefile.am
   gnunet/src/ats/test_ats_mlp.conf
Log:
new testsuite, obsoleting (most of) the old one

Modified: gnunet/src/ats/Makefile.am
===================================================================
--- gnunet/src/ats/Makefile.am  2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/Makefile.am  2015-02-11 16:17:20 UTC (rev 35221)
@@ -18,23 +18,6 @@
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
 
-#noinst_PROGRAMS = \
-# gnunet-ats-solver-eval
-
-if HAVE_LIBGLPK
-  GN_LIBGLPK = -lglpk
-  GN_MLP_LIB = libgnunet_plugin_ats_mlp.la
-  GN_MLP_PERF = perf_ats_mlp
-  GN_MLP_ADD_ADDRESS = test_ats_solver_add_address_mlp
-  GN_MLP_ADD_REQUEST_ADDRESS = test_ats_solver_add_address_and_request_mlp
-  GN_MLP_ADD_REQUEST_ADDRESS_DELAYED = 
test_ats_solver_add_address_and_request_delayed_mlp
-  GN_MLP_REQUEST_ADD_ADDRESS = test_ats_solver_request_and_add_address_mlp
-  GN_MLP_REQUEST_DELETE_ADDRESS = 
test_ats_solver_request_and_delete_address_mlp
-  GN_MLP_PREFERENCES_ADDRESS = test_ats_solver_preferences_mlp
-  GN_MLP_ALTERNATIVE_DELETE_ADDRESS = 
test_ats_solver_alternative_after_delete_address_mlp
-  GN_MLP_SOLVER_PERF = perf_ats_solver_mlp
-endif
-
 lib_LTLIBRARIES = libgnunetats.la
 
 plugin_LTLIBRARIES = \
@@ -42,21 +25,10 @@
   $(GN_MLP_LIB) \
   libgnunet_plugin_ats_ril.la
 
-#gnunet_ats_solver_eval_SOURCES = \
-# gnunet-ats-solver-eval.c gnunet-ats-solver-eval.h \
-# gnunet-service-ats_addresses.c gnunet-service-ats_addresses.h \
-# gnunet-service-ats_plugins.c gnunet-service-ats_plugins.h \
-# gnunet-service-ats_connectivity.c gnunet-service-ats_connectivity.h \
-# gnunet-service-ats_feedback.c gnunet-service-ats_feedback.h \
-# gnunet-service-ats_performance.c gnunet-service-ats_performance.h \
-# gnunet-service-ats_reservations.c gnunet-service-ats_reservations.h \
-# gnunet-service-ats_scheduling.c gnunet-service-ats_scheduling.h \
-# gnunet-service-ats_normalization.c
-#gnunet_ats_solver_eval_LDADD = \
-# $(top_builddir)/src/util/libgnunetutil.la \
-# libgnunetats.la \
-# $(top_builddir)/src/statistics/libgnunetstatistics.la \
-# $(LTLIBINTL)
+if HAVE_LIBGLPK
+plugin_LTLIBRARIES += \
+  libgnunet_plugin_ats_mlp.la
+endif
 
 libgnunetats_la_SOURCES = \
   ats_api_connectivity.c \
@@ -90,7 +62,8 @@
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
   $(top_builddir)/src/util/libgnunetutil.la
 libgnunet_plugin_ats_mlp_la_LDFLAGS = \
-  $(GN_PLUGIN_LDFLAGS) $(GN_LIBGLPK)
+  $(GN_PLUGIN_LDFLAGS) \
+  -lglpk
 endif
 
 libgnunet_plugin_ats_ril_la_SOURCES = \
@@ -107,7 +80,7 @@
  gnunet-service-ats
 
 gnunet_service_ats_SOURCES = \
- gnunet-service-ats.c gnunet-service-ats.h\
+ gnunet-service-ats.c gnunet-service-ats.h \
  gnunet-service-ats_addresses.c gnunet-service-ats_addresses.h \
  gnunet-service-ats_connectivity.c gnunet-service-ats_connectivity.h \
  gnunet-service-ats_feedback.c gnunet-service-ats_feedback.h \
@@ -125,45 +98,13 @@
 
 if HAVE_TESTING
 TESTING_TESTS = \
- test_ats_api_scheduling_init \
- test_ats_api_scheduling_add_address \
- test_ats_api_scheduling_add_address_duplicate \
- test_ats_api_scheduling_add_address_inbound \
- test_ats_api_scheduling_destroy_address \
- test_ats_api_scheduling_add_session \
- test_ats_api_delayed_service_scheduling_add_address \
- test_ats_api_performance_list_all_addresses \
- test_ats_api_delayed_service_performance_list_all_addresses \
- test_ats_api_performance_list_peer_addresses \
- test_ats_api_performance_list_all_addresses_active \
- test_ats_api_performance_monitor \
- test_ats_api_delayed_service_performance_monitor \
- test_ats_api_performance_monitor_initial_callback \
- test_ats_solver_add_address_proportional \
- test_ats_solver_add_address_and_request_proportional \
- test_ats_solver_add_address_and_request_delayed_proportional\
- test_ats_solver_request_and_add_address_proportional \
- test_ats_solver_request_and_delete_address_proportional \
- test_ats_solver_alternative_after_delete_address_proportional \
- test_ats_solver_preferences_proportional \
- test_ats_solver_preferences_ril \
- $(GN_MLP_ADD_ADDRESS) \
- $(GN_MLP_ADD_REQUEST_ADDRESS) \
- $(GN_MLP_ADD_REQUEST_ADDRESS_DELAYED) \
- $(GN_MLP_REQUEST_ADD_ADDRESS) \
- $(GN_MLP_REQUEST_DELETE_ADDRESS) \
- $(GN_MLP_ALTERNATIVE_DELETE_ADDRESS) \
- $(GN_MLP_PREFERENCES_ADDRESS) \
- test_ats_solver_add_address_ril \
- test_ats_solver_add_address_and_request_ril \
-  test_ats_solver_add_address_and_request_delayed_ril \
- test_ats_solver_request_and_add_address_ril \
- test_ats_solver_request_and_delete_address_ril \
- test_ats_solver_alternative_after_delete_address_ril \
- perf_ats_solver_proportional \
- $(GN_MLP_SOLVER_PERF) \
- perf_ats_solver_ril
+ test_ats_api_proportional \
+ test_ats_api_ril
+if HAVE_LIBGLPK
+TESTING_TESTS += \
+ test_ats_api_mlp
 endif
+endif
 
 check_PROGRAMS = \
  $(TESTING_TESTS)
@@ -173,438 +114,36 @@
 TESTS = $(check_PROGRAMS)
 endif
 
-# scheduling API tests
-
-test_ats_api_scheduling_init_SOURCES = \
- test_ats_api_scheduling_init.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_api_scheduling_init_LDADD = \
+test_ats_api_proportional_SOURCES = \
+ test_ats_api.c \
+ test_ats_lib.c test_ats_lib.h
+test_ats_api_proportional_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_scheduling_add_address_SOURCES = \
- test_ats_api_scheduling_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_api_scheduling_add_address_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_delayed_service_scheduling_add_address_SOURCES = \
- test_ats_api_delayed_service_scheduling_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_api_delayed_service_scheduling_add_address_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_scheduling_add_address_inbound_SOURCES = \
- test_ats_api_scheduling_add_address_inbound.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_api_scheduling_add_address_inbound_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_scheduling_add_address_duplicate_SOURCES = \
- test_ats_api_scheduling_add_address_duplicate.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_api_scheduling_add_address_duplicate_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_scheduling_destroy_address_SOURCES = \
- test_ats_api_scheduling_destroy_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_api_scheduling_destroy_address_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_scheduling_add_session_SOURCES = \
- test_ats_api_scheduling_add_session.c test_ats_api_common.c
-test_ats_api_scheduling_add_session_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-# performance API tests
-
-test_ats_api_performance_list_all_addresses_SOURCES = \
- test_ats_api_performance_list_all_addresses.c
-test_ats_api_performance_list_all_addresses_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
   $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_delayed_service_performance_list_all_addresses_SOURCES = \
- test_ats_api_delayed_service_performance_list_all_addresses.c
-test_ats_api_delayed_service_performance_list_all_addresses_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
+  libgnunetats.la
 
-test_ats_api_performance_list_peer_addresses_SOURCES = \
- test_ats_api_performance_list_peer_addresses.c
-test_ats_api_performance_list_peer_addresses_LDADD = \
+test_ats_api_ril_SOURCES = \
+ test_ats_api.c \
+ test_ats_lib.c test_ats_lib.h
+test_ats_api_ril_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
   $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_performance_list_all_addresses_active_SOURCES = \
- test_ats_api_performance_list_all_addresses_active.c
-test_ats_api_performance_list_all_addresses_active_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
+  libgnunetats.la
 
-test_ats_api_performance_monitor_SOURCES = \
- test_ats_api_performance_monitor.c
-test_ats_api_performance_monitor_LDADD = \
+test_ats_api_mlp_SOURCES = \
+ test_ats_api.c \
+ test_ats_lib.c test_ats_lib.h
+test_ats_api_mlp_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
   $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_api_delayed_service_performance_monitor_SOURCES = \
- test_ats_api_delayed_service_performance_monitor.c
-test_ats_api_delayed_service_performance_monitor_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-
-
-test_ats_api_performance_monitor_initial_callback_SOURCES = \
- test_ats_api_performance_monitor_initial_callback.c
-test_ats_api_performance_monitor_initial_callback_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-# solver tests
-test_ats_solver_add_address_proportional_SOURCES = \
- test_ats_solver_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-if HAVE_LIBGLPK
-test_ats_solver_add_address_mlp_SOURCES = \
- test_ats_solver_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-endif
-
-test_ats_solver_add_address_ril_SOURCES = \
- test_ats_solver_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_solver_add_address_and_request_proportional_SOURCES = \
- test_ats_solver_add_address_and_request.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_and_request_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_solver_add_address_and_request_delayed_proportional_SOURCES = \
- test_ats_solver_add_address_and_request.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_and_request_delayed_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_solver_add_address_and_request_delayed_ril_SOURCES = \
- test_ats_solver_add_address_and_request.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_and_request_delayed_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-if HAVE_LIBGLPK
-test_ats_solver_add_address_and_request_mlp_SOURCES = \
- test_ats_solver_add_address_and_request.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_and_request_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-endif
-
-test_ats_solver_add_address_and_request_delayed_mlp_SOURCES = \
- test_ats_solver_add_address_and_request.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_and_request_delayed_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_solver_add_address_and_request_ril_SOURCES = \
- test_ats_solver_add_address_and_request.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_add_address_and_request_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-
-test_ats_solver_request_and_add_address_proportional_SOURCES = \
- test_ats_solver_request_and_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_request_and_add_address_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-if HAVE_LIBGLPK
-test_ats_solver_request_and_add_address_mlp_SOURCES = \
- test_ats_solver_request_and_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_request_and_add_address_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-endif
-
-test_ats_solver_request_and_add_address_ril_SOURCES = \
- test_ats_solver_request_and_add_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_request_and_add_address_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-
-test_ats_solver_request_and_delete_address_proportional_SOURCES = \
- test_ats_solver_request_and_delete_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_request_and_delete_address_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-if HAVE_LIBGLPK
-test_ats_solver_request_and_delete_address_mlp_SOURCES = \
- test_ats_solver_request_and_delete_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_request_and_delete_address_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-endif
-
-test_ats_solver_request_and_delete_address_ril_SOURCES = \
- test_ats_solver_request_and_delete_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_request_and_delete_address_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-
-test_ats_solver_alternative_after_delete_address_proportional_SOURCES = \
- test_ats_solver_alternative_after_delete_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_alternative_after_delete_address_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_solver_preferences_proportional_SOURCES = \
- test_ats_solver_preferences.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_preferences_proportional_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-if HAVE_LIBGLPK
-test_ats_solver_alternative_after_delete_address_mlp_SOURCES = \
- test_ats_solver_alternative_after_delete_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_alternative_after_delete_address_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-test_ats_solver_preferences_mlp_SOURCES = \
- test_ats_solver_preferences.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_preferences_mlp_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-endif
-
-test_ats_solver_alternative_after_delete_address_ril_SOURCES = \
- test_ats_solver_alternative_after_delete_address.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_alternative_after_delete_address_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
-#perf_ats_mlp_SOURCES = \
-#  $(GN_MLP_SRC) perf_ats_mlp.c test_ats_api_common.c 
gnunet-service-ats_normalization.c
-#perf_ats_mlp_LDADD = \
-#  $(GN_LIBGLPK) \
-#  $(top_builddir)/src/util/libgnunetutil.la \
-#  $(top_builddir)/src/statistics/libgnunetstatistics.la \
-#  libgnunetats.la
-
-perf_ats_solver_mlp_SOURCES = \
-  perf_ats_solver.c \
-  test_ats_api_common.c \
-  gnunet-service-ats_normalization.c \
-  gnunet-service-ats_addresses.c gnunet-service-ats_addresses.h \
-  gnunet-service-ats_connectivity.c gnunet-service-ats_connectivity.h \
-  gnunet-service-ats_performance.c gnunet-service-ats_performance.h \
-  gnunet-service-ats_preferences.c gnunet-service-ats_preferences.h \
-  gnunet-service-ats_scheduling.c gnunet-service-ats_scheduling.h \
-  gnunet-service-ats_plugins.c gnunet-service-ats_plugins.h \
-  gnunet-service-ats_reservations.c gnunet-service-ats_reservations.h
-
-perf_ats_solver_mlp_LDADD = \
-  $(GN_LIBGLPK) \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la \
   libgnunetats.la
 
-perf_ats_solver_proportional_SOURCES = \
-  perf_ats_solver.c \
-  test_ats_api_common.c \
-  gnunet-service-ats_normalization.c \
-  gnunet-service-ats_addresses.c gnunet-service-ats_addresses.h \
-  gnunet-service-ats_connectivity.c gnunet-service-ats_connectivity.h \
-  gnunet-service-ats_preferences.c gnunet-service-ats_preferences.h \
-  gnunet-service-ats_performance.c gnunet-service-ats_performance.h \
-  gnunet-service-ats_scheduling.c gnunet-service-ats_scheduling.h \
-  gnunet-service-ats_plugins.c gnunet-service-ats_plugins.h \
-  gnunet-service-ats_reservations.c gnunet-service-ats_reservations.h
-
-perf_ats_solver_proportional_LDADD = \
-  $(GN_LIBGLPK) \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la \
-  libgnunetats.la
-
-perf_ats_solver_ril_SOURCES = \
-  perf_ats_solver.c \
-  test_ats_api_common.c \
-  gnunet-service-ats_normalization.c \
-  gnunet-service-ats_addresses.c gnunet-service-ats_addresses.h \
-  gnunet-service-ats_connectivity.c gnunet-service-ats_connectivity.h \
-  gnunet-service-ats_preferences.c gnunet-service-ats_preferences.h \
-  gnunet-service-ats_performance.c gnunet-service-ats_performance.h \
-  gnunet-service-ats_scheduling.c gnunet-service-ats_scheduling.h \
-  gnunet-service-ats_plugins.c gnunet-service-ats_plugins.h \
-  gnunet-service-ats_reservations.c gnunet-service-ats_reservations.h
-
-perf_ats_solver_ril_LDADD = \
-  $(GN_LIBGLPK) \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la \
-  libgnunetats.la
-
-test_ats_solver_preferences_ril_SOURCES = \
- test_ats_solver_preferences.c \
- test_ats_api_common.c test_ats_api_common.h
-test_ats_solver_preferences_ril_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/hello/libgnunethello.la \
-  libgnunetats.la \
-       $(top_builddir)/src/statistics/libgnunetstatistics.la
-
 EXTRA_DIST = \
   ats.h \
   test_delay \
-  test_ats_api.conf \
-  test_ats_api_delayed.conf \
-  test_ats_mlp.conf \
-  test_ats_solver_default.conf \
-  test_ats_solver_proportional.conf \
-  test_ats_solver_proportional.conf \
-  test_ats_solver_mlp.conf \
-  test_ats_solver_delayed_mlp.conf \
-  test_ats_solver_ril.conf \
-  test_ats_solver_delayed_ril.conf \
-  perf_ats_solver_mlp.conf \
-  test_ats_solver_delayed_mlp.conf \
-  perf_ats_solver_proportional.conf \
-  perf_ats_solver_ril.conf \
-  perf_ats_solver.conf
+  test_ats_api_mlp.conf \
+  test_ats_api_ril.conf \
+  test_ats_api_proportional.conf

Added: gnunet/src/ats/test_ats_api.c
===================================================================
--- gnunet/src/ats/test_ats_api.c                               (rev 0)
+++ gnunet/src/ats/test_ats_api.c       2015-02-11 16:17:20 UTC (rev 35221)
@@ -0,0 +1,243 @@
+/*
+     This file is part of GNUnet.
+     Copyright (C) 2010-2015 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 3, 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.
+*/
+/**
+ * @file ats/test_ats_api.c
+ * @brief test ATS
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "test_ats_lib.h"
+
+/**
+ * Global timeout for the testcase.
+ */
+#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 3)
+
+/**
+ * Definition of the test as a sequence of commands.
+ */
+static struct Command test_commands[] = {
+  {
+    .code = CMD_ADD_ADDRESS,
+    .label = "add-address-0-0",
+    .details.add_address = {
+      .pid = 0,
+      .addr_num = 0,
+      .session = 0,
+      .properties = {
+        .scope = GNUNET_ATS_NET_LAN
+      }
+    }
+  },
+  /* adding same address again should fail */
+  {
+    .code = CMD_ADD_ADDRESS,
+    .label = "add-address-0-0:FAIL",
+    .details.add_address = {
+      .pid = 0,
+      .addr_num = 0,
+      .session = 0,
+      .properties = {
+        .scope = GNUNET_ATS_NET_LAN
+      },
+      .expect_fail = 1
+    }
+  },
+  /* some solver still require explicit start */
+  {
+    .code = CMD_REQUEST_CONNECTION_START,
+    .label = "request-0",
+    .details.request_connection_start = {
+      .pid = 0
+    }
+  },
+  /* check we got an address */
+  {
+    .code = CMD_AWAIT_ADDRESS_SUGGESTION,
+    .details.await_address_suggestion = {
+      .add_label = "add-address-0-0"
+    }
+  },
+  /* check monitor also got the address */
+  {
+    .code = CMD_AWAIT_ADDRESS_INFORMATION,
+    .details.await_address_information = {
+      .add_label = "add-address-0-0"
+    }
+  },
+  /* test session API */
+  {
+    .code = CMD_ADD_SESSION,
+    .label = "add-session-0-0-1",
+    .details.add_session = {
+      .add_label ="add-address-0-0",
+      .session = 1
+    }
+  },
+  {
+    .code = CMD_DEL_SESSION,
+    .details.del_session = {
+      .add_session_label = "add-session-0-0-1",
+    }
+  },
+  /* test preference API */
+  {
+    .code = CMD_CHANGE_PREFERENCE,
+    .details.change_preference = {
+      .pid = 0
+      /* FIXME: preference details */
+    }
+  },
+  {
+    .code = CMD_PROVIDE_FEEDBACK,
+    .details.provide_feedback = {
+      .pid = 0,
+      .scope = { 50LL }
+      /* FIXME: preference details */
+    }
+  },
+  /* test sanity check address listing */
+  {
+    .code = CMD_LIST_ADDRESSES,
+    .details.list_addresses = {
+      .pid = 0,
+      .all = 1,
+      .min_calls = 2, // ?
+      .max_calls = 2,
+      .min_active_calls = 1,
+      .max_active_calls = 1
+    }
+  },
+  /* remove address testing */
+  {
+    .code = CMD_DEL_ADDRESS,
+    .details.del_address = {
+      .add_label = "add-address-0-0"
+    }
+  },
+  /* check we got disconnected */
+  {
+    .code = CMD_AWAIT_DISCONNECT_SUGGESTION,
+    .details.await_disconnect_suggestion = {
+      .pid = 0
+    }
+  },
+  /* just for symmetry, also stop asking for the connection */
+  {
+    .code = CMD_REQUEST_CONNECTION_STOP,
+    .details.request_connection_stop = {
+      .connect_label = "request-0",
+    }
+  },
+  /* add address again */
+  {
+    .code = CMD_ADD_ADDRESS,
+    .label = "add-address-0-0:1",
+    .details.add_address = {
+      .pid = 0,
+      .addr_num = 0,
+      .session = 0,
+      .properties = {
+        .scope = GNUNET_ATS_NET_LAN
+      }
+    }
+  },
+  /* some solver still require explicit start */
+  {
+    .code = CMD_REQUEST_CONNECTION_START,
+    .label = "request-0",
+    .details.request_connection_start = {
+      .pid = 0
+    }
+  },
+  /* check we got an address */
+  {
+    .code = CMD_AWAIT_ADDRESS_SUGGESTION,
+    .details.await_address_suggestion = {
+      .add_label = "add-address-0-0:1"
+    }
+  },
+  /* add alternative address */
+  {
+    .code = CMD_ADD_ADDRESS,
+    .label = "add-address-0-1",
+    .details.add_address = {
+      .pid = 0,
+      .addr_num = 1,
+      .session = 0,
+      .properties = {
+        .scope = GNUNET_ATS_NET_LAN
+      }
+    }
+  },
+  /* remove original address */
+  {
+    .code = CMD_DEL_ADDRESS,
+    .details.del_address = {
+      .add_label = "add-address-0-0:1"
+    }
+  },
+  /* check we switched to alternative address */
+  {
+    .code = CMD_AWAIT_ADDRESS_SUGGESTION,
+    .details.await_address_suggestion = {
+      .add_label = "add-address-0-1"
+    }
+  },
+  /* remove alternative address */
+  {
+    .code = CMD_DEL_ADDRESS,
+    .details.del_address = {
+      .add_label = "add-address-0-1"
+    }
+  },
+  /* check we got disconnected */
+  {
+    .code = CMD_AWAIT_DISCONNECT_SUGGESTION,
+    .details.await_disconnect_suggestion = {
+      .pid = 0
+    }
+  },
+  /* just for symmetry, also stop asking for the connection */
+  {
+    .code = CMD_REQUEST_CONNECTION_STOP,
+    .details.request_connection_stop = {
+      .connect_label = "request-0",
+    }
+  },
+  /* Test ends successfully */
+  {
+    .code = CMD_END_PASS
+  }
+};
+
+
+int
+main (int argc,
+      char *argv[])
+{
+  return TEST_ATS_run (argc,
+                       argv,
+                       test_commands,
+                       TIMEOUT);
+}
+
+
+/* end of file test_ats_api.c */

Deleted: gnunet/src/ats/test_ats_api_common.c
===================================================================
--- gnunet/src/ats/test_ats_api_common.c        2015-02-11 16:16:14 UTC (rev 
35220)
+++ gnunet/src/ats/test_ats_api_common.c        2015-02-11 16:17:20 UTC (rev 
35221)
@@ -1,302 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_common.c
- * @brief shared functions for ats test
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-
-#include "test_ats_api_common.h"
-#define BIG_M_STRING "unlimited"
-
-
-void
-create_test_address (struct Test_Address *dest, char * plugin, void *session, 
void *addr, size_t addrlen)
-{
-
-  dest->plugin = GNUNET_strdup (plugin);
-  dest->session = session;
-  if (addrlen > 0)
-  {
-    dest->addr = GNUNET_malloc (addrlen);
-    memcpy (dest->addr, addr, addrlen);
-  }
-  else
-      dest->addr = NULL;
-  dest->addr_len = addrlen;
-}
-
-
-void
-free_test_address (struct Test_Address *dest)
-{
-  GNUNET_free_non_null (dest->plugin);
-  dest->plugin = NULL;
-  GNUNET_free_non_null (dest->addr);
-  dest->addr = NULL;
-}
-
-
-int
-compare_addresses (const struct GNUNET_HELLO_Address *address1,
-                   void *session1,
-                   const struct GNUNET_HELLO_Address *address2,
-                   void *session2)
-{
-  if (0 !=
-      memcmp (&address1->peer,
-              &address2->peer,
-              sizeof (struct GNUNET_PeerIdentity)))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Suggestion with invalid peer id'\n");
-    return GNUNET_SYSERR;
-  }
-  if (0 != strcmp (address1->transport_name, address2->transport_name))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Suggestion with invalid plugin'\n");
-    return GNUNET_SYSERR;
-  }
-  if (address1->address_length != address2->address_length)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Suggestion with invalid address length\n");
-    return GNUNET_SYSERR;
-  }
-  if (0 != memcmp (address1->address, address2->address, 
address2->address_length))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Suggestion with invalid address\n");
-    return GNUNET_SYSERR;
-  }
-  if (session1 != session2)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Suggestion with invalid session1 %p vs session2 %p'\n",
-                session1, session2);
-    return GNUNET_SYSERR;
-  }
-  return GNUNET_OK;
-}
-
-
-int
-compare_ats (const struct GNUNET_ATS_Information *ats_is, uint32_t 
ats_count_is,
-             const struct GNUNET_ATS_Information *ats_should, uint32_t 
ats_count_should)
-{
-  unsigned int c_o;
-  unsigned int c_i;
-  uint32_t type1;
-  uint32_t type2;
-  uint32_t val1;
-  uint32_t val2;
-  int res = GNUNET_OK;
-
-  for (c_o = 0; c_o < ats_count_is; c_o++)
-  {
-    for (c_i = 0; c_i < ats_count_should; c_i++)
-    {
-        type1 = ntohl(ats_is[c_o].type);
-        type2 = ntohl(ats_should[c_i].type);
-        if (type1 == type2)
-        {
-            GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                        "ATS type `%s'\n",
-                        GNUNET_ATS_print_property_type (type1));
-            val1 = ntohl(ats_is[c_o].value);
-            val2 = ntohl(ats_should[c_i].value);
-            if (val1 != val2)
-            {
-                GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                            "ATS value `%s' not equal: %u != %u\n",
-                            GNUNET_ATS_print_property_type (type1),
-                            val1, val2);
-                res = GNUNET_SYSERR;
-            }
-            else
-            {
-              GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                          "ATS value `%s' equal: %u == %u\n",
-                          GNUNET_ATS_print_property_type (type1),
-                          val1, val2);
-            }
-        }
-    }
-  }
-  return res;
-}
-
-
-/**
- * Load quotas for networks from configuration
- *
- * @param cfg configuration handle
- * @param out_dest where to write outbound quotas
- * @param in_dest where to write inbound quotas
- * @param dest_length length of inbound and outbound arrays
- * @return number of networks loaded
- */
-unsigned int
-load_quotas (const struct GNUNET_CONFIGURATION_Handle *cfg,
-                                                unsigned long long *out_dest,
-                                                unsigned long long *in_dest,
-                                                int dest_length)
-{
-  char *entry_in = NULL;
-  char *entry_out = NULL;
-  char *quota_out_str;
-  char *quota_in_str;
-  int c;
-  int res;
-
-  for (c = 0; (c < GNUNET_ATS_NetworkTypeCount) && (c < dest_length); c++)
-  {
-    in_dest[c] = 0;
-    out_dest[c] = 0;
-    GNUNET_asprintf (&entry_out,
-                     "%s_QUOTA_OUT",
-                     GNUNET_ATS_print_network_type (c));
-    GNUNET_asprintf (&entry_in,
-                     "%s_QUOTA_IN",
-                     GNUNET_ATS_print_network_type (c));
-
-    /* quota out */
-    if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string(cfg, "ats", 
entry_out, &quota_out_str))
-    {
-      res = GNUNET_NO;
-      if (0 == strcmp(quota_out_str, BIG_M_STRING))
-      {
-        out_dest[c] = GNUNET_ATS_MaxBandwidth;
-        res = GNUNET_YES;
-      }
-      if ((GNUNET_NO == res) && (GNUNET_OK == 
GNUNET_STRINGS_fancy_size_to_bytes (quota_out_str, &out_dest[c])))
-        res = GNUNET_YES;
-      if ((GNUNET_NO == res) && (GNUNET_OK == 
GNUNET_CONFIGURATION_get_value_number (cfg, "ats", entry_out,  &out_dest[c])))
-         res = GNUNET_YES;
-
-      if (GNUNET_NO == res)
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                    _("Could not load quota for network `%s':  `%s', assigning 
default bandwidth %llu\n"),
-                    GNUNET_ATS_print_network_type (c),
-                    quota_out_str,
-                    GNUNET_ATS_DefaultBandwidth);
-          out_dest[c] = GNUNET_ATS_DefaultBandwidth;
-      }
-      else
-      {
-          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                      "Outbound quota configure for network `%s' is %llu\n",
-                      GNUNET_ATS_print_network_type (c),
-                      out_dest[c]);
-      }
-      GNUNET_free (quota_out_str);
-    }
-    else
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  _("No outbound quota configured for network `%s', assigning 
default bandwidth %llu\n"),
-                  GNUNET_ATS_print_network_type (c),
-                  GNUNET_ATS_DefaultBandwidth);
-      out_dest[c] = GNUNET_ATS_DefaultBandwidth;
-    }
-
-    /* quota in */
-    if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string(cfg, "ats", 
entry_in, &quota_in_str))
-    {
-      res = GNUNET_NO;
-      if (0 == strcmp(quota_in_str, BIG_M_STRING))
-      {
-        in_dest[c] = GNUNET_ATS_MaxBandwidth;
-        res = GNUNET_YES;
-      }
-      if ((GNUNET_NO == res) && (GNUNET_OK == 
GNUNET_STRINGS_fancy_size_to_bytes (quota_in_str, &in_dest[c])))
-        res = GNUNET_YES;
-      if ((GNUNET_NO == res) && (GNUNET_OK == 
GNUNET_CONFIGURATION_get_value_number (cfg, "ats", entry_in,  &in_dest[c])))
-         res = GNUNET_YES;
-
-      if (GNUNET_NO == res)
-      {
-          GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                      _("Could not load quota for network `%s':  `%s', 
assigning default bandwidth %llu\n"),
-                      GNUNET_ATS_print_network_type (c),
-                      quota_in_str,
-                      GNUNET_ATS_DefaultBandwidth);
-          in_dest[c] = GNUNET_ATS_DefaultBandwidth;
-      }
-      else
-      {
-          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                      "Inbound quota configured for network `%s' is %llu\n",
-                      GNUNET_ATS_print_network_type (c),
-                      in_dest[c]);
-      }
-      GNUNET_free (quota_in_str);
-    }
-    else
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  _("No outbound quota configure for network `%s', assigning 
default bandwidth %llu\n"),
-                  GNUNET_ATS_print_network_type (c),
-                  GNUNET_ATS_DefaultBandwidth);
-      out_dest[c] = GNUNET_ATS_DefaultBandwidth;
-    }
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Loaded quota for network `%s' (in/out): %llu %llu\n",
-                GNUNET_ATS_print_network_type (c),
-                in_dest[c],
-                out_dest[c]);
-    GNUNET_free (entry_out);
-    GNUNET_free (entry_in);
-  }
-  return GNUNET_ATS_NetworkTypeCount;
-}
-
-/**
- * Create a ATS_address with the given information
- * @param peer peer
- * @param plugin_name plugin
- * @param plugin_addr address
- * @param plugin_addr_len address length
- * @param session_id session
- * @return the ATS_Address
- */
-struct ATS_Address *
-create_address (const struct GNUNET_PeerIdentity *peer,
-                const char *plugin_name,
-                const void *plugin_addr, size_t plugin_addr_len,
-                uint32_t session_id)
-{
-  struct ATS_Address *aa = NULL;
-
-  aa = GNUNET_malloc (sizeof (struct ATS_Address) + plugin_addr_len + strlen 
(plugin_name) + 1);
-  aa->peer = *peer;
-  aa->addr_len = plugin_addr_len;
-  aa->addr = &aa[1];
-  aa->plugin = (char *) &aa[1] + plugin_addr_len;
-  memcpy (&aa[1], plugin_addr, plugin_addr_len);
-  memcpy (aa->plugin, plugin_name, strlen (plugin_name) + 1);
-  aa->session_id = session_id;
-  return aa;
-}
-
-/* end of file test_ats_api_common.c */

Deleted: gnunet/src/ats/test_ats_api_common.h
===================================================================
--- gnunet/src/ats/test_ats_api_common.h        2015-02-11 16:16:14 UTC (rev 
35220)
+++ gnunet/src/ats/test_ats_api_common.h        2015-02-11 16:17:20 UTC (rev 
35221)
@@ -1,90 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_common.h
- * @brief shared definitions for ats testcases
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet-service-ats_addresses.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
-
-struct Test_Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Properties properties;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Test_Address *addr;
-
-  unsigned long long bw_out_assigned;
-
-  unsigned long long bw_in_assigned;
-};
-
-void
-free_test_address (struct Test_Address *dest);
-
-void
-create_test_address (struct Test_Address *dest, char * plugin, void *session, 
void *addr, size_t addrlen);
-
-
-int
-compare_addresses (const struct GNUNET_HELLO_Address *address1, void *session1,
-                   const struct GNUNET_HELLO_Address *address2, void 
*session2);
-
-
-struct ATS_Address *
-create_address (const struct GNUNET_PeerIdentity *peer,
-                const char *plugin_name,
-                const void *plugin_addr, size_t plugin_addr_len,
-                uint32_t session_id);
-
-/**
- * Load quotas for networks from configuration
- *
- * @param cfg configuration handle
- * @param out_dest where to write outbound quotas
- * @param in_dest where to write inbound quotas
- * @param dest_length length of inbound and outbound arrays
- * @return number of networks loaded
- */
-unsigned int
-load_quotas (const struct GNUNET_CONFIGURATION_Handle *cfg,
-                                                unsigned long long *out_dest,
-                                                unsigned long long *in_dest,
-                                                int dest_length);
-
-/* end of file test_ats_api_common.h */

Deleted: 
gnunet/src/ats/test_ats_api_delayed_service_performance_list_all_addresses.c
===================================================================
--- 
gnunet/src/ats/test_ats_api_delayed_service_performance_list_all_addresses.c    
    2015-02-11 16:16:14 UTC (rev 35220)
+++ 
gnunet/src/ats/test_ats_api_delayed_service_performance_list_all_addresses.c    
    2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,303 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_delayed_service_performance_list_all_addresses.c
- * @brief test performance API's address listing feature with a delayed 
service startup
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-struct GNUNET_ATS_AddressListHandle* phal;
-
-static int ret;
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-struct GNUNET_HELLO_Address p0_ha[2];
-struct GNUNET_HELLO_Address p1_ha[2];
-struct GNUNET_HELLO_Address *s_ha[2];
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-            const struct GNUNET_HELLO_Address *address,
-            int address_active,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-            const struct GNUNET_ATS_Information *ats,
-            uint32_t ats_count)
-{
-  static int counter = 0;
-
-  if (NULL == address)
-  {
-    phal = 0;
-    if (4 == counter)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-      GNUNET_SCHEDULER_add_now (end, NULL);
-    }
-    else
-    {
-      GNUNET_break (0);
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-    return;
-  }
-  counter ++;
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "All addresses added, connecting to performance\n");
-    if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, NULL, NULL)))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-          "Failed to connect to performance API\n");
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-    phal = GNUNET_ATS_performance_list_addresses (perf_ats, NULL, GNUNET_YES, 
&ats_perf_cb, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (phal != NULL )
-  {
-    GNUNET_ATS_performance_list_addresses_cancel (phal);
-    phal = NULL;
-  }
-
-  if (perf_ats != NULL )
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-
-  GNUNET_free_non_null(p0_addresses[0].addr);
-  GNUNET_free_non_null(p0_addresses[1].addr);
-  GNUNET_free_non_null(p1_addresses[0].addr);
-  GNUNET_free_non_null(p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-
-
-static void
-run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
-    struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
-      GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 1: `%s'\n",
-      GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  if (0
-      != GNUNET_TESTING_peer_run ("test_ats_api_performance",
-          "test_ats_api_delayed.conf", &run, NULL ))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_delayed_service_performance_list_all_addresses.c */

Deleted: gnunet/src/ats/test_ats_api_delayed_service_performance_monitor.c
===================================================================
--- gnunet/src/ats/test_ats_api_delayed_service_performance_monitor.c   
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_delayed_service_performance_monitor.c   
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,305 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_delayed_service_performance_monitor.c
- * @brief test performance API's address monitor feature with a delayed service
- *  start up
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
-#define WAIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-
-static int ret;
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-static struct GNUNET_HELLO_Address p0_ha[2];
-static struct GNUNET_HELLO_Address p1_ha[2];
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-            const struct GNUNET_HELLO_Address *address,
-            int address_active,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-            const struct GNUNET_ATS_Information *ats,
-            uint32_t ats_count)
-{
-  static int peer0 = GNUNET_NO;
-  static int peer1 = GNUNET_NO;
-  static int done = GNUNET_NO;
-
-  if (NULL == address)
-    return;
-
-  if ((GNUNET_NO == peer0) && (0 == memcmp (address, &p[0].id, sizeof 
(p[0].id))))
-  {
-    peer0 = GNUNET_YES;
-  }
-  if ((GNUNET_NO == peer0) && (0 == memcmp (address, &p[1].id, sizeof 
(p[1].id))))
-  {
-    peer1 = GNUNET_YES;
-  }
-  if ((peer0 == GNUNET_YES) && (peer1 = GNUNET_YES) && (GNUNET_NO == done))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "Done\n");
-    done = GNUNET_YES;
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-
-  }
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "All addresses added\n");
-  }
-
-  return GNUNET_OK;
-
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (NULL != perf_ats)
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-
-  GNUNET_free_non_null(p0_addresses[0].addr);
-  GNUNET_free_non_null(p0_addresses[1].addr);
-  GNUNET_free_non_null(p1_addresses[0].addr);
-  GNUNET_free_non_null(p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-static void
-run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
-    struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, &ats_perf_cb, 
NULL)))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        "Failed to connect to performance API\n");
-    GNUNET_SCHEDULER_add_now (end_badly, NULL);
-  }
-
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
-      GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 1: `%s'\n",
-      GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL );
-  if (sched_ats == NULL )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  if (0
-      != GNUNET_TESTING_peer_run ("test_ats_api_performance",
-          "test_ats_api_delayed.conf", &run, NULL ))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_delayed_service_performance_monitor.c */

Deleted: gnunet/src/ats/test_ats_api_delayed_service_scheduling_add_address.c
===================================================================
--- gnunet/src/ats/test_ats_api_delayed_service_scheduling_add_address.c        
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_delayed_service_scheduling_add_address.c        
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,240 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_delayed_service_scheduling_add_address.c
- * @brief test case to ensure messages are transmitted to ATS service when
- *  service startup is delayed
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-  if (1 == value)
-  {
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-end (void *cls,
-     const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-got_initial_value (void *cls, int success)
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got initial value\n");
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats,
-                          &test_hello_address,
-                          test_session,
-                          test_ats_info, test_ats_count);
-}
-
-
-static int
-dummy_stat (void *cls, const char *subsystem, const char *name, uint64_t value,
-            int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got dummy stat %s%s:%s = %llu\n",
-              is_persistent ? "!" : " ", subsystem, name, value);
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  GNUNET_STATISTICS_get (stats, "ats", "# addresses", TIMEOUT,
-                                       &got_initial_value, &dummy_stat,
-                                       GNUNET_CONFIGURATION_dup (cfg));
-
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                   "test_ats_api_delayed.conf",
-                                   &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_delayed_service_scheduling_add_address.c */

Added: gnunet/src/ats/test_ats_api_mlp.conf
===================================================================
--- gnunet/src/ats/test_ats_api_mlp.conf                                (rev 0)
+++ gnunet/src/ats/test_ats_api_mlp.conf        2015-02-11 16:17:20 UTC (rev 
35221)
@@ -0,0 +1,45 @@
address@hidden@ ../../contrib/no_forcestart.conf
+
+[PATHS]
+GNUNET_TEST_HOME = /tmp/test-ats-mlp/
+
+[ats]
+# Enable MLP mode (default: NO)
+MODE = mlp
+# Network specific inbound/outbound quotas
+# UNSPECIFIED
+UNSPECIFIED_QUOTA_IN = unlimited
+UNSPECIFIED_QUOTA_OUT = unlimited
+# LOOPBACK
+LOOPBACK_QUOTA_IN = unlimited
+LOOPBACK_QUOTA_OUT = unlimited
+# LAN
+LAN_QUOTA_IN = unlimited
+LAN_QUOTA_OUT = unlimited
+# WAN
+WAN_QUOTA_IN = 64 KiB
+WAN_QUOTA_OUT = 64 KiB
+# WLAN
+WLAN_QUOTA_IN = 4096
+WLAN_QUOTA_OUT = 4096
+
+# MLP specific settings
+ATS_MIN_INTERVAL = 15000
+ATS_EXEC_INTERVAL = 30000
+
+# MLP defaults
+# MLP_MAX_DURATION = 3 s
+# MLP_MAX_ITERATIONS = 1024
+# MLP_COEFFICIENT_D = 1.0
+# MLP_COEFFICIENT_U = 1.0
+# MLP_COEFFICIENT_R = 1.0
+# MLP_MIN_BANDWIDTH = 1024
+# MLP_MIN_CONNECTIONS = 4
+
+# MLP Debugging settings
+DUMP_MLP = NO
+DUMP_SOLUTION = NO
+DUMP_OVERWRITE = NO
+DUMP_MIN_PEERS = 0
+DUMP_MIN_ADDRS = 0
+DUMP_OVERWRITE = NO

Deleted: gnunet/src/ats/test_ats_api_performance_list_all_addresses.c
===================================================================
--- gnunet/src/ats/test_ats_api_performance_list_all_addresses.c        
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_performance_list_all_addresses.c        
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,312 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_performance_list_addresses.c
- * @brief test performance API's address listing feature
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-static struct GNUNET_ATS_AddressListHandle* phal;
-
-static int ret;
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-static struct GNUNET_HELLO_Address p0_ha[2];
-static struct GNUNET_HELLO_Address p1_ha[2];
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-             const struct GNUNET_HELLO_Address *address,
-             int address_active,
-             struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-             struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-             const struct GNUNET_ATS_Information *ats,
-             uint32_t ats_count)
-{
-  static int counter = 0;
-
-  if (NULL == address)
-  {
-    phal = 0;
-    if (4 == counter)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-      GNUNET_SCHEDULER_add_now (end, NULL);
-    }
-    else
-    {
-      GNUNET_break (0);
-      GNUNET_SCHEDULER_shutdown ();
-    }
-    return;
-  }
-  counter++;
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,name, value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "All addresses added, connecting to performance\n");
-    if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, NULL, NULL)))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Failed to connect to performance API\n");
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-    phal = GNUNET_ATS_performance_list_addresses (perf_ats,
-                                                  NULL,
-                                                  GNUNET_YES,
-                                                  &ats_perf_cb, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Did not expect suggestion callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (phal != NULL )
-  {
-    GNUNET_ATS_performance_list_addresses_cancel (phal);
-    phal = NULL;
-  }
-
-  if (perf_ats != NULL )
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-
-  GNUNET_free_non_null(p0_addresses[0].addr);
-  GNUNET_free_non_null(p0_addresses[1].addr);
-  GNUNET_free_non_null(p1_addresses[0].addr);
-  GNUNET_free_non_null(p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *mycfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
-      GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Created peer 1: `%s'\n",
-             GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg,
-                                          &address_suggest_cb, NULL);
-  if (sched_ats == NULL )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  if (0
-      != GNUNET_TESTING_peer_run ("test_ats_api_performance",
-          "test_ats_api.conf", &run, NULL ))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_performance_list_addresses.c */

Deleted: gnunet/src/ats/test_ats_api_performance_list_all_addresses_active.c
===================================================================
--- gnunet/src/ats/test_ats_api_performance_list_all_addresses_active.c 
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_performance_list_all_addresses_active.c 
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,307 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_performance_list_addresses.c
- * @brief test performance API's address listing feature
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-static struct GNUNET_ATS_AddressListHandle* phal;
-
-static int ret;
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-static struct GNUNET_HELLO_Address p0_ha[2];
-static struct GNUNET_HELLO_Address p1_ha[2];
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-            const struct GNUNET_HELLO_Address *address,
-            int address_active,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-            const struct GNUNET_ATS_Information *ats,
-            uint32_t ats_count)
-{
-  static int counter = 0;
-  if (NULL == address)
-  {
-    phal = 0;
-    if (0 == counter)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-      GNUNET_SCHEDULER_add_now (end, NULL);
-    }
-    else
-    {
-      GNUNET_break (0);
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-    return;
-  }
-  else
-  {
-    if (0 != memcmp (&address->peer, &p[0].id, sizeof (p[0].id)))
-    {
-      GNUNET_break (0);
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-  }
-  counter ++;
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "All addresses added, connecting to performance\n");
-    if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, NULL, NULL)))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-          "Failed to connect to performance API\n");
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-    phal = GNUNET_ATS_performance_list_addresses (perf_ats, &p[0].id, 
GNUNET_NO, ats_perf_cb, NULL);
-  }
-  return GNUNET_OK;
-}
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (phal != NULL )
-  {
-    GNUNET_ATS_performance_list_addresses_cancel (phal);
-    phal = NULL;
-  }
-
-  if (perf_ats != NULL )
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  GNUNET_free_non_null(p0_addresses[0].addr);
-  GNUNET_free_non_null(p0_addresses[1].addr);
-  GNUNET_free_non_null(p1_addresses[0].addr);
-  GNUNET_free_non_null(p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-
-
-static void
-run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
-    struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
-      GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 1: `%s'\n",
-      GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL );
-  if (sched_ats == NULL )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  if (0
-      != GNUNET_TESTING_peer_run ("test_ats_api_performance",
-          "test_ats_api.conf", &run, NULL ))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_performance_list_addresses.c */

Deleted: gnunet/src/ats/test_ats_api_performance_list_peer_addresses.c
===================================================================
--- gnunet/src/ats/test_ats_api_performance_list_peer_addresses.c       
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_performance_list_peer_addresses.c       
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,331 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_performance_list_addresses.c
- * @brief test performance API's address listing feature
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-static struct GNUNET_ATS_AddressListHandle* phal;
-
-static int ret;
-
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-static struct GNUNET_HELLO_Address p0_ha[2];
-static struct GNUNET_HELLO_Address p1_ha[2];
-
-
-static void
-end (void *cls,
-     const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-            const struct GNUNET_HELLO_Address *address,
-            int address_active,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-            const struct GNUNET_ATS_Information *ats,
-            uint32_t ats_count)
-{
-  static int counter = 0;
-
-  if (NULL == address)
-  {
-    phal = NULL;
-    if (2 == counter)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                  "Done\n");
-      GNUNET_SCHEDULER_add_now (&end,
-                                NULL);
-    }
-    else
-    {
-      fprintf (stderr,
-               "Expected 2 addresses, got %d\n",
-               counter);
-      GNUNET_break (0);
-      GNUNET_SCHEDULER_shutdown ();
-    }
-    return;
-  }
-  else
-  {
-    if (0 != memcmp (&address->peer, &p[0].id, sizeof (p[0].id)))
-    {
-      GNUNET_break (0);
-      GNUNET_SCHEDULER_shutdown ();
-      return;
-    }
-  }
-  counter ++;
-}
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "All addresses added, connecting to performance\n");
-    if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, NULL, NULL)))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Failed to connect to performance API\n");
-      GNUNET_SCHEDULER_shutdown ();
-      return GNUNET_SYSERR;
-    }
-    phal = GNUNET_ATS_performance_list_addresses (perf_ats,
-                                                  &p[0].id,
-                                                  GNUNET_YES,
-                                                  &ats_perf_cb, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-end (void *cls,
-     const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-  if (NULL != phal)
-  {
-    GNUNET_ATS_performance_list_addresses_cancel (phal);
-    phal = NULL;
-  }
-  if (NULL != perf_ats)
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  GNUNET_free_non_null (p0_addresses[0].addr);
-  GNUNET_free_non_null (p0_addresses[1].addr);
-  GNUNET_free_non_null (p1_addresses[0].addr);
-  GNUNET_free_non_null (p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls,
-           const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end (NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Did not expect suggestion callback!\n");
-  GNUNET_SCHEDULER_shutdown ();
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *mycfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Created peer 0: `%s'\n",
-             GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Created peer 1: `%s'\n",
-             GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg,
-                                          &address_suggest_cb, NULL);
-  if (NULL == sched_ats)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not setup peer!\n");
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  if (0 !=
-      GNUNET_TESTING_peer_run ("test_ats_api_performance",
-                               "test_ats_api.conf",
-                               &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_performance_list_addresses.c */

Deleted: gnunet/src/ats/test_ats_api_performance_monitor.c
===================================================================
--- gnunet/src/ats/test_ats_api_performance_monitor.c   2015-02-11 16:16:14 UTC 
(rev 35220)
+++ gnunet/src/ats/test_ats_api_performance_monitor.c   2015-02-11 16:17:20 UTC 
(rev 35221)
@@ -1,301 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_performance_monitor.c
- * @brief test performance API's address monitor feature
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
-#define WAIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-static int ret;
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-static struct GNUNET_HELLO_Address p0_ha[2];
-static struct GNUNET_HELLO_Address p1_ha[2];
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-            const struct GNUNET_HELLO_Address *address,
-            int address_active,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-            const struct GNUNET_ATS_Information *ats,
-            uint32_t ats_count)
-{
-  static int peer0 = GNUNET_NO;
-  static int peer1 = GNUNET_NO;
-  static int done = GNUNET_NO;
-
-  if (NULL == address)
-    return;
-
-  if ((GNUNET_NO == peer0) && (0 == memcmp (address, &p[0].id, sizeof 
(p[0].id))))
-  {
-    peer0 = GNUNET_YES;
-  }
-  if ((GNUNET_NO == peer0) && (0 == memcmp (address, &p[1].id, sizeof 
(p[1].id))))
-  {
-    peer1 = GNUNET_YES;
-  }
-  if ((peer0 == GNUNET_YES) && (peer1 = GNUNET_YES) && (GNUNET_NO == done))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "Done\n");
-    done = GNUNET_YES;
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-
-  }
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "All addresses added\n");
-  }
-
-  return GNUNET_OK;
-
-}
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (NULL != perf_ats)
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-
-  GNUNET_free_non_null(p0_addresses[0].addr);
-  GNUNET_free_non_null(p0_addresses[1].addr);
-  GNUNET_free_non_null(p1_addresses[0].addr);
-  GNUNET_free_non_null(p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-static void
-run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
-    struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, &ats_perf_cb, 
NULL)))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        "Failed to connect to performance API\n");
-    GNUNET_SCHEDULER_add_now (end_badly, NULL);
-  }
-
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
-      GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 1: `%s'\n",
-      GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL );
-  if (sched_ats == NULL )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  if (0
-      != GNUNET_TESTING_peer_run ("test_ats_api_performance",
-          "test_ats_api.conf", &run, NULL ))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_performance_monitor.c */

Deleted: gnunet/src/ats/test_ats_api_performance_monitor_initial_callback.c
===================================================================
--- gnunet/src/ats/test_ats_api_performance_monitor_initial_callback.c  
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_performance_monitor_initial_callback.c  
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,302 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010,2011 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 3, 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.
- */
-/**
- * @file ats/test_ats_api_performance_monitor.c
- * @brief test performance API's address monitor feature
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
-#define WAIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
-
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Configuration handle
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * ATS scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * ATS performance handle
- */
-static struct GNUNET_ATS_PerformanceHandle *perf_ats;
-
-static int ret;
-
-
-struct Address
-{
-  char *plugin;
-  size_t plugin_len;
-
-  void *addr;
-  size_t addr_len;
-
-  struct GNUNET_ATS_Information *ats;
-  int ats_count;
-
-  void *session;
-};
-
-struct PeerContext
-{
-  struct GNUNET_PeerIdentity id;
-
-  struct Address *addr;
-};
-
-static struct PeerContext p[2];
-
-static struct Address p0_addresses[2];
-static struct Address p1_addresses[2];
-
-struct GNUNET_HELLO_Address p0_ha[2];
-struct GNUNET_HELLO_Address p1_ha[2];
-struct GNUNET_HELLO_Address *s_ha[2];
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-ats_perf_cb (void *cls,
-            const struct GNUNET_HELLO_Address *address,
-            int address_active,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-            struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-            const struct GNUNET_ATS_Information *ats,
-            uint32_t ats_count)
-{
-  static int peer0 = GNUNET_NO;
-  static int peer1 = GNUNET_NO;
-  static int done = GNUNET_NO;
-
-  if (NULL == address)
-    return;
-
-  if (0 == memcmp (&address->peer, &p[0].id, sizeof (p[0].id)))
-  {
-    peer0 ++;
-  }
-  if (0 == memcmp (&address->peer, &p[1].id, sizeof (p[1].id)))
-  {
-    peer1 ++;
-  }
-  if ((2 == peer0) && (2 == peer1) && (GNUNET_NO == done))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "Done\n");
-    done = GNUNET_YES;
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-
-  }
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (4 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-        "All addresses added\n");
-
-    if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, &ats_perf_cb, 
NULL)))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-          "Failed to connect to performance API\n");
-      GNUNET_SCHEDULER_add_now (end_badly, NULL);
-    }
-  }
-
-  return GNUNET_OK;
-
-}
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-  if (die_task != NULL )
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (NULL != perf_ats)
-  {
-    GNUNET_ATS_performance_done (perf_ats);
-    perf_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-
-  GNUNET_free_non_null(p0_addresses[0].addr);
-  GNUNET_free_non_null(p0_addresses[1].addr);
-  GNUNET_free_non_null(p1_addresses[0].addr);
-  GNUNET_free_non_null(p1_addresses[1].addr);
-
-  ret = 0;
-}
-
-static void
-run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
-    struct GNUNET_TESTING_Peer *peer)
-{
-  ret = 1;
-  cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg;
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL );
-
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  /* set up peer 0 */
-  memset (&p[0].id, '1', sizeof (p[0].id));
-  p0_addresses[0].plugin = "test";
-  p0_addresses[0].session = NULL;
-  p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
-  p0_addresses[0].addr_len = strlen (p0_addresses[0].addr) + 1;
-
-  p0_ha[0].address = p0_addresses[0].addr;
-  p0_ha[0].address_length = p0_addresses[0].addr_len;
-  p0_ha[0].peer = p[0].id;
-  p0_ha[0].transport_name = p0_addresses[0].plugin;
-
-  p0_addresses[1].plugin = "test";
-  p0_addresses[1].session = NULL;
-  p0_addresses[1].addr = GNUNET_strdup ("test_p0_a1");
-  p0_addresses[1].addr_len = strlen (p0_addresses[1].addr) + 1;
-
-  p0_ha[1].address = p0_addresses[1].addr;
-  p0_ha[1].address_length = p0_addresses[1].addr_len;
-  p0_ha[1].peer = p[0].id;
-  p0_ha[1].transport_name = p0_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
-      GNUNET_i2s (&p[0].id));
-
-  memset (&p[1].id, '2', sizeof (p[1].id));
-  p1_addresses[0].plugin = "test";
-  p1_addresses[0].session = NULL;
-  p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");
-  p1_addresses[0].addr_len = strlen (p1_addresses[0].addr) + 1;
-
-  p1_ha[0].address = p1_addresses[0].addr;
-  p1_ha[0].address_length = p1_addresses[0].addr_len;
-  p1_ha[0].peer = p[1].id;
-  p1_ha[0].transport_name = p1_addresses[0].plugin;
-
-  p1_addresses[1].plugin = "test";
-  p1_addresses[1].session = NULL;
-  p1_addresses[1].addr = GNUNET_strdup ("test_p1_a1");
-  p1_addresses[1].addr_len = strlen (p1_addresses[1].addr) + 1;
-
-  p1_ha[1].address = p1_addresses[1].addr;
-  p1_ha[1].address_length = p1_addresses[1].addr_len;
-  p1_ha[1].peer = p[1].id;
-  p1_ha[1].transport_name = p1_addresses[1].plugin;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 1: `%s'\n",
-      GNUNET_i2s (&p[1].id));
-
-  /* Add addresses */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL );
-  if (sched_ats == NULL )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not setup peer!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p0_ha[1], NULL, NULL, 0);
-
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[0], NULL, NULL, 0);
-  GNUNET_ATS_address_add (sched_ats, &p1_ha[1], NULL, NULL, 0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  if (0
-      != GNUNET_TESTING_peer_run ("test_ats_api_performance",
-          "test_ats_api.conf", &run, NULL ))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_performance_monitor.c */

Added: gnunet/src/ats/test_ats_api_proportional.conf
===================================================================
--- gnunet/src/ats/test_ats_api_proportional.conf                               
(rev 0)
+++ gnunet/src/ats/test_ats_api_proportional.conf       2015-02-11 16:17:20 UTC 
(rev 35221)
@@ -0,0 +1,24 @@
address@hidden@ ../../contrib/no_forcestart.conf
+
+[PATHS]
+GNUNET_TEST_HOME = /tmp/test-ats-proportional/
+
+[ats]
+# Enable PROPORTIONAL mode (default: NO)
+MODE = proportional
+# Network specific inbound/outbound quotas
+# UNSPECIFIED
+UNSPECIFIED_QUOTA_IN = unlimited
+UNSPECIFIED_QUOTA_OUT = unlimited
+# LOOPBACK
+LOOPBACK_QUOTA_IN = unlimited
+LOOPBACK_QUOTA_OUT = unlimited
+# LAN
+LAN_QUOTA_IN = unlimited
+LAN_QUOTA_OUT = unlimited
+# WAN
+WAN_QUOTA_IN = 64 KiB
+WAN_QUOTA_OUT = 64 KiB
+# WLAN
+WLAN_QUOTA_IN = 4096
+WLAN_QUOTA_OUT = 4096

Added: gnunet/src/ats/test_ats_api_ril.conf
===================================================================
--- gnunet/src/ats/test_ats_api_ril.conf                                (rev 0)
+++ gnunet/src/ats/test_ats_api_ril.conf        2015-02-11 16:17:20 UTC (rev 
35221)
@@ -0,0 +1,24 @@
address@hidden@ ../../contrib/no_forcestart.conf
+
+[PATHS]
+GNUNET_TEST_HOME = /tmp/test-ats-ril/
+
+[ats]
+# Enable RIL mode (default: NO)
+MODE = ril
+# Network specific inbound/outbound quotas
+# UNSPECIFIED
+UNSPECIFIED_QUOTA_IN = unlimited
+UNSPECIFIED_QUOTA_OUT = unlimited
+# LOOPBACK
+LOOPBACK_QUOTA_IN = unlimited
+LOOPBACK_QUOTA_OUT = unlimited
+# LAN
+LAN_QUOTA_IN = unlimited
+LAN_QUOTA_OUT = unlimited
+# WAN
+WAN_QUOTA_IN = 64 KiB
+WAN_QUOTA_OUT = 64 KiB
+# WLAN
+WLAN_QUOTA_IN = 4096
+WLAN_QUOTA_OUT = 4096

Deleted: gnunet/src/ats/test_ats_api_scheduling_add_address.c
===================================================================
--- gnunet/src/ats/test_ats_api_scheduling_add_address.c        2015-02-11 
16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_scheduling_add_address.c        2015-02-11 
16:17:20 UTC (rev 35221)
@@ -1,231 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_scheduling_add_address.c
- * @brief adding addresses with scheduling API
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-uint32_t test_ats_count;
-
-
-static void end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (1 == value)
-  {
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-got_initial_value (void *cls, int success)
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got initial value\n");
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats, &test_hello_address, test_session, 
test_ats_info, test_ats_count);
-
-}
-
-
-static int
-dummy_stat (void *cls, const char *subsystem, const char *name, uint64_t value,
-            int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got dummy stat %s%s:%s = %llu\n",
-              is_persistent ? "!" : " ", subsystem, name, value);
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  GNUNET_STATISTICS_get (stats, "ats", "# addresses", TIMEOUT,
-                                       &got_initial_value, &dummy_stat,
-                                       GNUNET_CONFIGURATION_dup (cfg));
-
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                   "test_ats_api.conf",
-                                   &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_scheduling_add_address.c */

Deleted: gnunet/src/ats/test_ats_api_scheduling_add_address_duplicate.c
===================================================================
--- gnunet/src/ats/test_ats_api_scheduling_add_address_duplicate.c      
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_scheduling_add_address_duplicate.c      
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,266 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_scheduling_add_address.c
- * @brief adding same addresses twice with scheduling API
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-static struct GNUNET_SCHEDULER_Task * wait_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,name, value);
-  if (1 < value)
-  {
-    if (NULL != wait_task)
-      GNUNET_SCHEDULER_cancel (wait_task);
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-  }
-  if (1 == value)
-  {
-    if (NULL == wait_task)
-      wait_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
-                                                &end, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Shutting down\n");
-  wait_task = NULL;
-
-  if (NULL != die_task)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Did not expect suggestion callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static int
-dummy_stat (void *cls,
-            const char *subsystem,
-            const char *name,
-            uint64_t value,
-            int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Got dummy stat %s%s:%s = %llu\n",
-              is_persistent ? "!" : " ", subsystem, name, value);
-  return GNUNET_OK;
-}
-
-
-static void
-got_initial_value (void *cls, int success)
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg = cls;
-  struct GNUNET_ATS_AddressRecord *ar;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got initial value\n");
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not connect to ATS scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test",
-                       test_session, "test",
-                       strlen ("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats,
-                          &test_hello_address, test_session,
-                          test_ats_info, test_ats_count);
-  /* Adding duplicate */
-  GNUNET_log_skip (1, GNUNET_NO);
-  ar = GNUNET_ATS_address_add (sched_ats,
-                               &test_hello_address, test_session,
-                               test_ats_info, test_ats_count);
-  GNUNET_log_skip (0, GNUNET_YES);
-  GNUNET_assert (NULL == ar);
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-  GNUNET_STATISTICS_get (stats, "ats", "# addresses", TIMEOUT,
-                                       &got_initial_value, &dummy_stat,
-                                       GNUNET_CONFIGURATION_dup (cfg));
-
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                   "test_ats_api.conf",
-                                   &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_scheduling_add_address.c */

Deleted: gnunet/src/ats/test_ats_api_scheduling_add_address_inbound.c
===================================================================
--- gnunet/src/ats/test_ats_api_scheduling_add_address_inbound.c        
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_scheduling_add_address_inbound.c        
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,243 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_scheduling_add_address_inbound.c
- * @brief adding addresses with scheduling API
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (1 == value)
-  {
-    GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &end, NULL);
-  }
-  if (1 < value)
-  {
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-  }
-
-  return GNUNET_OK;
-}
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Did not expect suggestion callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-got_initial_value (void *cls, int success)
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got initial value\n");
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  create_test_address (&test_addr, "test-plugin", NULL, NULL, 0);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = NULL;
-  test_hello_address.address_length = 0;
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats,
-                          &test_hello_address, NULL,
-                          test_ats_info, test_ats_count);
-}
-
-
-static int
-dummy_stat (void *cls,
-            const char *subsystem,
-            const char *name,
-            uint64_t value,
-            int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Got dummy stat %s%s:%s = %llu\n",
-              is_persistent ? "!" : " ",
-              subsystem,
-              name,
-              value);
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  GNUNET_STATISTICS_get (stats, "ats", "# addresses", TIMEOUT,
-                                       &got_initial_value, &dummy_stat,
-                                       GNUNET_CONFIGURATION_dup (cfg));
-
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                   "test_ats_api.conf",
-                                   &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_scheduling_add_address_inbound.c */

Deleted: gnunet/src/ats/test_ats_api_scheduling_add_session.c
===================================================================
--- gnunet/src/ats/test_ats_api_scheduling_add_session.c        2015-02-11 
16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_scheduling_add_session.c        2015-02-11 
16:17:20 UTC (rev 35221)
@@ -1,237 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_scheduling_add_session.c
- * @brief test adding a session to an existing addresses
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-/**
- * Address record we will modify with a session later.
- */
-static struct GNUNET_ATS_AddressRecord *ar;
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent)
-{
-  static int first_stat_cb = GNUNET_YES;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,name, value);
-  if ((GNUNET_YES == first_stat_cb) && (1 == value))
-  {
-    GNUNET_ATS_address_add_session (ar,
-                                    (struct Session *) &test_session);
-    GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &end, NULL);
-  }
-  if ((GNUNET_NO == first_stat_cb) && (1 == value))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "ATS updated existing address\n");
-  }
-  if (value > 1)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "ATS did not update existing address, but added 2nd 
address!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-  }
-
-  return GNUNET_OK;
-}
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  ar = GNUNET_ATS_address_add (sched_ats,
-                               &test_hello_address, NULL,
-                               test_ats_info, test_ats_count);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                    "test_ats_api.conf",
-                                    &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_scheduling_add_session.c */

Deleted: gnunet/src/ats/test_ats_api_scheduling_destroy_address.c
===================================================================
--- gnunet/src/ats/test_ats_api_scheduling_destroy_address.c    2015-02-11 
16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_api_scheduling_destroy_address.c    2015-02-11 
16:17:20 UTC (rev 35221)
@@ -1,268 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_scheduling_destroy_address.c
- * @brief test destroying addresses in automatic transport selection 
scheduling API
- * @author Christian Grothoff
- * @author Matthias Wachs
- *
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task *die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Our address record.
- */
-static struct GNUNET_ATS_AddressRecord *ar;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent);
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-
-  if (NULL != die_task)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses",
-                                  &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  free_test_address (&test_addr);
-  ret = 0;
-}
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent)
-{
-  static int initial_ats_stat_cb = GNUNET_YES;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-
-  if ((0 == value) && (initial_ats_stat_cb == GNUNET_NO))
-  {
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-  }
-  if ((0 == value) && (initial_ats_stat_cb == GNUNET_YES))
-  {
-    initial_ats_stat_cb = GNUNET_NO;
-  }
-  if (1 == value)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Statistics observed address added, now destroying address\n");
-    GNUNET_ATS_address_destroy (ar);
-    ar = NULL;
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-end_badly (void *cls,
-           const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Did not expect suggestion callback!\n");
-  GNUNET_SCHEDULER_shutdown ();
-}
-
-
-static void
-got_initial_value (void *cls,
-                   int success)
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Statistics running, now adding address\n");
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg,
-                                          &address_suggest_cb, NULL);
-  if (NULL == sched_ats)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not connect to ATS scheduling!\n");
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr,
-                       "test", test_session,
-                       "test", strlen ("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  ar = GNUNET_ATS_address_add (sched_ats,
-                               &test_hello_address,
-                               test_session,
-                               test_ats_info,
-                               test_ats_count);
-}
-
-
-static int
-dummy_stat (void *cls,
-            const char *subsystem,
-            const char *name,
-            uint64_t value,
-            int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got dummy stat %s%s:%s = %llu\n",
-              is_persistent ? "!" : " ", subsystem, name, value);
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-  GNUNET_STATISTICS_get (stats,
-                         "ats",
-                         "# addresses",
-                         TIMEOUT,
-                         &got_initial_value,
-                         &dummy_stat,
-                         GNUNET_CONFIGURATION_dup (cfg));
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                    "test_ats_api.conf",
-                                    &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_scheduling_destroy_address.c */

Deleted: gnunet/src/ats/test_ats_api_scheduling_init.c
===================================================================
--- gnunet/src/ats/test_ats_api_scheduling_init.c       2015-02-11 16:16:14 UTC 
(rev 35220)
+++ gnunet/src/ats/test_ats_api_scheduling_init.c       2015-02-11 16:17:20 UTC 
(rev 35221)
@@ -1,176 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010,2011 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 3, 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.
-*/
-/**
- * @file ats/test_ats_api_scheduling_init.c
- * @brief test automatic transport selection scheduling API init/shutdown
- * @author Christian Grothoff
- * @author Matthias Wachs
- *
- */
-#include "platform.h"
-#include "gnunet_ats_service.h"
-#include "gnunet_testing_lib.h"
-#include "ats.h"
-#include "test_ats_api_common.h"
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Initial statistics get request handle
- */
-struct GNUNET_STATISTICS_GetHandle *initial_get;
-
-/**
- * Statistics handle
- */
-struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-
-static void end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  if (0 == value)
-  {
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-  }
-  return GNUNET_OK;
-}
-
-static int
-dummy_stat (void *cls, const char *subsystem, const char *name, uint64_t value,
-            int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got dummy stat %s%s:%s = %llu\n",
-              is_persistent ? "!" : " ", subsystem, name, value);
-  return GNUNET_OK;
-}
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  ret = 0;
-}
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion 
callback!\n");
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-got_initial_value (void *cls, int success)
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got initial value\n");
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (cfg, &address_suggest_cb, NULL);
-  GNUNET_CONFIGURATION_destroy (cfg);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-}
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *cfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", cfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  initial_get = GNUNET_STATISTICS_get (stats, "ats", "# addresses", TIMEOUT,
-                                       &got_initial_value, &dummy_stat,
-                                       GNUNET_CONFIGURATION_dup (cfg));
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  ret = 0;
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
-                                    "test_ats_api.conf",
-                                    &run, NULL))
-    return 1;
-  return ret;
-}
-
-/* end of file test_ats_api_scheduling_init.c */

Added: gnunet/src/ats/test_ats_lib.c
===================================================================
--- gnunet/src/ats/test_ats_lib.c                               (rev 0)
+++ gnunet/src/ats/test_ats_lib.c       2015-02-11 16:17:20 UTC (rev 35221)
@@ -0,0 +1,999 @@
+/*
+     This file is part of GNUnet.
+     Copyright (C) 2010-2015 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 3, 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.
+*/
+/**
+ * @file ats/test_ats_lib.c
+ * @brief test ATS library with a generic interpreter for running ATS tests
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_ats_service.h"
+#include "gnunet_testing_lib.h"
+#include "test_ats_lib.h"
+
+/**
+ * Information about the last address suggestion we got for a peer.
+ */
+struct AddressSuggestData
+{
+  /**
+   * Which session were we given?
+   */
+  struct Session *session;
+
+  /**
+   * What address was assigned?
+   */
+  struct GNUNET_HELLO_Address *address;
+
+  /**
+   * Outbound bandwidth assigned.
+   */
+  struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out;
+
+  /**
+   * Inbound bandwidth assigned.
+   */
+  struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in;
+
+  /**
+   * Was the bandwidth assigned non-zero?
+   */
+  int active;
+};
+
+
+/**
+ * Information about the last address information we got for an address.
+ */
+struct AddressInformationData
+{
+  /**
+   * What address is this data about?
+   */
+  struct GNUNET_HELLO_Address *address;
+
+  /**
+   * Which properties were given?
+   */
+  struct GNUNET_ATS_Properties properties;
+
+  /**
+   * Outbound bandwidth reported.
+   */
+  struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out;
+
+  /**
+   * Inbound bandwidth reported.
+   */
+  struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in;
+
+  /**
+   * Was the address said to be 'active'?
+   */
+  int active;
+};
+
+
+/**
+ * Scheduling handle
+ */
+static struct GNUNET_ATS_SchedulingHandle *sched_ats;
+
+/**
+ * Connectivity handle
+ */
+static struct GNUNET_ATS_ConnectivityHandle *con_ats;
+
+/**
+ * Performance handle
+ */
+static struct GNUNET_ATS_PerformanceHandle *perf_ats;
+
+/**
+ * Handle for the interpreter task.
+ */
+static struct GNUNET_SCHEDULER_Task *interpreter_task;
+
+/**
+ * Map from peer identities to the last address suggestion
+ * `struct AddressSuggestData` we got for the respective peer.
+ */
+static struct GNUNET_CONTAINER_MultiPeerMap *p2asd;
+
+/**
+ * Map from peer identities to the last address information
+ * sets for all addresses of this peer. Each peer is mapped
+ * to one or more `struct AddressInformationData` entries.
+ */
+static struct GNUNET_CONTAINER_MultiPeerMap *p2aid;
+
+/**
+ * Global timeout for the test.
+ */
+static struct GNUNET_TIME_Relative TIMEOUT;
+
+/**
+ * Return value from #main().
+ */
+static int ret;
+
+/**
+ * Current global command offset into the #commands array.
+ */
+static unsigned int off;
+
+/**
+ * Commands for the current test.
+ */
+static struct Command *test_commands;
+
+
+
+/**
+ * Free `struct AddressSuggestData` entry.
+ *
+ * @param cls NULL
+ * @param key ignored
+ * @param value the `struct AddressSuggestData` to release
+ * @return #GNUNET_OK (continue to iterate)
+ */
+static int
+free_asd (void *cls,
+          const struct GNUNET_PeerIdentity *key,
+          void *value)
+{
+  struct AddressSuggestData *asd = value;
+
+  GNUNET_assert (GNUNET_YES ==
+                 GNUNET_CONTAINER_multipeermap_remove (p2asd,
+                                                       key,
+                                                       asd));
+  GNUNET_free (asd->address);
+  GNUNET_free (asd);
+  return GNUNET_OK;
+}
+
+
+/**
+ * Free `struct AddressInformationData` entry.
+ *
+ * @param cls NULL
+ * @param key ignored
+ * @param value the `struct AddressSuggestData` to release
+ * @return #GNUNET_OK (continue to iterate)
+ */
+static int
+free_aid (void *cls,
+          const struct GNUNET_PeerIdentity *key,
+          void *value)
+{
+  struct AddressInformationData *aid = value;
+
+  GNUNET_assert (GNUNET_YES ==
+                 GNUNET_CONTAINER_multipeermap_remove (p2aid,
+                                                       key,
+                                                       aid));
+  GNUNET_free (aid->address);
+  GNUNET_free (aid);
+  return GNUNET_OK;
+}
+
+
+/**
+ * Find latest address suggestion made for the given peer.
+ *
+ * @param pid peer to look up
+ * @return NULL if peer was never involved
+ */
+static struct AddressSuggestData *
+find_address_suggestion (const struct GNUNET_PeerIdentity *pid)
+{
+  return GNUNET_CONTAINER_multipeermap_get (p2asd,
+                                            pid);
+}
+
+
+/**
+ * Closure for #match_address()
+ */
+struct MatchAddressContext
+{
+  /**
+   * Address to find.
+   */
+  const struct GNUNET_HELLO_Address *addr;
+
+  /**
+   * Where to return address information if found.
+   */
+  struct AddressInformationData *ret;
+};
+
+
+/**
+ * Find matching address information.
+ *
+ * @param cls a `struct MatchAddressContext`
+ * @param key unused
+ * @param value a `struct AddressInformationData`
+ * @return #GNUNET_OK if not found
+ */
+static int
+match_address (void *cls,
+               const struct GNUNET_PeerIdentity *key,
+               void *value)
+{
+  struct MatchAddressContext *mac = cls;
+  struct AddressInformationData *aid = value;
+
+  if (0 == GNUNET_HELLO_address_cmp (mac->addr,
+                                     aid->address))
+  {
+    mac->ret = aid;
+    return GNUNET_NO;
+  }
+  return GNUNET_OK;
+}
+
+
+/**
+ * Find latest address information made for the given address.
+ *
+ * @param addr address to look up
+ * @return NULL if peer was never involved
+ */
+static struct AddressInformationData *
+find_address_information (const struct GNUNET_HELLO_Address *addr)
+{
+  struct MatchAddressContext mac;
+
+  mac.ret = NULL;
+  mac.addr = addr;
+  GNUNET_CONTAINER_multipeermap_get_multiple (p2aid,
+                                              &addr->peer,
+                                              &match_address,
+                                              &mac);
+  return mac.ret;
+}
+
+
+/**
+ * Task run to terminate the testcase.
+ *
+ * @param cls NULL
+ * @param tc unused
+ */
+static void
+end (void *cls,
+     const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  if (0 != ret)
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Test failed at stage %u %s\n",
+                off,
+                (NULL != test_commands[off].label)
+                ? test_commands[off].label
+                : "");
+  if (NULL != interpreter_task)
+  {
+    GNUNET_SCHEDULER_cancel (interpreter_task);
+    interpreter_task = NULL;
+  }
+  if (NULL != sched_ats)
+  {
+    GNUNET_ATS_scheduling_done (sched_ats);
+    sched_ats = NULL;
+  }
+  if (NULL != con_ats)
+  {
+    GNUNET_ATS_connectivity_done (con_ats);
+    con_ats = NULL;
+  }
+  if (NULL != perf_ats)
+  {
+    GNUNET_ATS_performance_done (perf_ats);
+    perf_ats = NULL;
+  }
+  if (NULL != p2asd)
+  {
+    GNUNET_CONTAINER_multipeermap_iterate (p2asd,
+                                           &free_asd,
+                                           NULL);
+    GNUNET_CONTAINER_multipeermap_destroy (p2asd);
+    p2asd = NULL;
+  }
+  if (NULL != p2aid)
+  {
+    GNUNET_CONTAINER_multipeermap_iterate (p2aid,
+                                           &free_aid,
+                                           NULL);
+    GNUNET_CONTAINER_multipeermap_destroy (p2aid);
+    p2aid = NULL;
+  }
+}
+
+
+/**
+ * Main interpreter loop. Runs the steps of the test.
+ *
+ * @param cls NULL
+ * @param tc unused
+ */
+static void
+interpreter (void *cls,
+             const struct GNUNET_SCHEDULER_TaskContext *tc);
+
+
+/**
+ * Run the interpreter next.
+ */
+static void
+run_interpreter ()
+{
+  if (NULL != interpreter_task)
+    GNUNET_SCHEDULER_cancel (interpreter_task);
+  interpreter_task = GNUNET_SCHEDULER_add_now (&interpreter,
+                                               NULL);
+}
+
+
+/**
+ * Initialize public key of a peer based on a single number.
+ *
+ * @param pid number to use as the basis
+ * @param pk resulting fake public key
+ */
+static void
+make_peer (uint32_t pid,
+           struct GNUNET_PeerIdentity *pk)
+{
+  memset (pk,
+          (int) pid,
+          sizeof (struct GNUNET_PeerIdentity));
+  memcpy (pk,
+          &pid,
+          sizeof (uint32_t));
+}
+
+
+/**
+ * Generate a fake address based on the given parameters.
+ *
+ * @param pid number of the peer
+ * @param num number of the address at peer @a pid
+ * @param addr_flags flags to use for the address
+ * @return the address
+ */
+static struct GNUNET_HELLO_Address *
+make_address (uint32_t pid,
+              uint32_t num,
+              enum GNUNET_HELLO_AddressInfo addr_flags)
+{
+  struct GNUNET_PeerIdentity pk;
+  uint32_t nbo;
+
+  nbo = htonl (num);
+  make_peer (pid,
+             &pk);
+  return GNUNET_HELLO_address_allocate (&pk,
+                                        "test",
+                                        &nbo,
+                                        sizeof (nbo),
+                                        addr_flags);
+}
+
+
+/**
+ * Our dummy sessions.
+ */
+struct Session {
+  /**
+   * Field to avoid `0 == sizeof(struct Session)`.
+   */
+  unsigned int non_empty;
+};
+
+
+/**
+ * Create a session instance for ATS.
+ *
+ * @param i which session number to return
+ * @return NULL if @a i is 0, otherwise a pointer unique to @a i
+ */
+static struct Session *
+make_session (unsigned int i)
+{
+  struct Session *baseptr = NULL;
+
+  if (0 == i)
+    return NULL;
+  /* Yes, these are *intentionally* out-of-bounds,
+     and offset from NULL, as nobody should ever
+     use those other than to compare pointers! */
+  return baseptr + i;
+}
+
+
+/**
+ * Find a @a code command before the global #off with the
+ * specified @a label.
+ *
+ * @param code opcode to look for
+ * @param label label to look for, NULL for none
+ * @return previous command with the matching label
+ */
+static struct Command *
+find_command (enum CommandCode code,
+              const char *label)
+{
+  int i;
+
+  if (NULL == label)
+    return NULL;
+  for (i=off-1;i>=0;i--)
+    if ( (code == test_commands[i].code) &&
+         (0 == strcmp (test_commands[i].label,
+                       label)) )
+      return &test_commands[i];
+  GNUNET_break (0);
+  return NULL;
+}
+
+
+/**
+ * Function called from #GNUNET_ATS_performance_list_addresses when
+ * we process a #CMD_LIST_ADDRESSES command.
+ *
+ * @param cls the `struct Command` that caused the call
+ * @param address the address, NULL if ATS service was disconnected
+ * @param address_active #GNUNET_YES if this address is actively used
+ *        to maintain a connection to a peer;
+ *        #GNUNET_NO if the address is not actively used;
+ *        #GNUNET_SYSERR if this address is no longer available for ATS
+ * @param bandwidth_out assigned outbound bandwidth for the connection
+ * @param bandwidth_in assigned inbound bandwidth for the connection
+ * @param prop performance data for the address
+ */
+static void
+info_cb (void *cls,
+         const struct GNUNET_HELLO_Address *address,
+         int address_active,
+         struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
+         struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
+         const struct GNUNET_ATS_Properties *prop)
+{
+  struct Command *c = cls;
+  struct CommandListAddresses *cmd = &c->details.list_addresses;
+
+  if (NULL == address)
+  {
+    cmd->alh = NULL;
+    /* we are done with the iteration, continue to execute */
+    if ( (cmd->calls < cmd->min_calls) &&
+         (cmd->active_calls < cmd->min_active_calls) )
+    {
+      GNUNET_SCHEDULER_shutdown ();
+      return;
+    }
+    off++;
+    run_interpreter ();
+    return;
+  }
+  switch (address_active)
+  {
+  case GNUNET_YES:
+    cmd->active_calls++;
+    cmd->calls++;
+    break;
+  case GNUNET_NO:
+    cmd->calls++;
+    break;
+  case GNUNET_SYSERR:
+    return;
+  }
+  if ( (cmd->calls > cmd->max_calls) &&
+       (cmd->active_calls < cmd->max_active_calls) )
+  {
+    GNUNET_break (0);
+    GNUNET_ATS_performance_list_addresses_cancel (cmd->alh);
+    cmd->alh = NULL;
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+}
+
+
+/**
+ * Main interpreter loop. Runs the steps of the test.
+ *
+ * @param cls NULL
+ * @param tc unused
+ */
+static void
+interpreter (void *cls,
+             const struct GNUNET_SCHEDULER_TaskContext *tc)
+
+{
+  struct Command *cmd;
+
+  interpreter_task = NULL;
+  while (1)
+  {
+    cmd = &test_commands[off];
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "#%u: %d %s\n",
+                off,
+                (int) cmd->code,
+                (NULL != cmd->label) ? cmd->label : "");
+    switch (cmd->code)
+    {
+    case CMD_END_PASS:
+      ret = 0;
+      GNUNET_SCHEDULER_shutdown ();
+      return;
+    case CMD_ADD_ADDRESS:
+      {
+        struct GNUNET_HELLO_Address *addr;
+        struct Session *session;
+
+        addr = make_address (cmd->details.add_address.pid,
+                             cmd->details.add_address.addr_num,
+                             cmd->details.add_address.addr_flags);
+        session = make_session (cmd->details.add_address.session);
+        if (cmd->details.add_address.expect_fail)
+          GNUNET_log_skip (1, GNUNET_NO);
+        cmd->details.add_address.ar
+          = GNUNET_ATS_address_add (sched_ats,
+                                    addr,
+                                    session,
+                                    &cmd->details.add_address.properties);
+        GNUNET_free (addr);
+        if (cmd->details.add_address.expect_fail)
+        {
+          GNUNET_log_skip (0, GNUNET_YES);
+        }
+        else if (NULL == cmd->details.add_address.ar)
+        {
+          GNUNET_break (0);
+          GNUNET_SCHEDULER_shutdown ();
+          return;
+        }
+        off++;
+        break;
+      }
+    case CMD_DEL_ADDRESS:
+      {
+        struct Command *add;
+
+        add = find_command (CMD_ADD_ADDRESS,
+                            cmd->details.del_address.add_label);
+        GNUNET_assert (NULL != add->details.add_address.ar);
+        GNUNET_ATS_address_destroy (add->details.add_address.ar);
+        add->details.add_address.ar = NULL;
+        off++;
+        break;
+      }
+    case CMD_AWAIT_ADDRESS_SUGGESTION:
+      {
+        struct GNUNET_PeerIdentity pid;
+        struct GNUNET_HELLO_Address *addr;
+        struct Command *add;
+        struct AddressSuggestData *asd;
+        int done;
+
+        make_peer (cmd->details.await_address_suggestion.pid,
+                   &pid);
+        asd = find_address_suggestion (&pid);
+        if (NULL == asd)
+          return;
+        if (GNUNET_NO == asd->active)
+          return;
+        done = GNUNET_YES;
+        if (NULL != cmd->details.await_address_suggestion.add_label)
+        {
+          done = GNUNET_NO;
+          add = find_command (CMD_ADD_ADDRESS,
+                              cmd->details.await_address_suggestion.add_label);
+          addr = make_address (add->details.add_address.pid,
+                               add->details.add_address.addr_num,
+                               add->details.add_address.addr_flags);
+          if ( (asd->session ==
+                make_session (add->details.add_address.session)) &&
+               (0 ==
+                GNUNET_HELLO_address_cmp (addr,
+                                          asd->address)) )
+            done = GNUNET_YES;
+          GNUNET_free (addr);
+        }
+        if (GNUNET_NO == done)
+          return;
+        off++;
+        break;
+      }
+    case CMD_AWAIT_DISCONNECT_SUGGESTION:
+      {
+        struct GNUNET_PeerIdentity pid;
+        struct AddressSuggestData *asd;
+
+        make_peer (cmd->details.await_disconnect_suggestion.pid,
+                   &pid);
+        asd = find_address_suggestion (&pid);
+        if (NULL == asd)
+          return;
+        if (GNUNET_NO == asd->active)
+          return;
+        off++;
+        break;
+      }
+    case CMD_REQUEST_CONNECTION_START:
+      {
+        struct GNUNET_PeerIdentity pid;
+
+        make_peer (cmd->details.request_connection_start.pid,
+                   &pid);
+        cmd->details.request_connection_start.csh
+          = GNUNET_ATS_connectivity_suggest (con_ats,
+                                             &pid);
+        off++;
+        break;
+      }
+    case CMD_REQUEST_CONNECTION_STOP:
+      {
+        struct Command *start;
+
+        start = find_command (CMD_REQUEST_CONNECTION_START,
+                              
cmd->details.request_connection_stop.connect_label);
+        GNUNET_ATS_connectivity_suggest_cancel 
(start->details.request_connection_start.csh);
+        start->details.request_connection_start.csh = NULL;
+        off++;
+        break;
+      }
+    case CMD_AWAIT_ADDRESS_INFORMATION:
+      {
+        struct AddressInformationData *aid;
+        struct Command *add;
+        struct Command *update;
+        struct GNUNET_HELLO_Address *addr;
+        const struct GNUNET_ATS_Properties *cmp;
+
+        add = find_command (CMD_ADD_ADDRESS,
+                            cmd->details.await_address_information.add_label);
+        update = find_command (CMD_UPDATE_ADDRESS,
+                               
cmd->details.await_address_information.update_label);
+        addr = make_address (add->details.add_address.pid,
+                             add->details.add_address.addr_num,
+                             add->details.add_address.addr_flags);
+        aid = find_address_information (addr);
+        GNUNET_free (addr);
+        if (NULL == update)
+          cmp = &add->details.add_address.properties;
+        else
+          cmp = &update->details.update_address.properties;
+        if ( (NULL != aid) &&
+             (0 == memcmp (cmp,
+                           &aid->properties,
+                           sizeof (struct GNUNET_ATS_Properties))) )
+        {
+          off++;
+          break;
+        }
+        return;
+      }
+    case CMD_UPDATE_ADDRESS:
+      {
+        struct Command *add;
+
+        add = find_command (CMD_ADD_ADDRESS,
+                            cmd->details.update_address.add_label);
+        GNUNET_assert (NULL != add->details.add_address.ar);
+        GNUNET_ATS_address_update (add->details.add_address.ar,
+                                   &cmd->details.update_address.properties);
+        off++;
+        break;
+      }
+    case CMD_ADD_SESSION:
+      {
+        struct Command *add;
+        struct Session *session;
+
+        add = find_command (CMD_ADD_ADDRESS,
+                            cmd->details.add_session.add_label);
+        session = make_session (cmd->details.add_session.session);
+        GNUNET_assert (NULL != add->details.add_address.ar);
+        GNUNET_ATS_address_add_session (add->details.add_address.ar,
+                                        session);
+        off++;
+        break;
+      }
+    case CMD_DEL_SESSION:
+      {
+        struct Command *add_address;
+        struct Command *add_session;
+        struct Session *session;
+
+        add_session = find_command (CMD_ADD_SESSION,
+                                    
cmd->details.del_session.add_session_label);
+        add_address = find_command (CMD_ADD_ADDRESS,
+                                    
add_session->details.add_session.add_label);
+        GNUNET_assert (NULL != add_address->details.add_address.ar);
+        session = make_session (add_session->details.add_session.session);
+        GNUNET_ATS_address_del_session (add_address->details.add_address.ar,
+                                        session);
+        off++;
+        break;
+      }
+    case CMD_CHANGE_PREFERENCE:
+      {
+        struct GNUNET_PeerIdentity pid;
+
+        make_peer (cmd->details.change_preference.pid,
+                   &pid);
+        GNUNET_ATS_performance_change_preference (perf_ats,
+                                                  &pid,
+                                                  GNUNET_ATS_PREFERENCE_END);
+        off++;
+        break;
+      }
+    case CMD_PROVIDE_FEEDBACK:
+      {
+        struct GNUNET_PeerIdentity pid;
+
+        make_peer (cmd->details.provide_feedback.pid,
+                   &pid);
+        GNUNET_ATS_performance_give_feedback (perf_ats,
+                                              &pid,
+                                              
cmd->details.provide_feedback.scope,
+                                              GNUNET_ATS_PREFERENCE_END);
+        off++;
+        break;
+      }
+    case CMD_LIST_ADDRESSES:
+      {
+        struct GNUNET_PeerIdentity pid;
+
+        make_peer (cmd->details.list_addresses.pid,
+                   &pid);
+        cmd->details.list_addresses.alh
+          = GNUNET_ATS_performance_list_addresses (perf_ats,
+                                                   &pid,
+                                                   
cmd->details.list_addresses.all,
+                                                   &info_cb,
+                                                   cmd);
+        return;
+      }
+    } /* end switch */
+  } /* end while(1) */
+}
+
+
+/**
+ * Signature of a function called by ATS with the current bandwidth
+ * and address preferences as determined by ATS.
+ *
+ * @param cls closure, should point to "asc-closure"
+ * @param peer for which we suggest an address, NULL if ATS connection died
+ * @param address suggested address (including peer identity of the peer),
+ *             may be NULL to signal disconnect from peer
+ * @param session session to use, NULL to establish a new outgoing session
+ * @param bandwidth_out assigned outbound bandwidth for the connection,
+ *        0 to signal disconnect
+ * @param bandwidth_in assigned inbound bandwidth for the connection,
+ *        0 to signal disconnect
+ */
+static void
+address_suggest_cb (void *cls,
+                    const struct GNUNET_PeerIdentity *peer,
+                    const struct GNUNET_HELLO_Address *address,
+                    struct Session *session,
+                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
+                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
+{
+  const char *asc_cls = cls;
+  struct AddressSuggestData *asd;
+
+  GNUNET_break (0 == strcmp (asc_cls, "asc-closure"));
+  if (NULL == peer)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Connection to ATS died, likely a crash!\n");
+    GNUNET_SCHEDULER_shutdown ();
+#if 0
+    /* This is what we should do if we wanted to continue past
+       the ATS crash. */
+    GNUNET_CONTAINER_multipeermap_iterate (p2asd,
+                                           &free_asd,
+                                           NULL);
+    GNUNET_CONTAINER_multipeermap_iterate (p2aid,
+                                           &free_aid,
+                                           NULL);
+#endif
+    return;
+  }
+
+  asd = find_address_suggestion (peer);
+  if (NULL == asd)
+  {
+    asd = GNUNET_new (struct AddressSuggestData);
+    GNUNET_assert (GNUNET_YES ==
+                   GNUNET_CONTAINER_multipeermap_put (p2asd,
+                                                      peer,
+                                                      asd,
+                                                      
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+  }
+  if ( (0 == ntohl (bandwidth_out.value__)) &&
+       (0 == ntohl (bandwidth_in.value__)) )
+    asd->active = GNUNET_NO;
+  else
+    asd->active = GNUNET_YES;
+  asd->bandwidth_out = bandwidth_out;
+  asd->bandwidth_in = bandwidth_in;
+  asd->session = session;
+  GNUNET_free_non_null (asd->address);
+  asd->address = NULL;
+  if (NULL != address)
+    asd->address = GNUNET_HELLO_address_copy (address);
+  run_interpreter ();
+}
+
+
+/**
+ * Signature of a function that is called with QoS information about an 
address.
+ *
+ * @param cls closure, should point to "aic-closure"
+ * @param address the address, NULL if ATS service was disconnected
+ * @param address_active #GNUNET_YES if this address is actively used
+ *        to maintain a connection to a peer;
+ *        #GNUNET_NO if the address is not actively used;
+ *        #GNUNET_SYSERR if this address is no longer available for ATS
+ * @param bandwidth_out assigned outbound bandwidth for the connection
+ * @param bandwidth_in assigned inbound bandwidth for the connection
+ * @param prop performance data for the address
+ */
+static void
+address_information_cb (void *cls,
+                        const struct GNUNET_HELLO_Address *address,
+                        int address_active,
+                        struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
+                        struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
+                        const struct GNUNET_ATS_Properties *prop)
+{
+  const char *aic_cls = cls;
+  struct AddressInformationData *aid;
+
+  GNUNET_break (0 == strcmp (aic_cls, "aic-closure"));
+  if (NULL == address)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Connection to ATS died, likely a crash!\n");
+    GNUNET_CONTAINER_multipeermap_iterate (p2aid,
+                                           &free_aid,
+                                           NULL);
+    return;
+  }
+
+  aid = find_address_information (address);
+  if (NULL == aid)
+  {
+    aid = GNUNET_new (struct AddressInformationData);
+    aid->address = GNUNET_HELLO_address_copy (address);
+    GNUNET_assert (GNUNET_YES ==
+                   GNUNET_CONTAINER_multipeermap_put (p2aid,
+                                                      &address->peer,
+                                                      aid,
+                                                      
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE));
+  }
+  aid->active = address_active;
+  aid->bandwidth_out = bandwidth_out;
+  aid->bandwidth_in = bandwidth_in;
+  aid->properties = *prop;
+  run_interpreter ();
+}
+
+
+/**
+ * Function run once the ATS service has been started.
+ *
+ * @param cls NULL
+ * @param cfg configuration for the testcase
+ * @param peer handle to the peer
+ */
+static void
+run (void *cls,
+     const struct GNUNET_CONFIGURATION_Handle *cfg,
+     struct GNUNET_TESTING_Peer *peer)
+{
+  p2asd = GNUNET_CONTAINER_multipeermap_create (128,
+                                                GNUNET_NO);
+  p2aid = GNUNET_CONTAINER_multipeermap_create (128,
+                                                GNUNET_NO);
+  GNUNET_SCHEDULER_add_delayed (TIMEOUT,
+                                &end,
+                                NULL);
+
+  sched_ats = GNUNET_ATS_scheduling_init (cfg,
+                                          &address_suggest_cb,
+                                          "asc-closure");
+  if (NULL == sched_ats)
+  {
+    GNUNET_break (0);
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+  con_ats = GNUNET_ATS_connectivity_init (cfg);
+  if (NULL == con_ats)
+  {
+    GNUNET_break (0);
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+  perf_ats = GNUNET_ATS_performance_init (cfg,
+                                          &address_information_cb,
+                                          "aic-closure");
+  if (NULL == perf_ats)
+  {
+    GNUNET_break (0);
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+  run_interpreter ();
+}
+
+
+/**
+ * Run ATS test.
+ *
+ * @param argc length of @a argv
+ * @param argv command line
+ * @param cmds commands to run with the interpreter
+ * @param timeout how long is the test allowed to take?
+ * @return 0 on success
+ */
+int
+TEST_ATS_run (int argc,
+              char *argv[],
+              struct Command *cmds,
+              struct GNUNET_TIME_Relative timeout)
+{
+  char *test_filename = GNUNET_strdup (argv[0]);
+  char *sep;
+  char *config_file;
+  char *underscore;
+
+  test_commands = cmds;
+  TIMEOUT = timeout;
+  if (NULL != (sep = strstr (test_filename, ".exe")))
+    sep[0] = '\0';
+  underscore = strrchr (test_filename, (int) '_');
+  GNUNET_assert (NULL != underscore);
+  GNUNET_asprintf (&config_file,
+                   "test_ats_api_%s.conf",
+                   underscore + 1);
+  ret = 2;
+  if (0 != GNUNET_TESTING_peer_run ("test-ats-api",
+                                    config_file,
+                                    &run, NULL))
+    ret = 1;
+  GNUNET_free (test_filename);
+  GNUNET_free (config_file);
+  return ret;
+}
+
+/* end of test_ats_lib.c */

Added: gnunet/src/ats/test_ats_lib.h
===================================================================
--- gnunet/src/ats/test_ats_lib.h                               (rev 0)
+++ gnunet/src/ats/test_ats_lib.h       2015-02-11 16:17:20 UTC (rev 35221)
@@ -0,0 +1,467 @@
+/*
+     This file is part of GNUnet.
+     Copyright (C) 2010-2015 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 3, 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.
+*/
+/**
+ * @file ats/test_ats_lib.h
+ * @brief test ATS library with a generic interpreter for running ATS tests
+ * @author Christian Grothoff
+ */
+#ifndef TEST_ATS_LIB_H
+#define TEST_ATS_LIB_H
+
+#include "gnunet_util_lib.h"
+#include "gnunet_ats_service.h"
+#include "gnunet_testing_lib.h"
+
+
+/**
+ * Commands for the interpreter.
+ */
+enum CommandCode
+{
+  /**
+   * End the test (passing).
+   */
+  CMD_END_PASS = 0,
+
+  /**
+   * Call #GNUNET_ATS_address_add().
+   */
+  CMD_ADD_ADDRESS,
+
+  /**
+   * Call #GNUNET_ATS_address_del().
+   */
+  CMD_DEL_ADDRESS,
+
+  /**
+   * Wait for ATS to suggest address.
+   */
+  CMD_AWAIT_ADDRESS_SUGGESTION,
+
+  /**
+   * Wait for ATS to suggest disconnect.
+   */
+  CMD_AWAIT_DISCONNECT_SUGGESTION,
+
+  /**
+   * Ask ATS to connect to a peer, using
+   * #GNUNET_ATS_connectivity_suggest().
+   */
+  CMD_REQUEST_CONNECTION_START,
+
+  /**
+   * Tell ATS we no longer need a connection to a peer, using
+   * #GNUNET_ATS_connectivity_suggest_cancel().
+   */
+  CMD_REQUEST_CONNECTION_STOP,
+
+  /**
+   * Wait for certain address information to be provided.
+   */
+  CMD_AWAIT_ADDRESS_INFORMATION,
+
+  /**
+   * Update properties of an address, using
+   * #GNUNET_ATS_address_update().
+   */
+  CMD_UPDATE_ADDRESS,
+
+  /**
+   * Add session to an address, using
+   * #GNUNET_ATS_address_add_session().
+   */
+  CMD_ADD_SESSION,
+
+  /**
+   * Remove session from an address, using
+   * #GNUNET_ATS_address_del_session().
+   */
+  CMD_DEL_SESSION,
+
+  /**
+   * Change performance preferences for a peer, testing
+   * #GNUNET_ATS_performance_change_preference().
+   */
+  CMD_CHANGE_PREFERENCE,
+
+  /**
+   * Provide allocation quality feedback, testing
+   * #GNUNET_ATS_performance_give_feedback().
+   */
+  CMD_PROVIDE_FEEDBACK,
+
+  /**
+   * Obtain list of all addresses, testing
+   * #GNUNET_ATS_performance_list_addresses().
+   */
+  CMD_LIST_ADDRESSES
+
+  /* TODO: reserve bandwidth */
+
+};
+
+
+/**
+ * Details for the #CMD_ADD_ADDRESS command.
+ */
+struct CommandAddAddress
+{
+  /**
+   * Number of the peer (used to generate PID).
+   */
+  unsigned int pid;
+
+  /**
+   * Number of the address (used to generate binary address).
+   */
+  unsigned int addr_num;
+
+  /**
+   * Session to supply, 0 for NULL.
+   */
+  unsigned int session;
+
+  /**
+   * Flags to set for the address.
+   */
+  enum GNUNET_HELLO_AddressInfo addr_flags;
+
+  /**
+   * Performance properties to supply.
+   */
+  struct GNUNET_ATS_Properties properties;
+
+  /**
+   * Expect the operation to fail (duplicate).
+   */
+  int expect_fail;
+
+  /**
+   * Here the result of the add address operation will be stored.
+   */
+  struct GNUNET_ATS_AddressRecord *ar;
+};
+
+
+/**
+ * Details for the #CMD_DEL_ADDRESS command.
+ */
+struct CommandDelAddress
+{
+  /**
+   * Label of the corresponding #CMD_ADD_ADDRESS that
+   * we are now to remove.
+   */
+  const char *add_label;
+};
+
+
+/**
+ * Details for the #CMD_AWAIT_ADDRESS_SUGGESTION command.
+ */
+struct CommandAwaitAddressSuggestion
+{
+  /**
+   * For which peer do we expect a suggestion?
+   */
+  unsigned int pid;
+
+  /**
+   * If we expect the address suggested to match a particular
+   * addition, specify the label of the add operation here. Otherwise
+   * use NULL for "any" available address.
+   */
+  const char *add_label;
+
+};
+
+
+/**
+ * Details for the #CMD_AWAIT_DISCONNECT_SUGGESTION command.
+ */
+struct CommandAwaitDisconnectSuggestion
+{
+  /**
+   * For which peer do we expect the disconnect?
+   */
+  unsigned int pid;
+
+};
+
+
+/**
+ * Details for the #CMD_REQUEST_CONNECTION_START command.
+ */
+struct CommandRequestConnectionStart
+{
+  /**
+   * Identity of the peer we would like to connect to.
+   */
+  unsigned int pid;
+
+  /**
+   * Location where we store the handle returned from
+   * #GNUNET_ATS_connectivity_suggest().
+   */
+  struct GNUNET_ATS_ConnectivitySuggestHandle *csh;
+};
+
+
+/**
+ * Details for the #CMD_REQUEST_CONNECTION_STOP command.
+ */
+struct CommandRequestConnectionStop
+{
+  /**
+   * Label of the corresponding #CMD_REQUEST_CONNECTION_START that
+   * we are now stopping.
+   */
+  const char *connect_label;
+};
+
+
+/**
+ * Details for the #CMD_AWAIT_ADDRESS_INFORMATION command.
+ */
+struct CommandAwaitAddressInformation
+{
+  /**
+   * For which address do we expect information?
+   * The address is identified by the respective
+   * label of the corresponding add operation.
+   */
+  const char *add_label;
+
+  /**
+   * Label of a possible update operation that may
+   * have modified the properties.  NULL to use
+   * the properties from the @e add_label.
+   */
+  const char *update_label;
+
+};
+
+
+/**
+ * Details for the #CMD_UPDATE_ADDRESS command.
+ */
+struct CommandUpdateAddress
+{
+  /**
+   * Label of the addresses's add operation.
+   */
+  const char *add_label;
+
+  /**
+   * Performance properties to supply.
+   */
+  struct GNUNET_ATS_Properties properties;
+
+};
+
+
+/**
+ * Details for the #CMD_ADD_SESSION command.
+ */
+struct CommandAddSession
+{
+ /**
+   * Label of the addresses's add operation.
+   */
+  const char *add_label;
+
+  /**
+   * Session to supply.
+   */
+  unsigned int session;
+
+};
+
+
+/**
+ * Details for the #CMD_DEL_SESSION command.
+ */
+struct CommandDelSession
+{
+ /**
+   * Label of the addresses's add operation.
+   */
+  const char *add_session_label;
+
+};
+
+
+/**
+ * Details for the #CMD_CHANGE_PREFERENCE command.
+ */
+struct CommandChangePreference
+{
+  /**
+   * Identity of the peer we have a preference change towards.
+   */
+  unsigned int pid;
+
+  /* FIXME: preference details! */
+
+};
+
+
+/**
+ * Details for the #CMD_PROVIDE_FEEDBACK command.
+ */
+struct CommandProvideFeedback
+{
+  /**
+   * Identity of the peer we have a feedback for.
+   */
+  unsigned int pid;
+
+  /**
+   * Over which timeframe does the feedback apply?
+   */
+  struct GNUNET_TIME_Relative scope;
+
+  /* FIXME: feedback details! */
+};
+
+
+/**
+ * Details for the #CMD_LIST_ADDRESSES command.
+ */
+struct CommandListAddresses
+{
+  /**
+   * Identity of the peer we want a list for.
+   */
+  unsigned int pid;
+
+  /**
+   * All addresses or just active?
+   */
+  int all;
+
+  /**
+   * Minimum number of addresses the callback may report.
+   */
+  unsigned int min_calls;
+
+  /**
+   * Maximum number of addresses the callback may report.
+   */
+  unsigned int max_calls;
+
+  /**
+   * Minimum number of active addresses the callback may report.
+   */
+  unsigned int min_active_calls;
+
+  /**
+   * Maximum number of active addresses the callback may report.
+   */
+  unsigned int max_active_calls;
+
+  /**
+   * Number of calls the command invoked the callback with
+   * an address marked as active. (Set by command).
+   */
+  unsigned int active_calls;
+
+  /**
+   * Number of calls the command invoked the callback with
+   * any address marked as available to ATS. (Set by command).
+   */
+  unsigned int calls;
+
+  /**
+   * Location where we store the return value from
+   * #GNUNET_ATS_performance_list_addresses().
+   */
+  struct GNUNET_ATS_AddressListHandle *alh;
+
+};
+
+
+/**
+ * A command for the test case interpreter.
+ */
+struct Command
+{
+  /**
+   * Command code to run.
+   */
+  enum CommandCode code;
+
+  /**
+   * Commands can be given a label so we can reference them later.
+   */
+  const char *label;
+
+  /**
+   * Additional arguments to commands, if any.
+   */
+  union {
+
+    struct CommandAddAddress add_address;
+
+    struct CommandDelAddress del_address;
+
+    struct CommandAwaitAddressSuggestion await_address_suggestion;
+
+    struct CommandAwaitDisconnectSuggestion await_disconnect_suggestion;
+
+    struct CommandRequestConnectionStart request_connection_start;
+
+    struct CommandRequestConnectionStop request_connection_stop;
+
+    struct CommandAwaitAddressInformation await_address_information;
+
+    struct CommandUpdateAddress update_address;
+
+    struct CommandAddSession add_session;
+
+    struct CommandDelSession del_session;
+
+    struct CommandChangePreference change_preference;
+
+    struct CommandProvideFeedback provide_feedback;
+
+    struct CommandListAddresses list_addresses;
+
+  } details;
+
+};
+
+
+/**
+ * Run ATS test.
+ *
+ * @param argc length of @a argv
+ * @param argv command line
+ * @param cmds commands to run with the interpreter
+ * @param timeout how long is the test allowed to take?
+ * @return 0 on success
+ */
+int
+TEST_ATS_run (int argc,
+              char *argv[],
+              struct Command *cmds,
+              struct GNUNET_TIME_Relative timeout);
+
+#endif

Modified: gnunet/src/ats/test_ats_mlp.conf
===================================================================
--- gnunet/src/ats/test_ats_mlp.conf    2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_mlp.conf    2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,5 +1,5 @@
 [PATHS]
-GNUNET_TEST_HOME = /tmp/test-ats-api-scheduling/
+GNUNET_TEST_HOME = /tmp/test-ats-mlp/
 
 [ats]
 # Enable MLP mode (default: NO)

Deleted: gnunet/src/ats/test_ats_solver_add_address.c
===================================================================
--- gnunet/src/ats/test_ats_solver_add_address.c        2015-02-11 16:16:14 UTC 
(rev 35220)
+++ gnunet/src/ats/test_ats_solver_add_address.c        2015-02-11 16:17:20 UTC 
(rev 35221)
@@ -1,265 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010-2013 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 3, 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.
- */
-/**
- * @file ats/test_ats_solver_add_address.c
- * @brief solver test: add address
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testbed_service.h"
-#include "gnunet_ats_service.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static int
-stat_cb (void *cls,
-         const char *subsystem,
-         const char *name,
-         uint64_t value,
-         int is_persistent);
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-
-  if (NULL != die_task)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  free_test_address (&test_addr);
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  /* ignored in this test */
-}
-
-
-static int
-stat_cb (void *cls,
-         const char *subsystem,
-         const char *name,
-         uint64_t value,
-         int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-  if (1 == value)
-  {
-    GNUNET_SCHEDULER_add_now (&end, NULL);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *mycfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", mycfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (mycfg, &address_suggest_cb, NULL);
-  if (NULL == sched_ats)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not connect to ATS scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats, &test_hello_address, test_session, 
test_ats_info, test_ats_count);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  char *sep;
-  char *src_filename = GNUNET_strdup (__FILE__);
-  char *test_filename = GNUNET_strdup (argv[0]);
-  char *config_file;
-  char *solver;
-
-  ret = 0;
-
-  if (NULL == (sep  = (strstr (src_filename,".c"))))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  sep[0] = '\0';
-
-  if (NULL != (sep = strstr (test_filename, ".exe")))
-    sep[0] = '\0';
-
-  if (NULL == (solver = strstr (test_filename, src_filename)))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  solver += strlen (src_filename) +1;
-
-  if (0 == strcmp(solver, "proportional"))
-  {
-    config_file = "test_ats_solver_proportional.conf";
-  }
-  else if (0 == strcmp(solver, "mlp"))
-  {
-    config_file = "test_ats_solver_mlp.conf";
-  }
-  else if ((0 == strcmp(solver, "ril")))
-  {
-    config_file = "test_ats_solver_ril.conf";
-  }
-  else
-  {
-    GNUNET_break (0);
-    GNUNET_free (src_filename);
-    GNUNET_free (test_filename);
-    return 1;
-  }
-
-  GNUNET_free (src_filename);
-  GNUNET_free (test_filename);
-
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-solver",
-      config_file, &run, NULL ))
-    return GNUNET_SYSERR;
-
-  return ret;
-}
-
-/* end of file test_ats_solver_add_address.c */

Deleted: gnunet/src/ats/test_ats_solver_add_address_and_request.c
===================================================================
--- gnunet/src/ats/test_ats_solver_add_address_and_request.c    2015-02-11 
16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_solver_add_address_and_request.c    2015-02-11 
16:17:20 UTC (rev 35221)
@@ -1,305 +0,0 @@
-/*
-  if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, &ats_perf_cb, 
NULL)))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        "Failed to connect to performance API\n");
-    GNUNET_SCHEDULER_add_now (end_badly, NULL);
-  }
- This file is part of GNUnet.
- Copyright (C) 2010-2013 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 3, 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.
- */
-/**
- * @file ats/test_ats_solver_add_address.c
- * @brief solver test:  add address, request address and wait for suggest
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testbed_service.h"
-#include "gnunet_ats_service.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task *die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Connectivity handle
- */
-static struct GNUNET_ATS_ConnectivityHandle *connect_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static int
-stat_cb(void *cls, const char *subsystem, const char *name, uint64_t value,
-        int is_persistent);
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-  if (NULL != connect_ats)
-  {
-    GNUNET_ATS_connectivity_done (connect_ats);
-    connect_ats = NULL;
-  }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_assert (NULL != address);
-  GNUNET_assert (NULL == session);
-  GNUNET_assert (ntohl(bandwidth_in.value__) > 0);
-  GNUNET_assert (ntohl(bandwidth_out.value__) > 0);
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Received sugggestion for peer `%s'\n",
-              GNUNET_i2s (peer));
-  GNUNET_SCHEDULER_add_now (&end, NULL);
-}
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent)
-{
-  static struct GNUNET_ATS_ConnectivitySuggestHandle *sh;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-  if (NULL == sh)
-    sh = GNUNET_ATS_connectivity_suggest (connect_ats, &p.id);
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *mycfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", mycfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-
-  connect_ats = GNUNET_ATS_connectivity_init (mycfg);
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (mycfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not connect to ATS scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats,
-                          &test_hello_address, NULL,
-                          test_ats_info, test_ats_count);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  char *sep;
-  char *src_filename = GNUNET_strdup (__FILE__);
-  char *test_filename = GNUNET_strdup (argv[0]);
-  char *config_file;
-  char *solver;
-  int delayed = GNUNET_NO;
-
-  ret = 0;
-
-  if (NULL == (sep  = (strstr (src_filename,".c"))))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  sep[0] = '\0';
-
-  if (NULL != (sep = strstr (test_filename, ".exe")))
-    sep[0] = '\0';
-
-  if (NULL == (solver = strstr (test_filename, src_filename)))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-
-  solver += strlen (src_filename) +1;
-
-  if (NULL != strstr (solver, "delayed_"))
-  {
-    delayed = GNUNET_YES;
-    solver += strlen  ("delayed_");
-  }
-
-  if (0 == strcmp(solver, "proportional"))
-  {
-    if (delayed)
-      config_file = "test_ats_solver_delayed_proportional.conf";
-    else
-      config_file = "test_ats_solver_proportional.conf";
-  }
-  else if (0 == strcmp(solver, "mlp"))
-  {
-    if (delayed)
-      config_file = "test_ats_solver_delayed_mlp.conf";
-    else
-      config_file = "test_ats_solver_mlp.conf";
-  }
-  else if ((0 == strcmp(solver, "ril")))
-  {
-    if (delayed)
-      config_file = "test_ats_solver_delayed_ril.conf";
-    else
-      config_file = "test_ats_solver_ril.conf";
-  }
-  else
-  {
-    GNUNET_break (0);
-    GNUNET_free (src_filename);
-    GNUNET_free (test_filename);
-    FPRINTF (stderr, "Invalid test name or configuration not found 
`%s'\n",src_filename);
-    return 1;
-  }
-
-  GNUNET_free (src_filename);
-  GNUNET_free (test_filename);
-
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-solver",
-      config_file, &run, NULL ))
-    return GNUNET_SYSERR;
-
-  return ret;
-}
-
-/* end of file test_ats_solver_add_address.c */

Deleted: gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c
===================================================================
--- gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c   
2015-02-11 16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c   
2015-02-11 16:17:20 UTC (rev 35221)
@@ -1,455 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010-2013 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 3, 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.
- */
-/**
- * @file ats/test_ats_solver_alternative_after_delete_address.c
- * @brief solver test:  add 2 addresses, request address, delete, expect 
alternative
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testbed_service.h"
-#include "gnunet_ats_service.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Connectivity handle
- */
-static struct GNUNET_ATS_ConnectivityHandle *connect_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Alternative test address
- */
-static struct Test_Address alt_test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address alt_test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-/**
- * Test state
- */
-static int addresses_added;
-
-static int first_address_suggested;
-
-static int first_address_deleted;
-
-static int second_address_deleted;
-
-static int second_address_suggested = GNUNET_YES;
-
-static struct GNUNET_HELLO_Address *first_suggestion;
-
-static struct GNUNET_HELLO_Address *second_suggestion;
-
-/**
- * 1st Address we will destroy.
- */
-static struct GNUNET_ATS_AddressRecord *ar;
-
-/**
- * 2nd Address we will destroy.
- */
-static struct GNUNET_ATS_AddressRecord *ar2;
-
-
-static int
-stat_cb (void *cls, const char *subsystem, const char *name, uint64_t value,
-         int is_persistent);
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  if (NULL != die_task)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-  if (NULL != connect_ats)
-  {
-    GNUNET_ATS_connectivity_done (connect_ats);
-    connect_ats = NULL;
-  }
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-  GNUNET_STATISTICS_watch_cancel (stats,
-                                  "ats",
-                                  "# addresses",
-                                  &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  free_test_address (&test_addr);
-  GNUNET_free_non_null (first_suggestion);
-  first_suggestion = NULL;
-  GNUNET_free_non_null (second_suggestion);
-  second_suggestion = NULL;
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-end_badly_now ()
-{
-  if (NULL != die_task)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-  GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Received a sugggestion for peer `%s'\n",
-              GNUNET_i2s (peer));
-  if (GNUNET_NO == first_address_suggested)
-  {
-    if  (NULL == first_suggestion)
-    {
-      if ((NULL == address) || (NULL != session))
-      {
-        GNUNET_break (0);
-        end_badly_now ();
-        return;
-      }
-      if ((ntohl(bandwidth_in.value__) == 0) ||
-          (ntohl(bandwidth_out.value__) == 0))
-      {
-        GNUNET_break (0);
-        end_badly_now ();
-        return;
-      }
-
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                  "Received 1st sugggestion for peer `%s' : `%s'\n",
-                  GNUNET_i2s (&address->peer), (char *) address->address);
-
-      first_suggestion = GNUNET_HELLO_address_copy (address);
-      first_address_suggested = GNUNET_YES;
-
-
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                  "Deleting 1st address for peer `%s' : `%s'\n",
-                  GNUNET_i2s (&address->peer),
-                  (char *) address->address);
-      if (0 == (strcmp ((char *) address->address,
-                        "test")))
-      {
-        GNUNET_assert (NULL != ar);
-        GNUNET_ATS_address_destroy (ar);
-        ar = NULL;
-      }
-      else
-      {
-        GNUNET_assert (NULL != ar2);
-        GNUNET_ATS_address_destroy (ar2);
-        ar2 = NULL;
-      }
-
-      first_address_deleted = GNUNET_YES;
-
-      return;
-    }
-  }
-  if (GNUNET_YES == first_address_deleted)
-  {
-    if (NULL == second_suggestion)
-    {
-      if ((NULL == address) || (NULL != session))
-      {
-        GNUNET_break (0);
-        end_badly_now ();
-        return;
-      }
-
-      if (0 !=
-          memcmp (address->address,
-                  first_suggestion->address,
-                  (first_suggestion->address_length < address->address_length)
-                  ? first_suggestion->address_length : 
address->address_length))
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                    "Received 2nd sugggestion for peer `%s' : `%s'\n",
-                    GNUNET_i2s (&address->peer),
-                    (char *) address->address);
-        second_suggestion = GNUNET_HELLO_address_copy (address);
-        second_address_suggested = GNUNET_YES;
-
-        GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                    "Deleting 2nd address for peer `%s' : `%s'\n",
-                    GNUNET_i2s (&address->peer),
-                    (char *) address->address);
-        if (NULL != ar)
-        {
-          GNUNET_assert (NULL == ar2);
-          GNUNET_ATS_address_destroy (ar);
-          ar = NULL;
-        }
-        else
-        {
-          GNUNET_assert (NULL != ar2);
-          GNUNET_ATS_address_destroy (ar2);
-          ar2 = NULL;
-        }
-        second_address_deleted = GNUNET_YES;
-        return;
-      }
-    }
-  }
-  if (GNUNET_YES == second_address_deleted)
-  {
-    /* Expecting disconnect */
-    if ((ntohl(bandwidth_in.value__) == 0) &&
-        (ntohl(bandwidth_out.value__) == 0))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                  "ATS tells me to disconnect\n");
-      GNUNET_SCHEDULER_add_now (&end, NULL);
-      return;
-    }
-    else
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                  "Expected disconnect but received address `%s' with 
bandwidth \n",
-                  (char *) address->address);
-    }
-  }
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-  if ((GNUNET_NO == addresses_added) && (value == 2))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "All addresses added, requesting....\n");
-    /* We have 2 addresses, so we can request */
-    addresses_added = GNUNET_YES;
-    GNUNET_ATS_connectivity_suggest (connect_ats, &p.id);
-  }
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *mycfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", mycfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  connect_ats = GNUNET_ATS_connectivity_init (mycfg);
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (mycfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not connect to ATS scheduling!\n");
-    end_badly_now ();
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session,
-                       "test", strlen ("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding alternative address without session */
-  test_session = NULL;
-  create_test_address (&alt_test_addr, "test", test_session,
-                       "alt_test", strlen ("alt_test") + 1);
-  alt_test_hello_address.peer = p.id;
-  alt_test_hello_address.transport_name = alt_test_addr.plugin;
-  alt_test_hello_address.address = alt_test_addr.addr;
-  alt_test_hello_address.address_length = alt_test_addr.addr_len;
-
-
-  /* Adding address */
-  ar = GNUNET_ATS_address_add (sched_ats, &test_hello_address, NULL,
-                               test_ats_info, test_ats_count);
-  /* Adding alternative address */
-  ar2 = GNUNET_ATS_address_add (sched_ats, &alt_test_hello_address, NULL,
-                                test_ats_info, test_ats_count);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  char *sep;
-  char *src_filename = GNUNET_strdup (__FILE__);
-  char *test_filename = GNUNET_strdup (argv[0]);
-  const char *config_file;
-  char *solver;
-
-  ret = 0;
-
-  if (NULL == (sep  = (strstr (src_filename, ".c"))))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  sep[0] = '\0';
-
-  if (NULL != (sep = strstr (test_filename, ".exe")))
-    sep[0] = '\0';
-
-  if (NULL == (solver = strstr (test_filename, src_filename)))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  solver += strlen (src_filename) +1;
-
-  if (0 == strcmp(solver, "proportional"))
-  {
-    config_file = "test_ats_solver_proportional.conf";
-  }
-  else if (0 == strcmp(solver, "mlp"))
-  {
-    config_file = "test_ats_solver_mlp.conf";
-  }
-  else if ((0 == strcmp(solver, "ril")))
-  {
-    config_file = "test_ats_solver_ril.conf";
-  }
-  else
-  {
-    GNUNET_break (0);
-    GNUNET_free (src_filename);
-    GNUNET_free (test_filename);
-    return 1;
-  }
-
-  GNUNET_free (src_filename);
-  GNUNET_free (test_filename);
-
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-solver",
-      config_file, &run, NULL ))
-    return GNUNET_SYSERR;
-
-  return ret;
-}
-
-/* end of file test_ats_solver_alternative_after_delete_address.c */

Deleted: gnunet/src/ats/test_ats_solver_request_and_add_address.c
===================================================================
--- gnunet/src/ats/test_ats_solver_request_and_add_address.c    2015-02-11 
16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_solver_request_and_add_address.c    2015-02-11 
16:17:20 UTC (rev 35221)
@@ -1,274 +0,0 @@
-/*
-  if (NULL == (perf_ats = GNUNET_ATS_performance_init (cfg, &ats_perf_cb, 
NULL)))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        "Failed to connect to performance API\n");
-    GNUNET_SCHEDULER_add_now (end_badly, NULL);
-  }
- This file is part of GNUnet.
- Copyright (C) 2010-2013 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 3, 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.
- */
-/**
- * @file ats/test_ats_solver_add_address.c
- * @brief solver test: request address, add address and wait for suggest
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testbed_service.h"
-#include "gnunet_ats_service.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Connectivity handle
- */
-static struct GNUNET_ATS_ConnectivityHandle *connect_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-static struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-
-static int
-stat_cb(void *cls, const char *subsystem, const char *name, uint64_t value,
-        int is_persistent);
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-  if (NULL != connect_ats)
-  {
-    GNUNET_ATS_connectivity_done (connect_ats);
-    connect_ats = NULL;
-  }
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-
-  free_test_address (&test_addr);
-
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end ( NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-
-  GNUNET_assert (NULL != address);
-  GNUNET_assert (NULL == session);
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Received sugggestion for peer `%s'\n",
-      GNUNET_i2s (&address->peer));
-
-  GNUNET_SCHEDULER_add_now (&end, NULL);
-}
-
-
-static int
-stat_cb(void *cls, const char *subsystem,
-        const char *name, uint64_t value,
-        int is_persistent)
-{
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
-      subsystem,name, value);
-  return GNUNET_OK;
-}
-
-static void
-run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
-    struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", mycfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  connect_ats = GNUNET_ATS_connectivity_init (mycfg);
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (mycfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Request */
-  GNUNET_ATS_connectivity_suggest (connect_ats, &p.id);
-
-
-  /* Adding address */
-  GNUNET_ATS_address_add (sched_ats, &test_hello_address, NULL, test_ats_info, 
test_ats_count);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  char *sep;
-  char *src_filename = GNUNET_strdup (__FILE__);
-  char *test_filename = GNUNET_strdup (argv[0]);
-  char *config_file;
-  char *solver;
-
-  ret = 0;
-
-  if (NULL == (sep  = (strstr (src_filename,".c"))))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  sep[0] = '\0';
-
-  if (NULL != (sep = strstr (test_filename, ".exe")))
-    sep[0] = '\0';
-
-  if (NULL == (solver = strstr (test_filename, src_filename)))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  solver += strlen (src_filename) +1;
-
-  if (0 == strcmp(solver, "proportional"))
-  {
-    config_file = "test_ats_solver_proportional.conf";
-  }
-  else if (0 == strcmp(solver, "mlp"))
-  {
-    config_file = "test_ats_solver_mlp.conf";
-  }
-  else if ((0 == strcmp(solver, "ril")))
-  {
-    config_file = "test_ats_solver_ril.conf";
-  }
-  else
-  {
-    GNUNET_break (0);
-    GNUNET_free (src_filename);
-    GNUNET_free (test_filename);
-    return 1;
-  }
-
-  GNUNET_free (src_filename);
-  GNUNET_free (test_filename);
-
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-solver",
-      config_file, &run, NULL ))
-    return GNUNET_SYSERR;
-
-  return ret;
-}
-
-/* end of file test_ats_solver_add_address.c */

Deleted: gnunet/src/ats/test_ats_solver_request_and_delete_address.c
===================================================================
--- gnunet/src/ats/test_ats_solver_request_and_delete_address.c 2015-02-11 
16:16:14 UTC (rev 35220)
+++ gnunet/src/ats/test_ats_solver_request_and_delete_address.c 2015-02-11 
16:17:20 UTC (rev 35221)
@@ -1,307 +0,0 @@
-/*
- This file is part of GNUnet.
- Copyright (C) 2010-2013 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 3, 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.
- */
-/**
- * @file ats/test_ats_solver_request_and_delete_address.c
- * @brief solver test:  add address, request address, delete address and wait 
for disconnect
- * @author Christian Grothoff
- * @author Matthias Wachs
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testbed_service.h"
-#include "gnunet_ats_service.h"
-#include "test_ats_api_common.h"
-
-/**
- * Timeout task
- */
-static struct GNUNET_SCHEDULER_Task * die_task;
-
-/**
- * Statistics handle
- */
-static struct GNUNET_STATISTICS_Handle *stats;
-
-/**
- * Scheduling handle
- */
-static struct GNUNET_ATS_SchedulingHandle *sched_ats;
-
-/**
- * Connectivity handle
- */
-static struct GNUNET_ATS_ConnectivityHandle *connect_ats;
-
-/**
- * Return value
- */
-static int ret;
-
-/**
- * Test address
- */
-static struct Test_Address test_addr;
-
-/**
- * Test peer
- */
-static struct PeerContext p;
-
-/**
- * HELLO address
- */
-static struct GNUNET_HELLO_Address test_hello_address;
-
-/**
- * Session
- */
-static void *test_session;
-
-/**
- * Test ats info
- */
-struct GNUNET_ATS_Information test_ats_info[2];
-
-/**
- * Test ats count
- */
-static uint32_t test_ats_count;
-
-/**
- * The address we will delete.
- */
-static struct GNUNET_ATS_AddressRecord *ar;
-
-static int address_deleted = GNUNET_NO;
-
-
-static int
-stat_cb(void *cls, const char *subsystem, const char *name, uint64_t value,
-        int is_persistent);
-
-
-static void
-end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-  if (die_task != NULL)
-  {
-    GNUNET_SCHEDULER_cancel (die_task);
-    die_task = NULL;
-  }
-
-  if (NULL != sched_ats)
-  {
-    GNUNET_ATS_scheduling_done (sched_ats);
-    sched_ats = NULL;
-  }
-
-  if (NULL != connect_ats)
-  {
-    GNUNET_ATS_connectivity_done (connect_ats);
-    connect_ats = NULL;
-  }
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
-  if (NULL != stats)
-  {
-    GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
-    stats = NULL;
-  }
-  free_test_address (&test_addr);
-  ret = 0;
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  die_task = NULL;
-  end (NULL, NULL);
-  ret = GNUNET_SYSERR;
-}
-
-
-static void
-address_suggest_cb (void *cls,
-                    const struct GNUNET_PeerIdentity *peer,
-                    const struct GNUNET_HELLO_Address *address,
-                    struct Session *session,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
-{
-  if (GNUNET_NO == address_deleted)
-  {
-    /* Expected address suggestion */
-    GNUNET_assert (NULL != address);
-    GNUNET_assert (NULL == session);
-    GNUNET_assert (ntohl(bandwidth_in.value__) > 0);
-    GNUNET_assert (ntohl(bandwidth_out.value__) > 0);
-
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Received sugggestion for peer `%s', deleting address\n",
-                GNUNET_i2s (&address->peer));
-    address_deleted = GNUNET_YES;
-    /* Destroying address and wait for disconnect suggestion */
-    GNUNET_ATS_address_destroy (ar);
-    ar = NULL;
-  }
-  else
-  {
-    /* Expecting disconnect */
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Received sugggestion for peer `%s': %u %u\n",
-                GNUNET_i2s (peer),
-                (unsigned int) ntohl (bandwidth_in.value__),
-                (unsigned int) ntohl (bandwidth_out.value__));
-
-    if ((ntohl(bandwidth_in.value__) == 0) &&
-        (ntohl(bandwidth_out.value__) == 0))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Done!\n");
-      GNUNET_SCHEDULER_add_now (&end, NULL);
-    }
-  }
-}
-
-
-static int
-stat_cb (void *cls, const char *subsystem,
-         const char *name, uint64_t value,
-         int is_persistent)
-{
-  static struct GNUNET_ATS_ConnectivitySuggestHandle *sh;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "ATS statistics: `%s' `%s' %llu\n",
-              subsystem,
-              name,
-              value);
-  if (NULL == sh)
-    sh = GNUNET_ATS_connectivity_suggest (connect_ats, &p.id);
-  return GNUNET_OK;
-}
-
-
-static void
-run (void *cls,
-     const struct GNUNET_CONFIGURATION_Handle *mycfg,
-     struct GNUNET_TESTING_Peer *peer)
-{
-  die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
-  stats = GNUNET_STATISTICS_create ("ats", mycfg);
-  GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
-
-  connect_ats = GNUNET_ATS_connectivity_init (mycfg);
-
-  /* Connect to ATS scheduling */
-  sched_ats = GNUNET_ATS_scheduling_init (mycfg, &address_suggest_cb, NULL);
-  if (sched_ats == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not connect to ATS 
scheduling!\n");
-    GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-    return;
-  }
-
-  /* Set up peer */
-  memset (&p.id, '1', sizeof (p.id));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created peer `%s'\n",
-              GNUNET_i2s_full(&p.id));
-
-  /* Prepare ATS Information */
-  test_ats_info[0].type = htonl (GNUNET_ATS_NETWORK_TYPE);
-  test_ats_info[0].value = htonl(GNUNET_ATS_NET_WAN);
-  test_ats_info[1].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
-  test_ats_info[1].value = htonl(1);
-  test_ats_count = 2;
-
-  /* Adding address without session */
-  test_session = NULL;
-  create_test_address (&test_addr, "test", test_session, "test", strlen 
("test") + 1);
-  test_hello_address.peer = p.id;
-  test_hello_address.transport_name = test_addr.plugin;
-  test_hello_address.address = test_addr.addr;
-  test_hello_address.address_length = test_addr.addr_len;
-
-  /* Adding address */
-  ar = GNUNET_ATS_address_add (sched_ats, &test_hello_address,
-                               NULL,
-                               test_ats_info, test_ats_count);
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  char *sep;
-  char *src_filename = GNUNET_strdup (__FILE__);
-  char *test_filename = GNUNET_strdup (argv[0]);
-  char *config_file;
-  char *solver;
-
-  ret = 0;
-
-  if (NULL == (sep  = (strstr (src_filename,".c"))))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  sep[0] = '\0';
-
-  if (NULL != (sep = strstr (test_filename, ".exe")))
-    sep[0] = '\0';
-
-  if (NULL == (solver = strstr (test_filename, src_filename)))
-  {
-    GNUNET_break (0);
-    return -1;
-  }
-  solver += strlen (src_filename) +1;
-
-  if (0 == strcmp(solver, "proportional"))
-  {
-    config_file = "test_ats_solver_proportional.conf";
-  }
-  else if (0 == strcmp(solver, "mlp"))
-  {
-    config_file = "test_ats_solver_mlp.conf";
-  }
-  else if ((0 == strcmp(solver, "ril")))
-  {
-    config_file = "test_ats_solver_ril.conf";
-  }
-  else
-  {
-    GNUNET_break (0);
-    GNUNET_free (src_filename);
-    GNUNET_free (test_filename);
-    return 1;
-  }
-
-  GNUNET_free (src_filename);
-  GNUNET_free (test_filename);
-
-  if (0 != GNUNET_TESTING_peer_run ("test-ats-solver",
-      config_file, &run, NULL ))
-    return GNUNET_SYSERR;
-
-  return ret;
-}
-
-/* end of file test_ats_solver_request_and_delete_address_proportional.c */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]