summaryrefslogtreecommitdiff
path: root/g5k/clients.py
diff options
context:
space:
mode:
Diffstat (limited to 'g5k/clients.py')
-rwxr-xr-xg5k/clients.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/g5k/clients.py b/g5k/clients.py
new file mode 100755
index 0000000..3f718e0
--- /dev/null
+++ b/g5k/clients.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python
+from __future__ import division
+import os,sys,random, time,datetime
+from subprocess import Popen
+
+# Check script argument
+if len(sys.argv) != 6:
+ print("Usage: "+sys.argv[0]+" <mysqlServerIp> <nbSensors> <nbSensorsFactor> <requestPerSensor> <sensorsRequestPerSec>")
+ exit(1)
+
+# Init script parameters
+serverIp=sys.argv[1]
+nbSensors=int(sys.argv[2])
+nbSensorsFactor=int(sys.argv[3])
+effectiveNbSensors=nbSensors*nbSensorsFactor
+requestPerSensor=int(sys.argv[4])
+frequency=int(sys.argv[5])
+avgSiteTemp=list()
+for i in range(0,effectiveNbSensors):
+ avgSiteTemp.append(random.randint(-10,30))
+
+
+def insert(sensorId, value):
+ """ Send value of sensorId into the database """
+ stamp=int(time.mktime(datetime.datetime.today().timetuple()))
+ insertCMD = "mysql -u user --password=mysql --host="+serverIp+" experiment -e"
+ insertCMD=insertCMD.split()
+ insertCMD.append("INSERT INTO temperature (id,stamp,val) VALUES("+str(sensorId)+","+str(stamp)+","+str(value)+");")
+ Popen(insertCMD) # Run command asynchronously
+
+def send():
+ """ Send temperature of each sensors into the database """
+ for i in range(0,effectiveNbSensors):
+ insert(i,random.gauss(avgSiteTemp[i], 3))
+
+
+# Print infos
+print("Launching clients with:")
+print(" - Mysql Server IP {:>20}".format(serverIp))
+print(" - Number of sensors {:>18}".format(effectiveNbSensors))
+print(" - Number of request per sensor {:>7}".format(effectiveNbSensors))
+
+# Send data
+for i in range(0, requestPerSensor):
+ send()
+ time.sleep(1/frequency) # We assume send() take no time
+
+