Merge branch 'master' of ssh.github.com:mitmproxy/pathod

This commit is contained in:
Aldo Cortesi 2013-12-17 14:32:56 +13:00
commit 467ef0c02a
5 changed files with 34 additions and 5 deletions

14
.travis.yml Normal file
View File

@ -0,0 +1,14 @@
language: python
python:
- "2.7"
# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors
install:
- "pip install coveralls --use-mirrors"
- "pip install nose-cov --use-mirrors"
- "pip install -r requirements.txt --use-mirrors"
- "pip install --upgrade git+https://github.com/mitmproxy/netlib.git"
# command to run tests, e.g. python setup.py test
script:
- "nosetests --with-cov --cov-report term-missing"
after_success:
- coveralls

View File

@ -1,3 +1,5 @@
[![Build Status](https://travis-ci.org/mitmproxy/pathod.png)](https://travis-ci.org/mitmproxy/pathod) [![Coverage Status](https://coveralls.io/repos/mitmproxy/pathod/badge.png)](https://coveralls.io/r/mitmproxy/pathod)
__pathod__ is a collection of pathological tools for testing and torturing HTTP __pathod__ is a collection of pathological tools for testing and torturing HTTP
clients and servers. The project has three components: clients and servers. The project has three components:

View File

@ -182,7 +182,7 @@ class FileGenerator:
def __init__(self, path): def __init__(self, path):
self.path = path self.path = path
self.fp = file(path, "rb") self.fp = file(path, "rb")
self.map = mmap.mmap(self.fp.fileno(), 0, prot=mmap.PROT_READ) self.map = mmap.mmap(self.fp.fileno(), 0, access=mmap.ACCESS_READ)
def __len__(self): def __len__(self):
return len(self.map) return len(self.map)

10
requirements.txt Normal file
View File

@ -0,0 +1,10 @@
Flask>=0.10.1
Jinja2>=2.7.1
MarkupSafe>=0.18
Werkzeug>=0.9.4
itsdangerous>=0.23
nose>=1.3.0
pyOpenSSL>=0.13.1
pyasn1>=0.1.7
requests>=2.1.0
netlib>=0.9.2

View File

@ -95,9 +95,8 @@ class TestValueFile:
v = language.Value.parseString("<path")[0] v = language.Value.parseString("<path")[0]
with tutils.tmpdir() as t: with tutils.tmpdir() as t:
p = os.path.join(t, "path") p = os.path.join(t, "path")
f = open(p, "wb") with open(p, "wb") as f:
f.write("x"*10000) f.write("x" * 10000)
f.close()
assert v.get_generator(dict(staticdir=t)) assert v.get_generator(dict(staticdir=t))
@ -152,6 +151,7 @@ class TestMisc:
assert g[-1] == "x" assert g[-1] == "x"
assert g[0:5] == "xxxxx" assert g[0:5] == "xxxxx"
assert repr(g) assert repr(g)
del g # remove all references to FileGenerator instance to close the file handle.
def test_value(self): def test_value(self):
assert language.Value.parseString("'val'")[0].val == "val" assert language.Value.parseString("'val'")[0].val == "val"
@ -697,7 +697,10 @@ class TestResponse:
assert r.actions[0].spec() == "pr,10" assert r.actions[0].spec() == "pr,10"
def test_parse_stress(self): def test_parse_stress(self):
r = language.parse_response({}, "400:b@100g") # While larger values are known to work on linux,
# len() technically returns an int and a python 2.7 int on windows has 32bit precision.
# Therefore, we should keep the body length < 2147483647 bytes in our tests.
r = language.parse_response({}, "400:b@1g")
assert r.length({}) assert r.length({})
def test_spec(self): def test_spec(self):