diff options
Diffstat (limited to 'g5k/clients.py')
| -rwxr-xr-x | g5k/clients.py | 48 |
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 + + |
