From 26219e5767b96f3e6dac980d026381e8e2e06353 Mon Sep 17 00:00:00 2001
From: srugovac <>
Date: Thu, 15 Mar 2007 13:54:59 +0000
Subject: [PATCH] Layer 1 tests: more mature version
---
 org.glite.testsuites.ctb/LB/Makefile     | 14 ++++++
 org.glite.testsuites.ctb/LB/lb-l1.sh     | 85 ++++++++++++++++++--------------
 org.glite.testsuites.ctb/LB/testSocket.c | 58 ++++++++++++++++++++++
 3 files changed, 120 insertions(+), 37 deletions(-)
 create mode 100644 org.glite.testsuites.ctb/LB/Makefile
 create mode 100755 org.glite.testsuites.ctb/LB/testSocket.c
diff --git a/org.glite.testsuites.ctb/LB/Makefile b/org.glite.testsuites.ctb/LB/Makefile
new file mode 100644
index 0000000..34295c1
--- /dev/null
+++ b/org.glite.testsuites.ctb/LB/Makefile
@@ -0,0 +1,14 @@
+CC=gcc
+CFLAGS=
+EXEC=testSocket
+
+all: $(EXEC)
+
+testSocket: testSocket.c
+	$(CC) -o $@ $< $(CFLAGS) 
+
+clean:
+	rm -rf *.o
+
+mrproper: clean
+	rm -rf $(EXEC)
diff --git a/org.glite.testsuites.ctb/LB/lb-l1.sh b/org.glite.testsuites.ctb/LB/lb-l1.sh
index 2c526e9..e60f40b 100755
--- a/org.glite.testsuites.ctb/LB/lb-l1.sh
+++ b/org.glite.testsuites.ctb/LB/lb-l1.sh
@@ -3,16 +3,17 @@
 # Script for testing of LB services 
 # Basic test: PING
 #             check LB binaries
-#             check running services
-###############################################################################
-#                                                       #
-# Returned values:                                      #
-#                                                       #
-#                 Exit  TEST_OK: Test Passed            #
-#                 Exit  TEST_ERROR: Test Failed         #
-#                 Exit  2: Wrong Input                  #
-#                                                       #
-#########################################################
+#             check running services with sockets
+#####################################################################################
+#                                                              #
+# Returned values:                                             #
+#                                                              #
+#                 Exit  TEST_OK: Test Passed                   #
+#                 Exit  TEST_ERROR: Test Failed                #
+#                 Exit  2: Wrong Input                         #
+#                                                              #
+# Authors: Shkelzen Rugovac, Frederic Munster, Othmane Bouhali #
+################################################################
                                                                                 
 ##
 # defining variables
@@ -38,7 +39,7 @@ showHelp()
 	echo  "Usage: $0 [OPTIONS] "
 	echo  "Options:"
 	echo  " -h | --help                   Show this help message."
-        echo  " -m | --m lb_host"
+        echo  " -m | --m lb_host              hostName or IPV4 adress "
 	echo  " -g | --log 'logfile'          Redirect all output to the 'logfile'."
 	echo  ""
 #	echo  "For proper operation check your grid-proxy-info"
@@ -48,12 +49,14 @@ if [ -z "$1" ]; then
   showHelp
   exit 2
 fi
+logfile=output.log
+flag=0
 while test -n "$1"
 do
 	case "$1" in
 	"-h" | "--help") showHelp && exit 2 ;;
 	"-m" | "--bkserver") shift ; LB_HOST=$1 ;;
-#	"-g" | "--log") shift ; logfile=$1 ;;
+	"-g" | "--log") shift ; logfile=$1 flag=1 ;;
 
 	*) echo "Unrecognized option $1 try -h for help"; exit 2 ;;
 
