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())
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())
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)
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)