def test_on_request(self):

        app = Application()
        request = HTTPRequest('POST', '/collector?hello=world', body=b"foo=bar&bar=foo", headers={'Content-Type': 'application/x-www-form-urlencoded'}, connection=get_dummy_connection())

        handler = RequestHandler(app, request)
        handler.run = Run()

        self.collector.on_request(handler, handler.run)

        self.assertEquals({
            'body_arguments': {},
            'cookies': '',
            'headers': {'Content-Type': 'application/x-www-form-urlencoded'},
            'host': '127.0.0.1',
            'method': 'POST',
            'path': '/collector',
            'protocol': 'http',
            'query': 'hello=world',
            'body': 'foo=bar&bar=foo',
            'query_arguments': {'hello': ['world']},
            'remote_ip': '127.0.0.1',
            'uri': '/collector?hello=world',
            'version': 'HTTP/1.0',
            'controller': {'class': False, 'file': False, 'line': False, 'method': False},
            'route': False,
            'status_code': False,
        }, handler.run.get_metric('request'))
    def test_run(self):

        app = Application()
        request = HTTPRequest("GET", "/", connection=get_dummy_connection())

        handler = RequestHandler(app, request)
        handler.run = Run()

        shutil.rmtree("/tmp/python-element/", ignore_errors=True)

        path = "/tmp/python-element//%s" % handler.run.id

        os.makedirs(path)

        p = PyCallgraphCollector("/tmp/python-element/")
        p.on_request(handler, handler.run)

        self.assertIsInstance(handler.run, Run)

        p.on_terminate(handler, handler.run)

        self.assertTrue(os.path.isfile("/tmp/python-element/%s/pycallgraph.dot" % handler.run.id))