import repository from arizona
[raven.git] / demo / pingpong / pong.py
1 #! /usr/bin/python
2
3 import os
4 import socket
5
6 def main():
7     # make sure these two directories exist and are writable
8     assert os.path.isdir("/var/kong/results")
9     assert os.access("/var/kong/results", os.W_OK)
10     assert os.path.isdir("/etc/owl/scripts.d")
11     assert os.access("/etc/owl/scripts.d", os.W_OK)
12
13     recv_count = 0
14     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
15     s.bind(("",0))
16     (addr, port) = s.getsockname()
17
18     # Create a file in the kong results directory that will contain the port
19     # number we're listening on. Kong will rebroadcast it to the other nodes
20     # for us.
21     file("/var/kong/results/mem_pong_port","wt").write(str(port))
22     print "pong: listening on port", port
23
24     while True:
25         (data, addr) = s.recvfrom(4096)
26         print "pong (%d): packet received from %s" % (recv_count, str(addr))
27         s.sendto(data, addr)
28
29         # report some data to Owl
30         recv_count = recv_count + 1
31         file("/etc/owl/scripts.d/pong.recv_count","wt").write("#!/bin/bash\necho [pong]\necho recv_count=%d\n" % (recv_count))
32         os.chmod("/etc/owl/scripts.d/pong.recv_count", 0777)
33
34
35 if __name__ == "__main__":
36     main()