1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#!/usr/bin/python
import os, sys, signal, traceback, time
from socket import *
class MessageSender:
def __init__(self, repeat=1000):
self.repeat = repeat
def sendMessages(self, messages):
self.initSender()
for msg in messages:
for counter in range(1, self.repeat):
self.sendMessage('%s %d %s' % (msg, counter, 'x' * 1500))
class SocketSender(MessageSender):
def __init__(self, family, sock_name, dgram=0, send_by_bytes=0, terminate_seq='\n', repeat=1000):
MessageSender.__init__(self, repeat)
self.family = family
self.sock_name = sock_name
self.sock = None
self.dgram = dgram
self.send_by_bytes = send_by_bytes
self.terminate_seq = terminate_seq
def initSender(self):
if self.dgram:
self.sock = socket(self.family, SOCK_DGRAM)
else:
self.sock = socket(self.family, SOCK_STREAM)
self.sock.connect(self.sock_name)
def sendMessage(self, msg):
line = '%s%s' % (msg, self.terminate_seq)
if self.send_by_bytes:
for c in line:
self.sock.send(c)
else:
self.sock.send(line)
def readpidfile(pidfile):
f = open(pidfile, 'r')
pid = f.read()
f.close()
return int(pid.strip())
messages = (
'<7>2004-09-07T10:43:21.156+01:00 bzorp prog: msg',
)
senders = (
SocketSender(AF_UNIX, 'log-dgram', dgram=1),
SocketSender(AF_UNIX, 'log-dgram', dgram=1, terminate_seq='\0'),
SocketSender(AF_UNIX, 'log-dgram', dgram=1, terminate_seq='\0\n'),
SocketSender(AF_UNIX, 'log-stream', dgram=0),
SocketSender(AF_UNIX, 'log-stream', dgram=0, send_by_bytes=1),
SocketSender(AF_INET, ('localhost', 2000), dgram=1),
SocketSender(AF_INET, ('localhost', 2000), dgram=1, terminate_seq='\0'),
SocketSender(AF_INET, ('localhost', 2000), dgram=1, terminate_seq='\0\n'),
SocketSender(AF_INET, ('localhost', 2000), dgram=0),
SocketSender(AF_INET, ('localhost', 2000), dgram=0, send_by_bytes=1),
)
conf = """
source s_int { internal(); };
source s_unix { unix-stream("log-stream"); unix-dgram("log-dgram"); };
source s_inet { tcp(port(2000)); udp(port(2000)); };
destination dst { file("test-output.log" template("$DATE $HOST $MSG\n")); };
log { source(s_int); source(s_unix); source(s_inet); destination(dst); };
"""
f = open('test.conf', 'w')
f.write(conf)
f.close()
try:
os.unlink('test-output.log')
except OSError:
pass
rc = os.system('../../src/syslog-ng -f test.conf -p syslog-ng.pid')
if rc != 0:
print "Error in syslog-ng startup"
success = 0
else:
success = 1
if success:
pid = readpidfile('syslog-ng.pid')
#os.system("strace -o aaa -s 256 -f -p %d &" % (pid,))
try:
for s in senders:
s.sendMessages(messages)
time.sleep(1)
finally:
try:
os.kill(pid, signal.SIGTERM)
except OSError:
print "Syslog-ng exited before SIGTERM..."
success = 0
sys.exit(not success)
|