From 149e90d82b510c0ba6ef92b15c72873a6cc6f015 Mon Sep 17 00:00:00 2001
From: Ramin Yaghoubzadeh <ryaghoub@techfak.uni-bielefeld.de>
Date: Sat, 17 Mar 2012 02:18:32 +0100
Subject: [PATCH] added ipaaca IU update speed test (ipaacaspam.py) - run
 without arguments to get some info

---
 python/test/src/ipaacaspam.py | 76 +++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100755 python/test/src/ipaacaspam.py

diff --git a/python/test/src/ipaacaspam.py b/python/test/src/ipaacaspam.py
new file mode 100755
index 0000000..1d03d7d
--- /dev/null
+++ b/python/test/src/ipaacaspam.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+import sys
+import time
+import unittest
+
+import ipaaca
+
+class Receiver(object):
+	def __init__(self):
+		self.count = 0
+		self.last_time = 0
+		self.ib = ipaaca.InputBuffer('PowerIn', ['spam'])
+		self.ib.register_handler(self.handle_iu_event)
+	
+	def handle_iu_event(self, iu, event_type, local):
+		if self.count==0: self.last_time=time.time()
+		self.count+=1
+		if self.count==1000:
+			print "Received 1k IU updates at", int(1000.0/(time.time()-self.last_time)), "Hz"
+			self.count=0
+	
+	def run(self):
+		while True:
+			time.sleep(1)
+
+
+class Sender(object):
+	def __init__(self, send_frequency):
+		self.ob = ipaaca.OutputBuffer('PowerOut')
+		self.iu = ipaaca.IU('spam')
+		self.iu.payload = {'data':'0'}
+		self.ob.add(self.iu)
+		self.counter = 0
+		self.frequency = send_frequency
+		self.delay = 1.0/send_frequency
+	
+	def run(self):
+		print "Sending with", self.delay ,"s delay - upper bound ",self.frequency,"Hz ..."
+		last_time = time.time()
+		while True:
+			time.sleep(self.delay)
+			self.counter += 1
+			self.iu.payload['data'] = str(self.counter)
+			if self.counter == 1000:
+				print "Sent 1k updates at", int(1000.0/(time.time()-last_time)),"Hz"
+				last_time = time.time()
+				self.counter = 0
+				#print ".",
+				#sys.stdout.flush()
+	
+if __name__ == '__main__':
+	if len(sys.argv)<2:
+		print "specify either 'sender' or 'receiver' as an argument"
+		print "   for the sender, you can additionally specify a delay (in 1/s)"
+		print "   between 1 and 10000 please (=> 1 sec ... 0.0001 sec) [default: 1000 => 0.001 sec]"
+		sys.exit(1)
+	if sys.argv[1] == 'receiver':
+		r = Receiver()
+		r.run()
+	elif sys.argv[1] == 'sender':
+		freq=1000
+		try:
+			freq = int(sys.argv[2])
+		except:
+			pass
+		if freq<1 or freq>10000:
+			print "Between 1 and 10000 please (=> 1 sec ... 0.0001 sec)"
+			sys.exit(1)
+		s = Sender(send_frequency=freq)
+		s.run()
+	else:
+		print "specify either 'sender' or 'receiver' as an argument"
+		sys.exit(1)
+
+
-- 
GitLab