Skip to content

Commit f63b8a0

Browse files
author
Josh Braegger
committed
Making 'mode' option work for zmqtransport. Adding setuptools and tests (use ./setup.py nosetests). Adding .gitignore
1 parent 9bec59b commit f63b8a0

File tree

7 files changed

+57
-7
lines changed

7 files changed

+57
-7
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*.pyc
2+
*.egg
3+
*.egg-info
4+
*.swp
5+
build
6+
dist

beaver/tests/__init__.py

Whitespace-only changes.

beaver/tests/test_zmq_transport.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
2+
import unittest
3+
import os
4+
5+
try:
6+
from beaver.zmq_transport import ZmqTransport
7+
skip = False
8+
except ImportError, e:
9+
if e.message == "No module named zmq":
10+
skip = True
11+
12+
13+
class Args():
14+
mode = ""
15+
16+
17+
@unittest.skipIf(skip, "zmq not installed")
18+
class ZmqTests(unittest.TestCase):
19+
20+
def setUp(self):
21+
self.args = Args()
22+
self.args.mode = ""
23+
24+
def test_pub(self):
25+
os.environ["ZEROMQ_ADDRESS"] = "tcp://localhost:2120"
26+
transport = ZmqTransport("/dev/null", self.args)
27+
transport.interrupt()
28+
assert not transport.zeromq_bind
29+
30+
def test_bind(self):
31+
self.args.mode = "bind"
32+
os.environ["ZEROMQ_ADDRESS"] = "tcp://*:2120"
33+
transport = ZmqTransport("/dev/null", self.args)
34+
assert transport.zeromq_bind
35+

beaver/worker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def run_worker(configfile, args):
217217
transport = beaver.udp_transport.UdpTransport(configfile)
218218
elif args.transport == 'zmq':
219219
import beaver.zmq_transport
220-
transport = beaver.zmq_transport.ZmqTransport(configfile)
220+
transport = beaver.zmq_transport.ZmqTransport(configfile, args)
221221
else:
222222
raise Exception('Invalid transport {0}'.format(args.transport))
223223

beaver/zmq_transport.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77

88
class ZmqTransport(beaver.transport.Transport):
99

10-
def __init__(self, configfile):
10+
def __init__(self, configfile, args):
1111
super(ZmqTransport, self).__init__(configfile)
1212

1313
zeromq_address = os.environ.get("ZEROMQ_ADDRESS", "tcp://localhost:2120")
14-
zeromq_bind = os.environ.get("BIND", False)
14+
self.zeromq_bind = (args.mode == "bind")
1515

1616
self.ctx = zmq.Context()
1717
self.pub = self.ctx.socket(zmq.PUSH)
1818

19-
if zeromq_bind:
19+
if self.zeromq_bind:
2020
self.pub.bind(zeromq_address)
2121
else:
2222
self.pub.connect(zeromq_address)

bin/beaver

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ files = os.environ.get("BEAVER_FILES", None)
5757
if files is not None:
5858
files = files.split(',')
5959

60+
bound = "bind" if os.environ.get("BIND", False) else None
61+
6062
parser.set_defaults(
61-
mode=os.environ.get("BEAVER_MODE", 'bind'),
63+
mode=os.environ.get("BEAVER_MODE", "bind" if os.environ.get("BIND", False) else "connect"),
6264
path=os.environ.get("BEAVER_PATH", '/var/log'),
6365
files=files,
6466
transport=os.environ.get("BEAVER_TRANSPORT", 'stdout'),

setup.py

100644100755
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
from distutils.core import setup
1+
#!/usr/bin/env python
2+
3+
try:
4+
from setuptools import setup
5+
except ImportError:
6+
from distutils.core import setup
27

38
setup(
49
name='Beaver',
510
version='9',
611
author='Jose Diaz-Gonzalez',
712
author_email='[email protected]',
8-
packages=['beaver'],
13+
packages=['beaver', 'beaver.tests'],
914
scripts=['bin/beaver'],
1015
url='http://github.com/josegonzalez/beaver',
1116
license='LICENSE.txt',
@@ -19,6 +24,8 @@
1924
],
2025
description='python daemon that munches on logs and sends their contents to logstash',
2126
long_description=open('README.rst').read(),
27+
tests_require=["nose",],
28+
test_suite="nose.collector",
2229
install_requires=[
2330
"argparse>=1.2.0",
2431
"pika>=0.9.5",

0 commit comments

Comments
 (0)