Exemplo n.º 1
0
    def setUp(self):
        """
        Check for inputs.
        """
        if self.localOptions['url']:
            self.input = self.localOptions['url']
        if not self.input:
            raise Exception("No input specified")

        try:
            self.localOptions['retries'] = int(self.localOptions['retries'])
        except ValueError:
            self.localOptions['retries'] = 2

        self.timeout = int(self.localOptions['timeout'])

        self.report['retries'] = self.localOptions['retries']
        self.report['client_resolver'] = self.resolverIp
        self.report['dns_consistency'] = None
        self.report['body_length_match'] = None
        self.report['headers_match'] = None
        self.report['status_code_match'] = None

        self.report['accessible'] = None
        self.report['blocking'] = None

        self.report['control_failure'] = None
        self.report['http_experiment_failure'] = None
        self.report['dns_experiment_failure'] = None

        self.report['tcp_connect'] = []
        self.report['control'] = {}

        self.hostname = urlparse(self.input).netloc
        if not self.hostname:
            raise AbsentHostname('No hostname', self.input)

        self.control = {
            'tcp_connect': {},
            'dns': {
                'addrs': [],
                'failure': None,
            },
            'http_request': {
                'body_length': -1,
                'failure': None,
                'status_code': -1,
                'headers': {},
                'title': ''
            }
        }
        if isinstance(self.localOptions['backend'], dict):
            self.web_connectivity_client = WebConnectivityClient(
                settings=self.localOptions['backend']
            )
        else:
            self.web_connectivity_client = WebConnectivityClient(
                self.localOptions['backend']
            )
Exemplo n.º 2
0
 def test_web_connectivity_client_control(self):
     wcc = WebConnectivityClient('https://web-connectivity.th.ooni.io')
     wcc.queryBackend = MagicMock()
     wcc.queryBackend.return_value = defer.succeed({})
     yield wcc.control("http://example.com/",
                       ["127.0.0.1:8080", "127.0.0.1:8082"])
     wcc.queryBackend.assert_called_with(
         'POST',
         '/',
         query={
             "http_request": "http://example.com/",
             "tcp_connect": ["127.0.0.1:8080", "127.0.0.1:8082"]
         })
Exemplo n.º 3
0
 def getReachableTestHelper(self, test_helper_name, test_helper_address,
                            test_helper_alternate):
     # For the moment we look for alternate addresses only of
     # web_connectivity test helpers.
     if test_helper_name == 'web-connectivity':
         for web_connectivity_settings in self.sortAddressesByPriority(
                 test_helper_address, test_helper_alternate):
             web_connectivity_test_helper = WebConnectivityClient(
                 settings=web_connectivity_settings)
             if not web_connectivity_test_helper.isSupported():
                 log.err("Unsupported %s web_connectivity test_helper "
                         "%s" % (web_connectivity_settings['type'],
                                 web_connectivity_settings['address']))
                 continue
             reachable = yield web_connectivity_test_helper.isReachable()
             if not reachable:
                 log.err("Unreachable %s web_connectivity test helper %s" %
                         (web_connectivity_settings['type'],
                          web_connectivity_settings['address']))
                 continue
             defer.returnValue(web_connectivity_settings)
         raise e.NoReachableTestHelpers
     else:
         defer.returnValue(test_helper_address.encode('ascii'))
Exemplo n.º 4
0
 def test_web_connectivity_client_is_not_reachable(self):
     wcc = WebConnectivityClient('https://web-connectivity.th.ooni.io')
     wcc.queryBackend = MagicMock()
     wcc.queryBackend.return_value = defer.fail(Exception())
     result = yield wcc.isReachable()
     self.assertEqual(result, False)
Exemplo n.º 5
0
 def test_web_connectivity_client_is_reachable(self):
     wcc = WebConnectivityClient('https://web-connectivity.th.ooni.io')
     wcc.queryBackend = MagicMock()
     wcc.queryBackend.return_value = defer.succeed({"status": "ok"})
     result = yield wcc.isReachable()
     self.assertEqual(result, True)