def test_timeout(self): dbname, db = self.temp_db() timeout = 1 session = http.Session(timeout=timeout) start = time.time() status, headers, body = session.request( 'GET', db.resource.url + '/_changes?feed=longpoll&since=1000&timeout=%s' % (timeout * 2 * 1000, )) self.assertRaises(socket.timeout, body.read) self.assertTrue(time.time() - start < timeout * 1.3)
def __init__(self, url=DEFAULT_BASE_URL, full_commit=True, session=None): """Initialize the server object. :param url: the URI of the server (for example ``http://localhost:5984/``) :param full_commit: turn on the X-Couch-Full-Commit header :param session: an http.Session instance or None for a default session """ if isinstance(url, util.strbase): self.resource = http.Resource(url, session or http.Session()) else: self.resource = url # treat as a Resource object if not full_commit: self.resource.headers['X-Couch-Full-Commit'] = 'false'
def __init__(self, credentials, server=None, database=None): """ Connect to the CouchDB server. If no database name is given, use the name provided in the settings """ self.url = (server if server is not None else settings.SERVER) self.database_name = database or settings.DATABASE self.server = couchdb.client.Server( self.url, session=http.Session(retry_delays=[5, 30])) self.server.resource.credentials = credentials try: self.database = self.server[self.database_name] except ResourceNotFound: self.database = self.server.create(self.database_name) self.view = View(self.database)
def test_init_with_session(self): sess = http.Session() serv = client.Server(client.DEFAULT_BASE_URL, session=sess) serv.config() self.assertTrue(serv.resource.session is sess)
def test_init_with_resource(self): sess = http.Session() res = http.Resource(client.DEFAULT_BASE_URL, sess) serv = client.Server(url=res) serv.config()
def test_timeout_retry(self): dbname, db = self.temp_db() timeout = 1e-12 session = http.Session(timeout=timeout, retryable_errors=["timed out"]) self.assertRaises(socket.timeout, session.request, 'GET', db.resource.url)