Ejemplo n.º 1
0
    def test_get_with_no_content(self, mock_try_reverse_proxy_url):
        tool_a = model.Tool(tool_id='tool_a')
        tool_b = model.Tool(tool_id='tool_b')
        tool_a.put()
        tool_b.put()
        # Skip reverse proxy.
        mock_try_reverse_proxy_url.return_value = ''

        sliver_a = model.SliverTool(
            tool_id='tool_a',
            status='online',
            site_id='foo01',
            slice_id='tool_a',
            fqdn='a.tool.mlab1.foo01.measurement-lab.org',
            sliver_ipv4='192.168.1.2')
        sliver_a.put()

        h = lookup.LookupHandler()
        h.request = LookupTest.RequestMockup(url='https://mlab-ns.appspot.com',
                                             path='/tool_a',
                                             qs='policy=geo_options')
        h.response = LookupTest.ResponseMockup()

        h.get()

        self.assertEqual(h.response.out.msg, '')
        self.assertEqual(h.response.code, 204)
Ejemplo n.º 2
0
    def initialize_sliver_tool(self, tool, site, server_id, fqdn):
        sliver_tool_id = model.get_sliver_tool_id(tool.tool_id, tool.slice_id,
                                                  server_id, site.site_id)

        return model.SliverTool(
            tool_id=tool.tool_id,
            slice_id=tool.slice_id,
            site_id=site.site_id,
            server_id=server_id,
            fqdn=fqdn,
            server_port=tool.server_port,
            http_port=tool.http_port,
            # IP addresses will be updated by the IPUpdateHandler.
            sliver_ipv4=message.NO_IP_ADDRESS,
            sliver_ipv6=message.NO_IP_ADDRESS,
            # Status will be updated by the StatusUpdateHandler.
            status_ipv4=message.STATUS_OFFLINE,
            status_ipv6=message.STATUS_OFFLINE,
            tool_extra="",
            latitude=site.latitude,
            longitude=site.longitude,
            roundrobin=site.roundrobin,
            city=site.city,
            country=site.country,
            update_request_timestamp=long(time.time()),
            key_name=sliver_tool_id)
Ejemplo n.º 3
0
    def testGetCandidatesFromSitesNoMemcacheNoDatastore(self):
        sliver_tool_list = [
            MockSliverTool('s1', message.STATUS_OFFLINE,
                           message.STATUS_OFFLINE)
        ]
        memcache.set('tool_id2',
                     sliver_tool_list,
                     namespace=constants.MEMCACHE_NAMESPACE_TOOLS)

        root = TestEntityGroupRoot(key_name='root')
        st1 = model.SliverTool(parent=root.key())
        st1.tool_id = 'valid_tool_id'
        st1.site_id = 's1'
        st1.status_ipv4 = message.STATUS_OFFLINE
        st1.status_ipv6 = message.STATUS_OFFLINE
        st1.put()

        base_resolver = resolver.ResolverBase()
        mock_query = mock.Mock(tool_id='valid_tool_id')
        self.assertEqual(
            0,
            len(
                base_resolver._get_candidates_from_sites(
                    mock_query, message.ADDRESS_FAMILY_IPv4, ['s1'])))
        self.assertEqual(
            0,
            len(
                base_resolver._get_candidates_from_sites(
                    mock_query, message.ADDRESS_FAMILY_IPv6, ['s1'])))
Ejemplo n.º 4
0
    def testGetCandidatesYesMemcacheButOffline(self):
        sliver_tool_list = [
            MockSliverTool(status_ipv4=message.STATUS_OFFLINE,
                           status_ipv6=message.STATUS_OFFLINE)
        ]
        memcache.set('valid_tool_id',
                     sliver_tool_list,
                     namespace=constants.MEMCACHE_NAMESPACE_TOOLS)

        root = TestEntityGroupRoot(key_name='root')
        st1 = model.SliverTool(parent=root.key())
        st1.tool_id = 'valid_tool_id'
        st1.status_ipv4 = message.STATUS_ONLINE
        st1.status_ipv6 = message.STATUS_ONLINE
        st1.put()

        base_resolver = resolver.ResolverBase()
        mock_query = mock.Mock(tool_id='valid_tool_id')
        self.assertEqual(
            0,
            len(
                base_resolver._get_candidates(mock_query,
                                              message.ADDRESS_FAMILY_IPv4)))
        self.assertEqual(
            0,
            len(
                base_resolver._get_candidates(mock_query,
                                              message.ADDRESS_FAMILY_IPv6)))
