From 5eeddc5d2f32dcd7b9c7dfd223d20e4c81497cd6 Mon Sep 17 00:00:00 2001
From: Rafael Monnerat <rafael@nexedi.com>
Date: Fri, 13 Nov 2009 22:48:39 +0000
Subject: [PATCH] Draft script that runs while there is actitivities running
 (or TIMEOUT).

This is a experimental script for make possible execute some shell command after all activities are running, for example.




git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@30616 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/CMFActivity/bin/wait_activities | 62 +++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100755 product/CMFActivity/bin/wait_activities

diff --git a/product/CMFActivity/bin/wait_activities b/product/CMFActivity/bin/wait_activities
new file mode 100755
index 0000000000..e9198603a8
--- /dev/null
+++ b/product/CMFActivity/bin/wait_activities
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Small wait script based on watch_activities scripts.
+
+# The goal is keep running until the activities.
+
+
+function show_help ( )
+{
+  script_name=`basename $0`
+  echo """
+  Usage:
+    $script_name <mysql_opt> [interval seconds] [timeout in seconds]
+  Interval is default 5.
+  Timeout default is 600 seconds.
+  mysql_opt are default mysql command line options.
+  Put them in quotes if more than one option is passed.
+
+  Typical usage:
+    $script_name erp5
+    $script_name \"-h remotehost -u user erp5remote\" 3
+  """
+}
+
+MYSQL_OPT=$1
+INTERVAL=$2
+TIMEOUT=$3
+
+if [ "$MYSQL_OPT" == "" ] ; then
+  show_help
+  exit 1
+fi
+
+if [ "$INTERVAL" == "" ] ; then
+  INTERVAL=5
+fi
+if [ "$TIMEOUT" == "" ] ; then
+  INTERVAL=600
+fi
+
+TIME=0
+
+while true
+do
+    SELECT="SELECT count(*) AS message_count FROM message;"
+    VALUE=`echo $SELECT | mysql $MYSQL_OPT | grep -v message`
+    if [ "$VALUE" == "0" ]
+    then
+      SELECT="SELECT count(*) AS message_count FROM message_queue;"
+      VALUE=`echo $SELECT | mysql $MYSQL_OPT | grep -v message`
+      if [ "$VALUE" == "0" ]
+      then 
+         exit 0
+      fi
+    fi
+    sleep $INTERVAL;
+    TIME="`expr $TIME + $INTERVAL`"
+    if [ $TIME -gt $TIMEOUT ]
+    then
+        echo "Timeout"
+        exit 1
+    fi
+done
-- 
2.30.9