예제 #1
0
    def test_follow_encoding(self):
        s = Stream(None, None)
        s._start = lambda is_async: None
        s.filter(follow=[u'Caf\xe9'])

        # Should be UTF-8 encoded
        self.assertEqual(u'Caf\xe9'.encode('utf8'), s.body['follow'])
예제 #2
0
 def test_exp_backoff_cap(self):
     self.stream = Stream(self.auth,
                          self.listener,
                          timeout=3.0,
                          retry_count=1,
                          retry_time=1.0,
                          retry_time_cap=3.0)
     self.stream.sample()
     # 1 retry, but 4x the retry_time exceeds the cap, so should be capped
     self.assertEqual(self.stream.retry_time, 3.0)
예제 #3
0
 def test_exp_backoff(self):
     self.stream = Stream(self.auth,
                          self.listener,
                          timeout=3.0,
                          retry_count=1,
                          retry_time=1.0,
                          retry_time_cap=100.0)
     self.stream.sample()
     # 1 retry, should be 4x the retry_time
     self.assertEqual(self.stream.retry_time, 4.0)
예제 #4
0
 def test_420(self):
     self.stream = Stream(self.auth,
                          self.listener,
                          timeout=3.0,
                          retry_count=0,
                          retry_time=1.0,
                          retry_420=1.5,
                          retry_time_cap=20.0)
     self.stream.sample()
     # no retries, but error 420, should be double the retry_420, not double the retry_time
     self.assertEqual(self.stream.retry_time, 3.0)
예제 #5
0
class TweepyStreamBackoffTests(unittest.TestCase):
    def setUp(self):
        #bad auth causes twitter to return 401 errors
        self.auth = OAuthHandler("bad-key", "bad-secret")
        self.auth.set_access_token("bad-token", "bad-token-secret")
        self.listener = MockStreamListener(self)
        self.stream = Stream(self.auth, self.listener)

    def tearDown(self):
        self.stream.disconnect()

    def test_exp_backoff(self):
        self.stream = Stream(self.auth,
                             self.listener,
                             timeout=3.0,
                             retry_count=1,
                             retry_time=1.0,
                             retry_time_cap=100.0)
        self.stream.sample()
        # 1 retry, should be 4x the retry_time
        self.assertEqual(self.stream.retry_time, 4.0)

    def test_exp_backoff_cap(self):
        self.stream = Stream(self.auth,
                             self.listener,
                             timeout=3.0,
                             retry_count=1,
                             retry_time=1.0,
                             retry_time_cap=3.0)
        self.stream.sample()
        # 1 retry, but 4x the retry_time exceeds the cap, so should be capped
        self.assertEqual(self.stream.retry_time, 3.0)

    mock_resp = MagicMock()
    mock_resp.return_value.status_code = 420

    @patch('requests.Session.request', mock_resp)
    def test_420(self):
        self.stream = Stream(self.auth,
                             self.listener,
                             timeout=3.0,
                             retry_count=0,
                             retry_time=1.0,
                             retry_420=1.5,
                             retry_time_cap=20.0)
        self.stream.sample()
        # no retries, but error 420, should be double the retry_420, not double the retry_time
        self.assertEqual(self.stream.retry_time, 3.0)
예제 #6
0
 def setUp(self):
     self.auth = create_auth()
     self.listener = MockStreamListener(self)
     self.stream = Stream(self.auth, self.listener, timeout=3.0)
예제 #7
0
class TweepyStreamTests(unittest.TestCase):
    def setUp(self):
        self.auth = create_auth()
        self.listener = MockStreamListener(self)
        self.stream = Stream(self.auth, self.listener, timeout=3.0)

    def tearDown(self):
        self.stream.disconnect()

    def on_connect(self):
        API(self.auth).update_status(mock_tweet())

    def test_userstream(self):
        # Generate random tweet which should show up in the stream.

        self.listener.connect_cb = self.on_connect
        self.listener.status_stop_count = 1
        self.stream.userstream()
        self.assertEqual(self.listener.status_count, 1)

    @skip("Sitestream only available to whitelisted accounts.")
    def test_sitestream(self):
        self.listener.connect_cb = self.on_connect
        self.listener.status_stop_count = 1
        self.stream.sitestream(follow=[self.auth.get_username()])
        self.assertEqual(self.listener.status_count, 1)

    def test_userstream_with_params(self):
        # Generate random tweet which should show up in the stream.
        def on_connect():
            API(self.auth).update_status(mock_tweet())

        self.listener.connect_cb = on_connect
        self.listener.status_stop_count = 1
        self.stream.userstream(_with='user',
                               replies='all',
                               stall_warnings=True)
        self.assertEqual(self.listener.status_count, 1)

    def test_sample(self):
        self.listener.status_stop_count = 10
        self.stream.sample()
        self.assertEqual(self.listener.status_count,
                         self.listener.status_stop_count)

    def test_filter_track(self):
        self.listener.status_stop_count = 5
        phrases = ['twitter']
        self.stream.filter(track=phrases)
        self.assertEqual(self.listener.status_count,
                         self.listener.status_stop_count)

    def test_track_encoding(self):
        s = Stream(None, None)
        s._start = lambda is_async: None
        s.filter(track=[u'Caf\xe9'])

        # Should be UTF-8 encoded
        self.assertEqual(u'Caf\xe9'.encode('utf8'), s.body['track'])

    def test_follow_encoding(self):
        s = Stream(None, None)
        s._start = lambda is_async: None
        s.filter(follow=[u'Caf\xe9'])

        # Should be UTF-8 encoded
        self.assertEqual(u'Caf\xe9'.encode('utf8'), s.body['follow'])
예제 #8
0
 def setUp(self):
     #bad auth causes twitter to return 401 errors
     self.auth = OAuthHandler("bad-key", "bad-secret")
     self.auth.set_access_token("bad-token", "bad-token-secret")
     self.listener = MockStreamListener(self)
     self.stream = Stream(self.auth, self.listener)