Example #1
0
    def test_antistampede(self):
        SECONDS = 4
        # We MUST make an initial synchronous request in order to create the
        # AntiStampedeCache object, and populate its selecting_headers,
        # before the actual stampede.
        self.getPage("/long_process?seconds=%d" % SECONDS)
        self.assertBody('success!')
        self.getPage("/clear_cache?path=" +
                     quote('/long_process?seconds=%d' % SECONDS, safe=''))
        self.assertStatus(200)

        start = datetime.datetime.now()

        def run():
            self.getPage("/long_process?seconds=%d" % SECONDS)
            # The response should be the same every time
            self.assertBody('success!')

        ts = [threading.Thread(target=run) for i in xrange(100)]
        for t in ts:
            t.start()
        for t in ts:
            t.join()
        self.assertEqualDates(
            start,
            datetime.datetime.now(),
            # Allow a second (two, for slow hosts)
            # for our thread/TCP overhead etc.
            seconds=SECONDS + 2)
Example #2
0
    def test_antistampede(self):
        SECONDS = 4
        self.getPage('/long_process?seconds=%d' % SECONDS)
        self.assertBody('success!')
        self.getPage('/clear_cache?path=' +
                     quote('/long_process?seconds=%d' % SECONDS, safe=''))
        self.assertStatus(200)
        sys.stdout.write('prepped... ')
        sys.stdout.flush()
        start = datetime.datetime.now()

        def run():
            self.getPage('/long_process?seconds=%d' % SECONDS)
            self.assertBody('success!')

        ts = [threading.Thread(target=run) for i in xrange(100)]
        for t in ts:
            t.start()

        for t in ts:
            t.join()

        self.assertEqualDates(start,
                              datetime.datetime.now(),
                              seconds=SECONDS + 1.1)
Example #3
0
    def test_antistampede(self):
        SECONDS = 4
        # We MUST make an initial synchronous request in order to create the
        # AntiStampedeCache object, and populate its selecting_headers,
        # before the actual stampede.
        self.getPage("/long_process?seconds=%d" % SECONDS)
        self.assertBody('success!')
        self.getPage("/clear_cache?path=" +
                     quote('/long_process?seconds=%d' % SECONDS, safe=''))
        self.assertStatus(200)

        start = datetime.datetime.now()

        def run():
            self.getPage("/long_process?seconds=%d" % SECONDS)
            # The response should be the same every time
            self.assertBody('success!')
        ts = [threading.Thread(target=run) for i in xrange(100)]
        for t in ts:
            t.start()
        for t in ts:
            t.join()
        self.assertEqualDates(start, datetime.datetime.now(),
                              # Allow a second (two, for slow hosts)
                              # for our thread/TCP overhead etc.
                              seconds=SECONDS + 2)
Example #4
0
    def test_antistampede(self):
        SECONDS = 4
        slow_url = "/long_process?seconds={SECONDS}".format(**locals())
        # We MUST make an initial synchronous request in order to create the
        # AntiStampedeCache object, and populate its selecting_headers,
        # before the actual stampede.
        self.getPage(slow_url)
        self.assertBody('success!')
        self.getPage("/clear_cache?path=" + quote(slow_url, safe=''))
        self.assertStatus(200)

        start = datetime.datetime.now()

        def run():
            self.getPage(slow_url)
            # The response should be the same every time
            self.assertBody('success!')

        ts = [threading.Thread(target=run) for i in xrange(100)]
        for t in ts:
            t.start()
        for t in ts:
            t.join()
        finish = datetime.datetime.now()
        # Allow for overhead, two seconds for slow hosts
        allowance = SECONDS + 2
        self.assertEqualDates(start, finish, seconds=allowance)
Example #5
0
    def test_antistampede(self):
        SECONDS = 4
        slow_url = '/long_process?seconds={SECONDS}'.format(**locals())
        # We MUST make an initial synchronous request in order to create the
        # AntiStampedeCache object, and populate its selecting_headers,
        # before the actual stampede.
        self.getPage(slow_url)
        self.assertBody('success!')
        self.getPage('/clear_cache?path=' + quote(slow_url, safe=''))
        self.assertStatus(200)

        start = datetime.datetime.now()

        def run():
            self.getPage(slow_url)
            # The response should be the same every time
            self.assertBody('success!')
        ts = [threading.Thread(target=run) for i in xrange(100)]
        for t in ts:
            t.start()
        for t in ts:
            t.join()
        finish = datetime.datetime.now()
        # Allow for overhead, two seconds for slow hosts
        allowance = SECONDS + 2
        self.assertEqualDates(start, finish, seconds=allowance)
Example #6
0
    def test_antistampede(self):
        SECONDS = 4
        self.getPage('/long_process?seconds=%d' % SECONDS)
        self.assertBody('success!')
        self.getPage('/clear_cache?path=' + quote('/long_process?seconds=%d' % SECONDS, safe=''))
        self.assertStatus(200)
        sys.stdout.write('prepped... ')
        sys.stdout.flush()
        start = datetime.datetime.now()

        def run():
            self.getPage('/long_process?seconds=%d' % SECONDS)
            self.assertBody('success!')

        ts = [ threading.Thread(target=run) for i in xrange(100) ]
        for t in ts:
            t.start()

        for t in ts:
            t.join()

        self.assertEqualDates(start, datetime.datetime.now(), seconds=SECONDS + 1.1)
 def stream(self, id = None):
     for x in xrange(100000000):
         yield str(x)
Example #8
0
 def stream(self, id=None):
     for x in xrange(100000000):
         yield str(x)