def test_init(self): c = client.Client(writekey="foo", dataset="bar", api_host="blup", sample_rate=2) self.assertEqual(c.writekey, "foo") self.assertEqual(c.dataset, "bar") self.assertEqual(c.api_host, "blup") self.assertEqual(c.sample_rate, 2) self.assertEqual(c.xmit, self.tx)
def test_close_noop_if_not_init(self): """ libhoney.close() should noop if never initialized """ try: c = client.Client() c.close() # close again, should be a noop and not cause an exception c.close() except AttributeError: self.fail('libhoney threw an exception on ' 'an uninitialized close.')
def test_send(self): ''' ensure that Event's `send()` calls the client `send()` method ''' with client.Client(writekey="mykey", dataset="something") as c: # explicitly use a different object for Transmission than is # defined in setUp, to ensure we aren't using the global # xmit in libhoney c.xmit = mock.Mock() ev = c.new_event() ev.add_field("foo", "bar") ev.send() c.xmit.send.assert_called_with(ev)
def test_flush(self): mock_xmit = mock.Mock(spec=libhoney.transmission.Transmission) with client.Client(transmission_impl=mock_xmit) as c: # start gets called when the class is initialized mock_xmit.start.assert_called_once_with() mock_xmit.reset_mock() c.flush() mock_xmit.close.assert_called_once_with() mock_xmit.start.assert_called_once_with() mock_xmit = mock.Mock(spec=libhoney.transmission.TornadoTransmission) with client.Client(transmission_impl=mock_xmit) as c: # start gets called when the class is initialized mock_xmit.start.assert_called_once_with() mock_xmit.reset_mock() c.flush() # we don't call close/start on TornadoTransmission because we can't # force a flush in an async environment. mock_xmit.close.assert_not_called() mock_xmit.start.assert_not_called()
def test_new_event(self): with client.Client(writekey="client_key", dataset="client_dataset") as c: c.add_field("whomp", True) c.add_dynamic_field(sample_dyn_fn) ev = c.new_event({"field1": 1}) ev.add_field("field2", 2) # ensure client config is passed through self.assertEqual(ev.client, c) self.assertEqual(ev.writekey, "client_key") self.assertEqual(ev.dataset, "client_dataset") # ensure client fields are passed on self.assertEqual(ev._fields._data, {"field1": 1, "field2": 2, "whomp": True, "sample_dyn_fn": ("dyna", "magic")}) self.assertEqual(ev._fields._dyn_fields, set([sample_dyn_fn]))
def test_send_dropped_response(self): with mock.patch('libhoney.event._should_drop') as m_drop: m_drop.return_value = True with client.Client(writekey="mykey", dataset="something") as c: ev = c.new_event() ev.add_field("a", "b") ev.send() c.responses().put_nowait.assert_called_with({ "status_code": 0, "duration": 0, "metadata": ev.metadata, "body": "", "error": "event dropped due to sampling", })
def test_send_global(self): ''' ensure that events sent using the global libhoney config work ''' with client.Client(writekey="mykey", dataset="something") as c: # explicitly use a different object for Transmission than is # defined in setUp, to ensure we aren't using the global # xmit in libhoney c.xmit = mock.Mock() libhoney.init(writekey="someotherkey", dataset="somethingelse") ev = libhoney.Event() self.assertEqual(ev.writekey, "someotherkey") self.assertEqual(ev.dataset, "somethingelse") ev.add_field("global", "event") ev.send() # test our assumption about what's actually mocked self.assertEqual(libhoney.state.G_CLIENT.xmit, self.tx) # check that we used the global xmit self.tx.send.assert_called_with(ev) # check that the client xmit was not used self.assertFalse(c.xmit.send.called)
def test_new_builder(self): with client.Client(writekey="client_key", dataset="client_dataset") as c: c.add_field("whomp", True) c.add_dynamic_field(sample_dyn_fn) b = c.new_builder() # ensure client config is passed through self.assertEqual(b.client, c) self.assertEqual(b.writekey, "client_key") self.assertEqual(b.dataset, "client_dataset") b.add_field("builder_field", 1) ev = b.new_event() # ensure client config gets passed on self.assertEqual(ev.client, c) self.assertEqual(ev.writekey, "client_key") self.assertEqual(ev.dataset, "client_dataset") ev.add_field("event_field", 2) self.assertEqual(ev.client, c) # ensure client and builder fields are passed on self.assertEqual(ev._fields._data, {"builder_field": 1, "event_field": 2, "whomp": True, "sample_dyn_fn": ("dyna", "magic")}) self.assertEqual(ev._fields._dyn_fields, set([sample_dyn_fn]))
def test_add(self): ed = {"whomp": True} with client.Client() as c: c.add(ed) self.assertEqual(c.fields._data, ed)
def test_add_dynamic_field(self): ed = set([sample_dyn_fn]) with client.Client() as c: c.add_dynamic_field(sample_dyn_fn) self.assertEqual(c.fields._dyn_fields, ed)
def test_close(self): c = client.Client(writekey="foo", dataset="bar", api_host="blup", sample_rate=2) c.close() self.tx.close.assert_called_with() self.assertEqual(c.xmit, None)
def test_xmit_override(self): '''verify that the client accepts an alternative Transmission''' mock_xmit = mock.Mock() with client.Client(transmission_impl=mock_xmit) as c: self.assertEqual(c.xmit, mock_xmit)