From 28d336020ca1f6dbb88d64cac3ffdd1a67ee3de7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 17 May 2005 00:03:50 +0000 Subject: * split packet scheduler into three seperate parts * test against Aplle test suit, most tests pass now * suppress auxiliary records by known answers * handle very large records git-svn-id: file:///home/lennart/svn/public/avahi/trunk@74 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-core/conformance-test.c | 108 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 avahi-core/conformance-test.c (limited to 'avahi-core/conformance-test.c') diff --git a/avahi-core/conformance-test.c b/avahi-core/conformance-test.c new file mode 100644 index 0000000..001bff1 --- /dev/null +++ b/avahi-core/conformance-test.c @@ -0,0 +1,108 @@ +/* $Id$ */ + +/*** + This file is part of avahi. + + avahi is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + avahi 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 Lesser General + Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with avahi; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include + +#include "core.h" +#include "util.h" + +static gchar *name = NULL; +static AvahiEntryGroup *group = NULL; +static int try = 0; +static AvahiServer *avahi = NULL; + +static gboolean dump_timeout(gpointer data) { + avahi_server_dump(avahi, stdout); + return TRUE; +} + +static void entry_group_callback(AvahiServer *s, AvahiEntryGroup *g, AvahiEntryGroupState state, gpointer userdata); + +static void create_service(gchar *t) { + gchar *n; + + g_assert(t || name); + + if (group) + avahi_entry_group_free(group); + + n = t ? g_strdup(t) : avahi_alternative_service_name(name); + g_free(name); + name = n; + + if (try > 10) + sleep(2); /* ugly ugly ugly hack */ + + group = avahi_entry_group_new(avahi, entry_group_callback, NULL); + avahi_server_add_service(avahi, group, 0, AF_UNSPEC, "_http._tcp", name, NULL, NULL, 80, "foo", NULL); + avahi_entry_group_commit(group); + + try++; +} + +static gboolean rename_timeout(gpointer data) { + + + if (access("flag", F_OK) == 0) { + create_service("New - Bonjour Service Name"); + return FALSE; + } + + return TRUE; +} + + + +static void entry_group_callback(AvahiServer *s, AvahiEntryGroup *g, AvahiEntryGroupState state, gpointer userdata) { + if (state == AVAHI_ENTRY_GROUP_COLLISION) + create_service(NULL); + else if (state == AVAHI_ENTRY_GROUP_ESTABLISHED) { + g_message("ESTABLISHED !!!!"); + try = 0; + } +} + +int main(int argc, char *argv[]) { + GMainLoop *loop = NULL; + + avahi = avahi_server_new(NULL); + create_service("gurke"); + avahi_server_dump(avahi, stdout); + + loop = g_main_loop_new(NULL, FALSE); + g_timeout_add(1000*5, dump_timeout, avahi); + g_timeout_add(1000*5, rename_timeout, avahi); + g_main_loop_run(loop); + g_main_loop_unref(loop); + + avahi_entry_group_free(group); + avahi_server_free(avahi); + + return 0; +} -- cgit