def test_dont_generate_relation_to_internal_manager(self): with self.admin_access.repo_cnx() as cnx: metagen = stores.MetadataGenerator(cnx) self.assertIn('created_by', metagen.etype_rels('CWUser')) self.assertIn('owned_by', metagen.etype_rels('CWUser')) with self.repo.internal_cnx() as cnx: metagen = stores.MetadataGenerator(cnx) self.assertNotIn('created_by', metagen.etype_rels('CWUser')) self.assertNotIn('owned_by', metagen.etype_rels('CWUser'))
def __init__(self, cnx, slave_mode=False, eids_seq_range=10000, metagen=None): """Create a MassiveObject store, with the following arguments: - `cnx`, a connection to the repository - `metagen`, optional :class:`MetadataGenerator` instance - `eids_seq_range`: size of eid range reserved by the store for each batch """ super(MassiveObjectStore, self).__init__(cnx) self.uuid = str(uuid4()).replace('-', '') self.slave_mode = slave_mode if metagen is None: metagen = stores.MetadataGenerator(cnx) self.metagen = metagen self.logger = logging.getLogger('dataimport.massive_store') self.sql = cnx.system_sql self.schema = cnx.vreg.schema self.default_values = get_default_values(self.schema) self.get_next_eid = lambda g=self._get_eid_gen(eids_seq_range): next(g) self._source_dbhelper = cnx.repo.system_source.dbhelper self._dbh = PGHelper(cnx) self._data_entities = defaultdict(list) self._data_relations = defaultdict(list) self._initialized = {}
def store_impl(self, cnx): source = cnx.create_entity('CWSource', type=u'datafeed', name=u'test', url=u'test') cnx.commit() metagen = stores.MetadataGenerator(cnx, source=cnx.repo.source_by_eid( source.eid)) return stores.NoHookRQLObjectStore(cnx, metagen)
def test_dont_generate_specified_values(self): with self.admin_access.repo_cnx() as cnx: metagen = stores.MetadataGenerator(cnx) # hijack gen_modification_date to ensure we don't go through it metagen.gen_modification_date = None md = DT.datetime.now(pytz.utc) - DT.timedelta(days=1) attrs = metagen.base_etype_attrs('CWUser') attrs.update(dict(modification_date=md)) metagen.init_entity_attrs('CWUser', 1, attrs) self.assertEqual(attrs['modification_date'], md)
def test_consider_metagen(self): """Ensure index on owned_by is not deleted if we don't consider this metadata.""" with self.admin_access.repo_cnx() as cnx: metagen = stores.MetadataGenerator(cnx, meta_skipped=('owned_by',)) store = MassiveObjectStore(cnx, metagen=metagen) store._drop_metadata_constraints() indexes = all_indexes(cnx) self.assertIn(build_index_name('owned_by_relation', ['eid_from', 'eid_to'], 'key_'), indexes) self.assertIn(build_index_name('owned_by_relation', ['eid_from'], 'idx_'), indexes)
def metagenerator_impl(cnx): return stores._MetaGeneratorBWCompatWrapper( stores.MetadataGenerator(cnx))