def test_build_then_send(self): c = Client(dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg('raven.events.Message', message='foo', date=d) expected = { 'project': '1', 'sentry.interfaces.Message': { 'message': 'foo', 'params': () }, 'server_name': 'test_server', 'level': 40, 'tags': {}, 'time_spent': None, 'timestamp': 1336089600, 'message': 'foo', } # The event_id is always overridden del msg['event_id'] self.assertDictContainsSubset(expected, msg)
def test_build_then_send(self): try: Client.register_scheme('mock', DummyScheme) except: pass c = Client(dsn="mock://*****:*****@localhost:8143/1") d = time.mktime(datetime.datetime(2012,5,4).timetuple()) msg = c.build_msg("Message", message='foo', date=d) expected = {'project': '1', 'sentry.interfaces.Message': {'message': 'foo', 'params': ()}, 'server_name': u'Victors-MacBook-Air.local', 'level': 40, 'checksum': 'acbd18db4cc2f85cedef654fccc4a4d8', 'extra': {}, 'modules': {}, 'site': None, 'time_spent': None, 'timestamp': 1336104000.0, 'message': 'foo'} # The event_id is always overridden del msg['event_id'] assert msg == expected
class ThreadedTransportTest(TestCase): def setUp(self): self.url = "threaded+requests+http://some_username:some_password@localhost:8143/1" self.client = Client(dsn=self.url) @mock.patch('raven.transport.requests.post') def test_does_send(self, send): self.client.captureMessage(message='foo') time.sleep(0.1) self.assertEqual(send.call_count, 1) expected_url = 'http://localhost:8143/api/1/store/' self.assertEqual(expected_url, send.call_args[0][0]) def test_shutdown_waits_for_send(self): url = urlparse(self.url) transport = DummyThreadedScheme(url) transport.send_delay = 0.5 data = self.client.build_msg('raven.events.Message', message='foo') transport.async_send(data, None, None, None) time.sleep(0.1) # this should wait for the message to get sent transport.get_worker().main_thread_terminated() self.assertEqual(len(transport.events), 1)
def test_build_then_send(self): c = Client(dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg("Message", message='foo', date=d) expected = { 'project': '1', 'public_key': 'some_username', 'sentry.interfaces.Message': { 'message': 'foo', 'params': () }, 'server_name': u'test_server', 'level': 40, 'checksum': 'acbd18db4cc2f85cedef654fccc4a4d8', 'extra': {}, 'modules': {}, 'site': None, 'tags': None, 'time_spent': None, 'timestamp': 1336089600, 'message': 'foo', } # The event_id is always overridden del msg['event_id'] self.assertEquals(msg, expected)
def test_build_then_send(self): try: Client.register_scheme('mock', DummyScheme) except: pass c = Client(dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg("Message", message='foo', date=d) expected = {'project': '1', 'sentry.interfaces.Message': {'message': 'foo', 'params': ()}, 'server_name': u'test_server', 'level': 40, 'checksum': 'acbd18db4cc2f85cedef654fccc4a4d8', 'extra': {}, 'modules': {}, 'site': None, 'time_spent': None, 'timestamp': 1336089600, 'message': 'foo'} # The event_id is always overridden del msg['event_id'] self.assertEquals(msg, expected)
class ThreadedTransportTest(TestCase): def setUp(self): self.url = "threaded+http://some_username:some_password@localhost:8143/1" self.client = Client(dsn=self.url) @mock.patch('raven.transport.http.HTTPTransport.send') def test_does_send(self, send): self.client.captureMessage(message='foo') time.sleep(0.1) # TODO: This test could be more precise by ensuring it's sending the same params that are sent # to the ThreadedHTTPTransport.send() method self.assertEqual(send.call_count, 1) def test_shutdown_waits_for_send(self): url = urlparse(self.url) transport = DummyThreadedScheme(url) transport.send_delay = 0.5 data = self.client.build_msg('raven.events.Message', message='foo') transport.async_send(data, None, None, None) time.sleep(0.1) # this should wait for the message to get sent transport.get_worker().main_thread_terminated() self.assertEqual(len(transport.events), 1)
def test_build_then_send(self): c = Client( dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg('raven.events.Message', message='foo', date=d) expected = { 'project': '1', 'sentry.interfaces.Message': { 'message': 'foo', 'params': (), 'formatted': None, }, 'server_name': 'test_server', 'level': 40, 'tags': {}, 'time_spent': None, 'timestamp': 1336089600, 'message': 'foo', } # The event_id is always overridden del msg['event_id'] self.assertDictContainsSubset(expected, msg)
def test_build_then_send(self): c = Client(dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg("Message", message='foo', date=d) expected = { 'project': '1', 'public_key': 'some_username', 'sentry.interfaces.Message': {'message': 'foo', 'params': ()}, 'server_name': u'test_server', 'level': 40, 'checksum': 'acbd18db4cc2f85cedef654fccc4a4d8', 'modules': {}, 'site': None, 'tags': None, 'time_spent': None, 'timestamp': 1336089600, 'message': 'foo', } # The event_id is always overridden del msg['event_id'] self.assertDictContainsSubset(expected, msg)
def test_build_then_send(self): c = Client(dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg("Message", message="foo", date=d) expected = { "project": "1", "public_key": "some_username", "sentry.interfaces.Message": {"message": "foo", "params": ()}, "server_name": u"test_server", "level": 40, "checksum": "acbd18db4cc2f85cedef654fccc4a4d8", "extra": {}, "modules": {}, "site": None, "tags": None, "time_spent": None, "timestamp": 1336089600, "message": "foo", } # The event_id is always overridden del msg["event_id"] self.assertEquals(msg, expected)
def test_build_then_send(self): c = Client(dsn="mock://*****:*****@localhost:8143/1", name="test_server") mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) msg = c.build_msg("raven.events.Message", message="foo", date=d) expected = { "project": "1", "sentry.interfaces.Message": {"message": "foo", "params": ()}, "server_name": "test_server", "level": 40, "tags": {}, "time_spent": None, "timestamp": 1336089600, "message": "foo", } # The event_id is always overridden del msg["event_id"] self.assertDictContainsSubset(expected, msg)
class ThreadedTransportTest(TestCase): def setUp(self): self.url = "threaded+http://some_username:some_password@localhost:8143/1" self.client = Client(dsn=self.url) @mock.patch('raven.transport.http.HTTPTransport.send') def test_does_send(self, send): self.client.captureMessage(message='foo') time.sleep(0.1) # TODO: This test could be more precise by ensuring it's sending the same params that are sent # to the ThreadedHTTPTransport.send() method self.assertEqual(send.call_count, 1) def test_shutdown_waits_for_send(self): url = urlparse(self.url) transport = DummyThreadedScheme() transport.send_delay = 0.5 data = self.client.build_msg('raven.events.Message', message='foo') transport.async_send(url, data, None, None, None) time.sleep(0.1) # this should wait for the message to get sent transport.get_worker().main_thread_terminated() self.assertEqual(len(transport.events), 1) def test_fork_spawns_anew(self): url = urlparse(self.url) transport = DummyThreadedScheme() transport.send_delay = 0.5 data = self.client.build_msg('raven.events.Message', message='foo') pid = os.fork() if pid == 0: time.sleep(0.1) transport.async_send(url, data, None, None, None) # this should wait for the message to get sent transport.get_worker().main_thread_terminated() self.assertEqual(len(transport.events), 1) # Use os._exit here so that py.test gets not confused about # what the hell we're doing here. os._exit(0) else: os.waitpid(pid, 0) def test_fork_with_active_worker(self): # Test threaded transport when forking with an active worker. # Forking a process doesn't clone the worker thread - make sure # logging from both processes still works. event1 = self.client.build_msg('raven.events.Message', message='parent') event2 = self.client.build_msg('raven.events.Message', message='child') url = urlparse(self.url) fd, filename = mkstemp() try: os.close(fd) transport = LoggingThreadedScheme(filename) # Log from the parent process - starts the worker thread transport.async_send(url, event1, None, None, None) childpid = os.fork() if childpid == 0: # Log from the child process transport.async_send(url, event2, None, None, None) # Ensure threaded worker has finished transport.get_worker().stop() os._exit(0) # Wait for the child process to finish os.waitpid(childpid, 0) assert os.path.isfile(filename) # Ensure threaded worker has finished transport.get_worker().stop() with open(filename, 'r') as logfile: events = dict(x.strip().split() for x in logfile.readlines()) # Check parent and child both logged successfully assert events == { str(os.getpid()): 'parent', str(childpid): 'child', } finally: os.remove(filename)