class TestMetlog(object): logger = 'tests' def setUp(self): self.mock_sender = Mock() self.client = MetlogClient(self.mock_sender, self.logger) # overwrite the class-wide threadlocal w/ an instance one # so values won't persist btn tests self.client.timer._local = threading.local() plugin = config_plugin({'net':True}) self.client.add_method('procinfo', plugin) def test_add_procinfo(self): HOST = 'localhost' # Symbolic name meaning the local host PORT = 50017 # Arbitrary non-privileged port def echo_serv(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((HOST, PORT)) s.listen(1) conn, addr = s.accept() data = conn.recv(1024) conn.send(data) conn.close() s.close() t = threading.Thread(target=echo_serv) t.start() time.sleep(1) def client_code(): client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((HOST, PORT)) client.send('Hello, world') data = client.recv(1024) client.close() time.sleep(1) self.client.procinfo(net=True) eq_(1, len(self.client.sender.method_calls)) fields = self.client.sender.method_calls[0][1][0]['fields'] assert fields == {u'net': [{u'status': u'LISTEN', u'type': u'TCP', u'local': u'127.0.0.1:50017', u'remote': u'*:*'}]} # Start the client up just so that the server will die gracefully tc = threading.Thread(target=client_code) tc.start()
class TestConfiguration(object): """ Configuration for plugin based loggers should *override* what the developer uses. IOTW - developers are overridden by ops. """ logger = 'tests' def setUp(self): self.mock_sender = Mock() self.client = MetlogClient(self.mock_sender, self.logger) # overwrite the class-wide threadlocal w/ an instance one # so values won't persist btn tests self.client.timer._local = threading.local() plugin = config_plugin({'net':False}) self.client.add_method('procinfo', plugin) def test_no_netlogging(self): self.client.procinfo(net=True) eq_(0, len(self.client.sender.method_calls))