wqueue: Reject messges if queue is considered full

The write queue was always meant to not queue more than the
max_length messages but the implementation never rejected a
message.

Begin to log and enforce the queue size limit, add a testcase
to verify the code and initialize except_cb as part of a fix
for that new test case.

Real applications might now run into the queue limit and drop
messages where they just queued them before. It is unfortunate
but I still think it is good to implement the routine as it was
intended. We need to review osmo_wqueue_enqueue once more to
see that no msgb is leaked.

Change-Id: I1e6aef30f3e73d4bcf2967bc49f0783aa65395ae
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f5d095d..1aad2e9 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -13,7 +13,8 @@
 		 vty/vty_test comp128/comp128_test utils/utils_test	\
 		 smscb/gsm0341_test stats/stats_test			\
 		 bitvec/bitvec_test msgb/msgb_test bits/bitcomp_test	\
-		 tlv/tlv_test gsup/gsup_test fsm/fsm_test
+		 tlv/tlv_test gsup/gsup_test fsm/fsm_test	\
+		 write_queue/wqueue_test
 
 if ENABLE_MSGFILE
 check_PROGRAMS += msgfile/msgfile_test
@@ -133,6 +134,9 @@
 fsm_fsm_test_SOURCES = fsm/fsm_test.c
 fsm_fsm_test_LDADD = $(top_builddir)/src/libosmocore.la
 
+write_queue_wqueue_test_SOURCES = write_queue/wqueue_test.c
+write_queue_wqueue_test_LDADD = $(top_builddir)/src/libosmocore.la
+
 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
 	:;{ \
@@ -168,7 +172,7 @@
 	     utils/utils_test.ok stats/stats_test.ok			\
 	     bitvec/bitvec_test.ok msgb/msgb_test.ok bits/bitcomp_test.ok \
 	     sim/sim_test.ok tlv/tlv_test.ok gsup/gsup_test.ok		\
-	     fsm/fsm_test.ok fsm/fsm_test.err
+	     fsm/fsm_test.ok fsm/fsm_test.err write_queue/wqueue_test.ok
 
 DISTCLEANFILES = atconfig atlocal