Пример #1
0
 def test_FeedsLayer_uses_SlaveDatabasePolicy(self):
     """FeedsRequest should use the SlaveDatabasePolicy since they
     are read-only in nature. Also we don't want to send session cookies
     over them.
     """
     request = LaunchpadTestRequest(SERVER_URL='http://feeds.launchpad.dev')
     setFirstLayer(request, FeedsLayer)
     policy = IDatabasePolicy(request)
     self.assertIsInstance(policy, SlaveOnlyDatabasePolicy)
Пример #2
0
    def test_WebServiceRequest_uses_MasterDatabasePolicy(self):
        """WebService requests should always use the master flavor, since
        it's likely that clients won't support cookies and thus mixing read
        and write requests will result in incoherent views of the data.

        XXX 20090320 Stuart Bishop bug=297052: This doesn't scale of course
            and will meltdown when the API becomes popular.
        """
        api_prefix = getUtility(IWebServiceConfiguration).active_versions[0]
        server_url = 'http://api.launchpad.dev/%s' % api_prefix
        request = LaunchpadTestRequest(SERVER_URL=server_url)
        setFirstLayer(request, WebServiceLayer)
        policy = IDatabasePolicy(request)
        self.assertIsInstance(policy, MasterDatabasePolicy)
Пример #3
0
    def beforeTraversal(self, request):
        notify(StartRequestEvent(request))
        request._traversalticks_start = tickcount.tickcount()
        threadid = thread.get_ident()
        threadrequestfile = open_for_writing(
            'logs/thread-%s.request' % threadid, 'w')
        try:
            request_txt = unicode(request).encode('UTF-8')
        except Exception:
            request_txt = 'Exception converting request to string\n\n'
            try:
                request_txt += traceback.format_exc()
            except:
                request_txt += 'Unable to render traceback!'
        threadrequestfile.write(request_txt)
        threadrequestfile.close()

        # Tell our custom database adapter that the request has started.
        da.set_request_started()

        newInteraction(request)

        transaction.begin()

        # Now we are logged in, install the correct IDatabasePolicy for
        # this request.
        db_policy = IDatabasePolicy(request)
        getUtility(IStoreSelector).push(db_policy)

        getUtility(IOpenLaunchBag).clear()

        # Set the default layer.
        adapters = getGlobalSiteManager().adapters
        layer = adapters.lookup((providedBy(request), ), IDefaultSkin, '')
        if layer is not None:
            layers.setAdditionalLayer(request, layer)

        principal = self.getPrincipal(request)
        request.setPrincipal(principal)
        self.maybeRestrictToTeam(request)
        maybe_block_offsite_form_post(request)
Пример #4
0
 def test_WebServiceRequest_uses_LaunchpadDatabasePolicy(self):
     """WebService requests with a session cookie will use the
     standard LaunchpadDatabasePolicy so their database queries
     can be outsourced to a slave database when possible.
     """
     api_prefix = getUtility(IWebServiceConfiguration).active_versions[0]
     server_url = 'http://api.launchpad.dev/%s' % api_prefix
     request = LaunchpadTestRequest(SERVER_URL=server_url)
     newInteraction(request)
     try:
         # First, generate a valid session cookie.
         ISession(request)['whatever']['whatever'] = 'whatever'
         # Then stuff it into the request where we expect to
         # find it. The database policy is only interested if
         # a session cookie was sent with the request, not it
         # one has subsequently been set in the response.
         request._cookies = request.response._cookies
         setFirstLayer(request, WebServiceLayer)
         policy = IDatabasePolicy(request)
         self.assertIsInstance(policy, LaunchpadDatabasePolicy)
     finally:
         endInteraction()
Пример #5
0
 def test_other_request_uses_LaunchpadDatabasePolicy(self):
     """By default, requests should use the LaunchpadDatabasePolicy."""
     server_url = 'http://launchpad.dev/'
     request = LaunchpadTestRequest(SERVER_URL=server_url)
     policy = IDatabasePolicy(request)
     self.assertIsInstance(policy, LaunchpadDatabasePolicy)