File tree 3 files changed +75
-1
lines changed 3 files changed +75
-1
lines changed Original file line number Diff line number Diff line change 2
2
sys .path = ['..' ] + sys .path
3
3
4
4
from test_handler import *
5
-
5
+ from test_sender import *
Original file line number Diff line number Diff line change
1
+ import socket
2
+ import threading
3
+ import time
4
+ from cStringIO import StringIO
5
+ from msgpack import Unpacker
6
+
7
+ class MockRecvServer (threading .Thread ):
8
+ """
9
+ Single threaded server accepts one connection and recv until EOF.
10
+ """
11
+ def __init__ (self , port ):
12
+ self ._sock = socket .socket ()
13
+ self ._sock .bind (('localhost' , port ))
14
+ self ._buf = StringIO ()
15
+
16
+ threading .Thread .__init__ (self )
17
+ self .start ()
18
+
19
+ def run (self ):
20
+ s = self ._sock
21
+ s .listen (1 )
22
+ con , _ = s .accept ()
23
+ while True :
24
+ d = con .recv (4096 )
25
+ if not d :
26
+ break
27
+ self ._buf .write (d )
28
+ con .close ()
29
+ s .close ()
30
+ self ._sock = None
31
+
32
+ def wait (self ):
33
+ while self ._sock :
34
+ time .sleep (0.1 )
35
+
36
+ def get_recieved (self ):
37
+ self .wait ()
38
+ self ._buf .seek (0 )
39
+ return list (Unpacker (self ._buf ))
Original file line number Diff line number Diff line change
1
+ import unittest
2
+ import mockserver
3
+ import fluent .sender
4
+ import msgpack
5
+
6
+ class TestSender (unittest .TestCase ):
7
+ def setUp (self ):
8
+ super (TestSender , self ).setUp ()
9
+ for port in xrange (10000 , 20000 ):
10
+ try :
11
+ self ._server = mockserver .MockRecvServer (port )
12
+ break
13
+ except IOError , e :
14
+ print e
15
+ pass
16
+ self ._sender = fluent .sender .FluentSender (
17
+ tag = 'test' ,
18
+ port = port ,
19
+ )
20
+
21
+ def get_data (self ):
22
+ return self ._server .get_recieved ()
23
+
24
+ def test_simple (self ):
25
+ sender = self ._sender
26
+ sender .emit ('foo' , {'bar' : 'baz' })
27
+ sender ._close ()
28
+ data = self .get_data ()
29
+ eq = self .assertEqual
30
+ eq (1 , len (data ))
31
+ eq (3 , len (data [0 ]))
32
+ eq ('test.foo' , data [0 ][0 ])
33
+ eq ({'bar' :'baz' }, data [0 ][2 ])
34
+ self .assert_ (data [0 ][1 ])
35
+ self .assert_ (isinstance (data [0 ][1 ], int ))
You can’t perform that action at this time.
0 commit comments