check_test_files || exit 1
 
+COMM_ARGS="-s /tmp/interlogger.perftest --file-prefix=/tmp/perftest.log"
 
 echo "-------------------------------------------"
 echo "Logging test:"
 
 
 PERFTEST_CONSUMER=$STAGEDIR/bin/glite-lb-interlogd-perf-empty
-CONSUMER_ARGS="-d"
+CONSUMER_ARGS="-d $COMM_ARGS"
 
-LOGJOBS_ARGS="--nofile"
+LOGJOBS_ARGS="--nofile $COMM_ARGS"
 echo "Only IPC"
 run_test il $numjobs
 print_result
-LOGJOBS_ARGS=""
+LOGJOBS_ARGS=" $COMM_ARGS"
 echo "IPC & files"
 run_test il $numjobs
 print_result
-rm -f /tmp/dglogd.log.*
+rm -f /tmp/perftest.log.*
+
 
 echo "--------------------------------"
 echo "Interlogger test:"
 echo -e "\tsmall_job \t big_job \t small_dag \t big_dag"
 
 PERFTEST_CONSUMER=$STAGEDIR/bin/glite-lb-interlogd-perf
-LOGJOBS_ARGS="--nofile"
+LOGJOBS_ARGS="--nofile $COMM_ARGS"
 
-CONSUMER_ARGS="-d --nosend --noparse"
+CONSUMER_ARGS="-d --nosend --noparse $COMM_ARGS"
 echo "No event parsing"
 run_test il $numjobs
 print_result
 
-CONSUMER_ARGS="-d --nosend --nosync"
+CONSUMER_ARGS="-d --nosend --nosync $COMM_ARGS"
 echo "No checking of event files"
 run_test il $numjobs
 print_result
 
-CONSUMER_ARGS="-d --nosend --norecover"
+CONSUMER_ARGS="-d --nosend --norecover $COMM_ARGS"
 echo "No recovery thread"
 run_test il $numjobs
 print_result
 
-CONSUMER_ARGS="-d --nosend"
+CONSUMER_ARGS="-d --nosend $COMM_ARGS"
 echo "Normal operation:"
 run_test il $numjobs
 print_result
 echo -e "\tsmall_job \t big_job \t small_dag \t big_dag"
 
 PERFTEST_CONSUMER=$STAGEDIR/bin/glite-lb-interlogd-perf
-LOGJOBS_ARGS=""
+LOGJOBS_ARGS=" $COMM_ARGS"
+
+CONSUMER_ARGS="-d --nosend --noparse $COMM_ARGS"
+echo "No event parsing"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
+CONSUMER_ARGS="-d --nosend --nosync $COMM_ARGS"
+echo "No checking of event files"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
+CONSUMER_ARGS="-d --nosend --norecover $COMM_ARGS"
+echo "No recovery thread"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
+CONSUMER_ARGS="-d --nosend $COMM_ARGS"
+echo "Normal operation:"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
 
-CONSUMER_ARGS="-d --nosend --noparse"
+echo "-------------------------------"
+echo "Interlogger test:"
+echo "  - events sent through IPC"
+echo "  - events consumed by empty BS"
+echo "-------------------------------"
+
+PERFTEST_CONSUMER=$STAGEDIR/bin/glite-lb-bkserverd
+CONSUMER_ARGS="-d --perf-sink=1"
+PERFTEST_COMPONENT=$STAGEDIR/bin/glite-lb-interlogd-perf
+LOGJOBS_ARGS="--nofile $COMM_ARGS"
+
+
+COMPONENT_ARGS="-d  --noparse $COMM_ARGS"
 echo "No event parsing"
 run_test il $numjobs
 print_result
-rm -f /tmp/dglogd.log.*
+rm -f /tmp/perftest.log.*
 
-CONSUMER_ARGS="-d --nosend --nosync"
+COMPONENT_ARGS="-d  --nosync $COMM_ARGS"
 echo "No checking of event files"
 run_test il $numjobs
 print_result
-rm -f /tmp/dglogd.log.*
+rm -f /tmp/perftest.log.*
 
-CONSUMER_ARGS="-d --nosend --norecover"
+COMPONENT_ARGS="-d  --norecover $COMM_ARGS"
 echo "No recovery thread"
 run_test il $numjobs
 print_result
-rm -f /tmp/dglogd.log.*
+rm -f /tmp/perftest.log.*
 
-CONSUMER_ARGS="-d --nosend"
+COMPONENT_ARGS="-d $COMM_ARGS"
 echo "Normal operation:"
 run_test il $numjobs
 print_result
-rm -f /tmp/dglogd.log.*
+rm -f /tmp/perftest.log.*
+
+
+echo "-----------------------------------"
+echo "Interlogger test:"
+echo "  - events sent through IPC & files"
+echo "  - events consumed by empty BS"
+echo "-----------------------------------"
+
+PERFTEST_CONSUMER=$STAGEDIR/bin/glite-lb-bkserverd
+CONSUMER_ARGS="-d --perf-sink=1"
+PERFTEST_COMPONENT=$STAGEDIR/bin/glite-lb-interlogd-perf
+LOGJOBS_ARGS=" $COMM_ARGS"
+
+
+COMPONENT_ARGS="-d  --noparse $COMM_ARGS"
+echo "No event parsing"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
+COMPONENT_ARGS="-d  --nosync $COMM_ARGS"
+echo "No checking of event files"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
+COMPONENT_ARGS="-d  --norecover $COMM_ARGS"
+echo "No recovery thread"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
+COMPONENT_ARGS="-d $COMM_ARGS"
+echo "Normal operation:"
+run_test il $numjobs
+print_result
+rm -f /tmp/perftest.log.*
+
 
 
 {
        struct event_queue *eq = (struct event_queue *)q;
        int ret, exit;
+       int retrycnt;
 
        if(init_errors(0) < 0) {
                il_log(LOG_ERR, "Error initializing thread specific data, exiting!");
        event_queue_cond_lock(eq);
 
        exit = 0;
+       retrycnt = 0;
        while(!exit) {
     
                clear_error();
 #else
                        il_log(LOG_INFO, "    could not connect to bookkeeping server %s, waiting for retry\n", eq->dest_name);
 #endif
+                       retrycnt++;
                } else {
+                       retrycnt = 0;
                        /* connected, send events */
                        switch(ret=event_queue_send(eq)) {
                                
 
                /* if there was some error with server, sleep for a while */
                /* iff !event_queue_empty() */
-               if(ret == 0) 
+               /* also allow for one more try immediately after server disconnect,
+                  which may cure server kicking us out after given number of connections */
+#ifndef LB_PERF
+               if((ret == 0) && (retrycnt == 0)) 
                        event_queue_sleep(eq);
+#endif
 
                if(exit) {
                        /* we have to clean up before exiting */