Limit connections to hosts for tests.
This commit is contained in:
parent
deb6cc5d76
commit
ca65deb369
1 changed files with 25 additions and 0 deletions
|
@ -5,11 +5,30 @@ import tempfile
|
||||||
import shutil
|
import shutil
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
import multiprocessing
|
||||||
|
import urlparse
|
||||||
from itertools import islice
|
from itertools import islice
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from dosagelib import scraper
|
from dosagelib import scraper
|
||||||
|
|
||||||
|
|
||||||
|
def get_host(url):
|
||||||
|
"""Get host part of URL."""
|
||||||
|
return urlparse.urlsplit(url)[1].lower()
|
||||||
|
|
||||||
|
|
||||||
|
# Dictionary with per-host locks.
|
||||||
|
_locks = {}
|
||||||
|
# Allowed number of connections per host
|
||||||
|
MaxConnections = 4
|
||||||
|
|
||||||
|
def get_lock(host):
|
||||||
|
"""Get bounded semphore for given host."""
|
||||||
|
if host not in _locks:
|
||||||
|
_locks[host] = multiprocessing.BoundedSemaphore(MaxConnections)
|
||||||
|
return _locks[host]
|
||||||
|
|
||||||
|
|
||||||
class _ComicTester(TestCase):
|
class _ComicTester(TestCase):
|
||||||
"""Basic comic test class."""
|
"""Basic comic test class."""
|
||||||
scraperclass=None
|
scraperclass=None
|
||||||
|
@ -33,6 +52,12 @@ class _ComicTester(TestCase):
|
||||||
# at least 5 strips from the start, and find strip images
|
# at least 5 strips from the start, and find strip images
|
||||||
# on at least 4 pages.
|
# on at least 4 pages.
|
||||||
scraperobj = self.scraperclass()
|
scraperobj = self.scraperclass()
|
||||||
|
# Limit number of connections to one host.
|
||||||
|
host = get_host(scraperobj.url)
|
||||||
|
with get_lock(host):
|
||||||
|
self._test_comic(scraperobj)
|
||||||
|
|
||||||
|
def _test_comic(self, scraperobj):
|
||||||
num = 0
|
num = 0
|
||||||
max_strips = 5
|
max_strips = 5
|
||||||
for strip in islice(scraperobj.getAllStrips(), 0, max_strips):
|
for strip in islice(scraperobj.getAllStrips(), 0, max_strips):
|
||||||
|
|
Loading…
Reference in a new issue