@@ -68,16 +71,15 @@ done
 
 function ping_host
 {
-  echo  " Testing ping to $LB_HOST"
+  echo  " Testing ping to $LB_HOST" >> $logfile
          result=`ping -c 5 $LB_HOST 2>/dev/null |  grep "0% packet loss"| wc -l`
-                                                                      
   if [ $result -gt 0 ]; then
- echo "Pinging $LB_HOST                        OK "
- else 
-   echo ""
-    echo "Ping failed: The $LB_HOST is not accessible! "
-    echo ""
-    echo " LB Basic Test:                      Failed. "
+ 	echo "Pinging $LB_HOST                        OK " >> $logfile
+  else 
+    echo "" >> $logfile
+    echo "Ping failed: The $LB_HOST is not accessible! "  >> $logfile
+    echo "" >> $logfile
+    echo " LB Basic Test:                      Failed. " >> $logfile
     exit $TEST_ERROR
   fi
 #  echo " - OK "
@@ -85,10 +87,10 @@ function ping_host
 
 check_exec()
 {
-        [ $DEBUG -gt 0 ] && [ -n "$2" ] && echo -n -e "$2\t" || echo -n -e "$1\t"
+        [ $DEBUG -gt 0 ] && [ -n "$2" ] && echo -n -e "$2\t" >> $logfile || echo -n -e "$1\t" >> $logfile
         eval $1
         RV=$?
-        [ $DEBUG -gt 0 ] && [ $RV -eq 0 ] && echo "OK" || echo "FAILED"
+        [ $DEBUG -gt 0 ] && [ $RV -eq 0 ] && echo "OK" >> $logfile || echo "FAILED" >> $logfile
         return $RV
 }
 
@@ -97,31 +99,35 @@ check_exec()
 #########################
 check_binaries()
 {
-        check_exec 'LBJOBREG=`which $LBJOBREG`' "Checking binary $LBJOBREG ? " || exit 1
-        check_exec 'LBJOBLOG=`which $LBJOBLOG`' "Checking binary $LBJOBLOG ? " || exit 1
-        check_exec 'LBLOGEV=`which $LBLOGEV`' "Checking binary $LBLOGEV ?" || exit 1
-        check_exec 'LBUSERJOBS=`which $LBUSERJOBS`' "Checking binary $LBUSERJOBS ?" || exit 1
-        check_exec 'LBJOBSTAT=`which $LBJOBSTAT`' "Checking binary $LBJOBSTAT ? " || exit 1
-check_exec 'LBCHANGEACL=`which $LBCHANGEACL`' "Checking binary $LBCHANGEACL ?" || exit 1
-check_exec 'LBMON=`which $LBMON`' "Checking binary $LBMON       " || exit 1
+ check_exec 'LBJOBREG=`which $LBJOBREG`' "Checking binary $LBJOBREG ? " || exit 1
+ check_exec 'LBJOBLOG=`which $LBJOBLOG`' "Checking binary $LBJOBLOG ? " || exit 1
+ check_exec 'LBLOGEV=`which $LBLOGEV`' "Checking binary $LBLOGEV ?" || exit 1
+ check_exec 'LBUSERJOBS=`which $LBUSERJOBS`' "Checking binary $LBUSERJOBS ?" || exit 1
+ check_exec 'LBJOBSTAT=`which $LBJOBSTAT`' "Checking binary $LBJOBSTAT ? " || exit 1
+ check_exec 'LBCHANGEACL=`which $LBCHANGEACL`' "Checking binary $LBCHANGEACL ?" || exit 1
+ check_exec 'LBMON=`which $LBMON`' "Checking binary $LBMON       " || exit 1
 }
 #
 # check the services
 ##################"
 check_services()
 {
-INTERLOGD=`ps aux 2>/dev/null | grep $LB_LOGD |wc -l`
-if [ $INTERLOGD -gt 1 ]; then
- echo "logd running? -                         OK"
+echo "Listening to locallogger port (9002)" >> $logfile
+./testSocket $LB_HOST 9002 >> $logfile
+if [ $? -eq 0 ]; then
+ echo "logd running ? -                         [OK]" >> $logfile
  else 
-    echo "logd running? -                      FAILED"
+    echo "logd running ? -                      [FAILED]" >> $logfile
     exit $TEST_ERROR
   fi
-INTERLOGD=`ps aux 2>/dev/null | grep $LB_INTERLOGD |wc -l`
-if [ $INTERLOGD -gt 1 ]; then
- echo "Inetrlogd running test? -               OK"
+echo "Listening to interlogger ports (9000-9001-9003)" >> $logfile
+./testSocket $LB_HOST 9000 >> $logfile &&
+./testSocket $LB_HOST 9001 >> $logfile &&
+./testSocket $LB_HOST 9003 >> $logfile 
+if [ $? -eq 0 ]; then
+ echo "Inetrlogd running ? -               [OK]" >> $logfile
  else 
-    echo "interlogd running test? -            FAILED"
+    echo "interlogd running ? -            [FAILED]" >> $logfile
     exit $TEST_ERROR
   fi
 }
@@ -132,3 +138,8 @@ if [ $INTERLOGD -gt 1 ]; then
 ping_host
 check_binaries
 check_services
+if [ $flag -ne 1 ];then
+	cat $logfile
+	rm $logfile
+fi
+
diff --git a/org.glite.testsuites.ctb/LB/testSocket.c b/org.glite.testsuites.ctb/LB/testSocket.c
new file mode 100755
index 0000000..cf1adc8
--- /dev/null
+++ b/org.glite.testsuites.ctb/LB/testSocket.c
@@ -0,0 +1,58 @@
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define BUFFSIZE 32
+void Die(char *mess) {
+perror(mess); 
+exit(1); }
+int main(int argc, char *argv[]) {
+int sock;
+struct hostent *hip;
+char *adrIPp;
+struct in_addr adrIP;
+struct sockaddr_in echoserver;
+char buffer[BUFFSIZE];
+unsigned int echolen;
+int received = 0;
+if (argc != 3) {
+           fprintf(stderr, "USAGE: TCPecho  \n");
+           exit(1);
+            }
+//conversion from DNS to IPv4
+if((hip=gethostbyname(argv[1]))==NULL)
+{
+printf("Erreur avec gethostbyname\n");
+//           exit(1);
+}
+adrIP.s_addr=*(int *)hip->h_addr;
+adrIPp =(char *)inet_ntoa(adrIP);
+/* Create the TCP socket */
+if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
+              Die("Failed to create socket");
+            }
+/* Construct the server sockaddr_in structure */
+memset(&echoserver, 0, sizeof(echoserver));       /* Clear struct */
+echoserver.sin_family = AF_INET;                  /* Internet/IP */
+echoserver.sin_addr.s_addr = inet_addr(adrIPp);  /* IP address */
+echoserver.sin_port = htons(atoi(argv[2]));       /* server port */
+printf("Connecting a socket with : %s,%s", adrIPp,argv[2]);
+/* Establish connection */
+if (connect(sock,
+           (struct sockaddr *) &echoserver,
+            sizeof(echoserver)) < 0) {
+              Die("Failed to connect with server");
+            }
+else 
+	{
+	shutdown(sock,2);
+	printf(" [OK]\n");
+	exit(0);
+	}
+}
-- 
1.8.2.3