def test_buildObject(self): "Check processing objects can be instantiated" for objectType in self._get_objectTypes(): if "Store" in objectType: # Don't build Stores - creates empty BDB files continue config = self._get_configFromObjectType(objectType) try: obj = buildObject(self.session, objectType, (config, self.server)) except Exception as e: self.assertIsInstance(e, (ConfigFileException, NotImplementedError, MissingDependencyException), "When failing to buildObject of type " "'{0}' {1} is raised. Should be one of: " "ConfigFileException, " "NotImplementedError, " "MissingDependencyException" "".format(objectType, e.__class__.__name__) ) else: modName = objectType.split('.')[1] expCls = getattr(baseObjects, modName[0].upper() + modName[1:]) self.assertIsInstance(obj, expCls)
def fetch_resultSet(self, session, id_): if (self.idNormalizer is not None): sid = self.idNormalizer.process_string(session, id_) elif isinstance(id_, unicode): sid = id_.encode('utf-8') else: sid = str(id_) query = ("SELECT class, data FROM {0} WHERE identifier = %s;" "".format(self.table) ) res = self._query(query, (sid,)) try: cl, data = res[0] except IndexError: raise ObjectDoesNotExistException('%s/%s' % (self.id, sid)) ndata = self._unescape_data(data) rset = dynamic.buildObject(session, cl, [[]]) rset.deserialize(session, ndata) rset.id = id_ # Update expires now = datetime.utcnow() if (rset.expires): expiry_delta = timedelta(rset.expires) else: expiry_delta = timedelta(self.get_default(session, 'expires', 600)) rset.timeExpires = expires = now + expiry_delta query = ("UPDATE {0} SET timeAccessed = %s, expires = %s " "WHERE identifier = %s;".format(self.table) ) self._query(query, (now, expires, sid)) return rset
def fetch_resultSet(self, session, id): data = self.fetch_data(session, id) if (data): (cl, srlz) = data.split('||', 1) rset = dynamic.buildObject(session, cl, []) rset.deserialise(session, srlz) return rset else: return SimpleResultSet(session, [], id)
def _deserialise(self, session, data, size, id): (cl, srlz) = data.split('||', 1) rset = dynamic.buildObject(session, cl, [[]]) # rset = SimpleResultSet(session, []) if self.get_setting(session, 'compress', 1): # gunzip srlz = srlz.decode('string_escape') buff = StringIO.StringIO(srlz) zfile = gzip.GzipFile(mode='rb', fileobj=buff) srlz = zfile.read() zfile.close() buff.close() rset.deserialise(session, srlz) return rset
def _deserialise(self, session, data, size, id_): (cl, srlz) = data.split('||', 1) rset = dynamic.buildObject(session, cl, [[]]) # rset = SimpleResultSet(session, []) if self.get_setting(session, 'compress', 1): # gunzip srlz = srlz.decode('string_escape') buff = StringIO.StringIO(srlz) zfile = gzip.GzipFile(mode='rb', fileobj=buff) srlz = zfile.read() zfile.close() buff.close() rset.deserialise(session, srlz) return rset
def fetch_resultSet(self, session, id): self._openContainer(session) sid = str(id) if self.idNormalizer is not None: sid = self.idNormalizer.process_string(session, sid) query = "SELECT class, data FROM %s WHERE identifier = '%s';" % (self.table, sid) res = self._query(query) try: rdict = res.dictresult()[0] except IndexError: raise ObjectDoesNotExistException("%s/%s" % (self.id, sid)) data = rdict["data"] try: ndata = pg.unescape_bytea(data) except: # insufficient PyGreSQL version ndata = data.replace("\\'", "'") ndata = ndata.replace("\\000", "\x00") ndata = ndata.replace("\\012", "\n") # data is res.dictresult() cl = rdict["class"] rset = dynamic.buildObject(session, cl, [[]]) rset.deserialize(session, ndata) rset.id = id # Update expires now = time.time() nowStr = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(now)) expires = now + self.get_default(session, "expires", 600) rset.timeExpires = expires expiresStr = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(expires)) query = "UPDATE %s SET timeAccessed = '%s', expires = '%s' WHERE identifier = '%s';" % ( self.table, nowStr, expiresStr, sid, ) self._query(query) return rset
def fetch_resultSet(self, session, id): self._openContainer(session) sid = str(id) if (self.idNormalizer != None): sid = self.idNormalizer.process_string(session, sid) query = "SELECT class, data FROM %s WHERE identifier = '%s';" % ( self.table, sid) res = self._query(query) try: rdict = res.dictresult()[0] except IndexError: raise ObjectDoesNotExistException('%s/%s' % (self.id, sid)) data = rdict['data'] try: ndata = pg.unescape_bytea(data) except: # insufficient PyGreSQL version ndata = data.replace("\\'", "'") ndata = ndata.replace('\\000', '\x00') ndata = ndata.replace('\\012', '\n') # data is res.dictresult() cl = rdict['class'] rset = dynamic.buildObject(session, cl, [[]]) rset.deserialize(session, ndata) rset.id = id # Update expires now = time.time() nowStr = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(now)) expires = now + self.get_default(session, 'expires', 600) rset.timeExpires = expires expiresStr = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(expires)) query = "UPDATE %s SET timeAccessed = '%s', expires = '%s' WHERE identifier = '%s';" % ( self.table, nowStr, expiresStr, sid) self._query(query) return rset
def test_buildObject(self): "Check processing objects can be instantiated" for objectType in self._get_objectTypes(): if "Store" in objectType: # Don't build Stores - creates empty BDB files continue config = self._get_configFromObjectType(objectType) try: obj = buildObject(self.session, objectType, (config, self.server)) except Exception as e: self.assertIsInstance( e, (ConfigFileException, NotImplementedError, MissingDependencyException), "When failing to buildObject of type " "'{0}' {1} is raised. Should be one of: " "ConfigFileException, " "NotImplementedError, " "MissingDependencyException" "".format(objectType, e.__class__.__name__)) else: modName = objectType.split('.')[1] expCls = getattr(baseObjects, modName[0].upper() + modName[1:]) self.assertIsInstance(obj, expCls)