Exemplo n.º 1
0
    def requestAvatarId(self, c):
        creds = credentials.IUsernamePassword(c, None)

        if creds is not None:
            locks = []
            pool = HTTPConnectionPool(reactor, persistent=False)
            pool.cachedConnectionTimeout = self.timeout
            if self.max_concurrency:
                pool.persistent = True
                pool.maxPersistentPerHost = self.max_concurrency
                locks.append(
                    defer.DeferredSemaphore(self.max_concurrency))

            if self.global_max_concurrency:
                locks.append(
                    defer.DeferredSemaphore(self.global_max_concurrency))

            conn = ThrottledSwiftConnection(
                locks, self.auth_url, creds.username, creds.password,
                pool=pool,
                extra_headers=self.extra_headers,
                verbose=self.verbose,
                ceph_compatible=self.ceph_compatible
            )
            conn.user_agent = USER_AGENT

            d = conn.authenticate()
            d.addCallback(self._after_auth, conn)
            d.addErrback(eb_failed_auth)
            return d
        return defer.fail(error.UnauthorizedLogin())
Exemplo n.º 2
0
    def requestAvatarId(self, c):
        creds = credentials.IUsernamePassword(c, None)

        if creds is not None:
            locks = []
            pool = HTTPConnectionPool(reactor, persistent=False)
            pool.cachedConnectionTimeout = self.timeout
            if self.max_concurrency:
                pool.persistent = True
                pool.maxPersistentPerHost = self.max_concurrency
                locks.append(defer.DeferredSemaphore(self.max_concurrency))

            if self.global_max_concurrency:
                locks.append(
                    defer.DeferredSemaphore(self.global_max_concurrency))

            conn = ThrottledSwiftConnection(locks,
                                            self.auth_url,
                                            creds.username,
                                            creds.password,
                                            pool=pool,
                                            extra_headers=self.extra_headers,
                                            verbose=self.verbose)
            conn.user_agent = USER_AGENT

            d = conn.authenticate()
            d.addCallback(self._after_auth, conn)
            d.addErrback(eb_failed_auth)
            return d
        return defer.fail(error.UnauthorizedLogin())
Exemplo n.º 3
0
    def test_multi_lock(self):
        lock = defer.DeferredLock()
        sem = defer.DeferredSemaphore(2)
        conn = ThrottledSwiftConnection([lock, sem],
                                        'http://127.0.0.1:8080/auth/v1.0',
                                        'username',
                                        'api_key',
                                        verbose=True)
        conn.agent = self.agent
        conn.storage_url = 'http://127.0.0.1:8080/v1/AUTH_user'
        conn.auth_token = 'TOKEN_123'

        conn.make_request('method', 'path')

        self.assertEqual(len(self.agent.requests), 1)
        self.assertEqual(lock.locked, 1)
        self.assertEqual(sem.tokens, 1)

        conn.make_request('method', 'path2')
        self.assertEqual(len(self.agent.requests), 1)
        d, args, kwargs = self.agent.requests[0]
        d.callback(StubResponse(200))

        self.assertEqual(len(self.agent.requests), 2)
        d, args, kwargs = self.agent.requests[1]
        d.callback(StubResponse(200))
        self.assertEqual(lock.locked, 0)
        self.assertEqual(sem.tokens, 2)
Exemplo n.º 4
0
    def test_multi_lock(self):
        lock = defer.DeferredLock()
        sem = defer.DeferredSemaphore(2)
        conn = ThrottledSwiftConnection(
            [lock, sem],
            'http://127.0.0.1:8080/auth/v1.0', 'username', 'api_key',
            verbose=True)
        conn.agent = self.agent
        conn.storage_url = 'http://127.0.0.1:8080/v1/AUTH_user'
        conn.auth_token = 'TOKEN_123'

        conn.make_request('method', 'path')

        self.assertEqual(len(self.agent.requests), 1)
        self.assertEqual(lock.locked, 1)
        self.assertEqual(sem.tokens, 1)

        conn.make_request('method', 'path2')
        self.assertEqual(len(self.agent.requests), 1)
        d, args, kwargs = self.agent.requests[0]
        d.callback(StubResponse(200))

        self.assertEqual(len(self.agent.requests), 2)
        d, args, kwargs = self.agent.requests[1]
        d.callback(StubResponse(200))
        self.assertEqual(lock.locked, 0)
        self.assertEqual(sem.tokens, 2)