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)
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)
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'])))
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)))
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'])))
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)
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
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)