Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
zendesk_sync / tests / manual_test_rate_limit.py
Size: Mime:
#!/usr/bin/env python2
import unittest

from zendesk_sync import ZendeskSync
from clean_users_test import CleanUsersTest
from zendesk import ZendeskError
from threading import Thread
import time
import logging
import sys


logger = logging.getLogger(__name__)


class TestRateLimit(CleanUsersTest):
    """
    Check what happens when we reach the rate limit.
    To use this test, fist make sure that you have not already hit
    the rate limit. Then run the test and check log.err to see
    what errors were logged.
    """

    def test_update_300_times(self):
        # we make sure that create_user can create a user
        self.zs.create_user(
            self.user_uuid,
            self.primary_email,
            self.emails,
            self.fullname,
            self.username)
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['external_id'], self.user_uuid)

        def go(i):
            # no multitheading support :(
            zs = ZendeskSync(
                'https://docker1421276072.zendesk.com',
                'null@null.devnull',
                'cZIO0Nnf0Rznyy6rd02hPEiV7UeTRXAEqKPSomB6')
            try:
                zs.update_user(user, self.primary_email, self.emails, self.fullname, self.username)
            except Exception as e:
                logger.exception('Thread: %s', i)
                sys.exit(1)

        threads = []
        for i in range(300):
            t = Thread(target=go, args=(i,))
            threads.append(t)
            t.start()

        for t in threads:
            t.join()

if __name__ == '__main__':
    unittest.main()