Ejemplo n.º 5
0
    def testGetCandidatesFromSitesNoMemcacheYesDatastore(self):
        root = TestEntityGroupRoot(key_name='root')
        st1 = model.SliverTool(parent=root.key())
        st1.tool_id = 'valid_tool_id'
        st1.site_id = 's1'
        st1.status_ipv4 = message.STATUS_ONLINE
        st1.status_ipv6 = message.STATUS_ONLINE
        st1.put()
        st2 = model.SliverTool(parent=root.key())
        st2.tool_id = 'valid_tool_id'
        st2.site_id = 's1'
        st2.status_ipv4 = message.STATUS_ONLINE
        st2.status_ipv6 = message.STATUS_OFFLINE
        st2.put()
        st3 = model.SliverTool(parent=root.key())
        st3.tool_id = 'valid_tool_id'
        st3.site_id = 's1'
        st3.status_ipv4 = message.STATUS_OFFLINE
        st3.status_ipv6 = message.STATUS_ONLINE
        st3.put()
        st4 = model.SliverTool(parent=root.key())
        st4.tool_id = 'valid_tool_id'
        st4.site_id = 's2'
        st4.status_ipv4 = message.STATUS_OFFLINE
        st4.status_ipv6 = message.STATUS_ONLINE
        st4.put()
        st5 = model.SliverTool(parent=root.key())
        st5.tool_id = 'valid_tool_id'
        st5.site_id = 's1'
        st5.status_ipv4 = message.STATUS_OFFLINE
        st5.status_ipv6 = message.STATUS_OFFLINE
        st5.put()

        base_resolver = resolver.ResolverBase()
        mock_query = mock.Mock(tool_id='valid_tool_id')
        self.assertEqual(
            2,
            len(
                base_resolver._get_candidates_from_sites(
                    mock_query, message.ADDRESS_FAMILY_IPv4, ['s1'])))
        self.assertEqual(
            2,
            len(
                base_resolver._get_candidates_from_sites(
                    mock_query, message.ADDRESS_FAMILY_IPv6, ['s1'])))
Ejemplo n.º 6
0
 def createSliverTool(self, tool_id, site_id=None, status_ipv4=None,
                      status_ipv6=None, latitude=None, longitude=None,
                      country=None, fqdn=''):
     tool = model.SliverTool()
     tool.tool_id = tool_id
     tool.site_id = site_id
     tool.status_ipv4 = status_ipv4
     tool.status_ipv6 = status_ipv6
     tool.latitude = latitude
     tool.longitude = longitude
     tool.country = country
     tool.fqdn = fqdn
     self.created_tools.append(tool)
Ejemplo n.º 7
0
def _createSliverTool(tool_id,
                      site_id=None,
                      status_ipv4=None,
                      status_ipv6=None,
                      latitude=None,
                      longitude=None,
                      country=None):
    tool = model.SliverTool()
    tool.tool_id = tool_id
    tool.site_id = site_id
    tool.status_ipv4 = status_ipv4
    tool.status_ipv6 = status_ipv6
    tool.latitude = latitude
    tool.longitude = longitude
    tool.country = country
    return tool
Ejemplo n.º 8
0
    def test_log_location(self):
        h = lookup.LookupHandler()
        h.request = LookupTest.RequestMockup(url='https://mlab-ns.appspot.com',
                                             path='/ndt_ssl')
        h.response = LookupTest.ResponseMockup()
        query = mock.Mock()
        query.tool_id = 'ndt_ssl'
        # Place lat/lon at known distances apart and from server.
        query._gae_latitude, query._gae_longitude = (0.0, 1.0)
        query._maxmind_latitude, query._maxmind_longitude = (0.0, 2.0)
        query._geolocation_type = constants.GEOLOCATION_APP_ENGINE
        sliver_tools = [model.SliverTool(tool_id='ndt_ssl',
                                         site_id='foo01',
                                         country='US',
                                         city='New_York',
                                         latitude=0.0,
                                         longitude=0.0)]

        h.log_location(query, sliver_tools)