Ejemplo n.º 1
0
class InsertEntityGroupCase(unittest.TestCase):
    def setUp(self):
        datastore_batch = appscale_datastore_batch.DatastoreFactory.getDatastore(
            DB)
        self.app_datastore = DatastoreDistributed(datastore_batch)
        self.entities = []
        prev = None
        for ii in range(0, 4):
            entity = datastore.Entity("TestKind",
                                      _app="test",
                                      name=str(ii),
                                      namespace='b',
                                      parent=prev)
            prev = entity
            # have properties with different values bye same property names
            entity.update({
                'aaa': "1111_" + str(ii),
                'bbb': "2222",
                'ccc': "3" * ii
            })
            self.entities.append(entity.ToPb())
        self.keys = [
            'test/b/TestKind:0!', 'test/b/TestKind:0!TestKind:1!',
            'test/b/TestKind:0!TestKind:1!TestKind:2!',
            'test/b/TestKind:0!TestKind:1!TestKind:2!TestKind:3!'
        ]
        self.kkeys = [
            'test/b/TestKind:0!', 'test/b/TestKind:1!TestKind:0!',
            'test/b/TestKind:2!TestKind:1!TestKind:0!',
            'test/b/TestKind:3!TestKind:2!TestKind:1!TestKind:0!'
        ]

    def runTest(self):
        self.app_datastore.InsertEntities(self.entities)
        datastore_batch = appscale_datastore_batch.DatastoreFactory.getDatastore(
            DB)
        ret = datastore_batch.batch_get_entity(APP_ENTITY_TABLE, self.keys,
                                               APP_ENTITY_SCHEMA)

        assert 'aaa' in ret['test/b/TestKind:0!']['entity']
        assert 'bbb' in ret['test/b/TestKind:0!']['entity']
        assert 'ccc' in ret['test/b/TestKind:0!']['entity']
        assert 'aaa' in ret['test/b/TestKind:0!TestKind:1!']['entity']
        assert 'bbb' in ret['test/b/TestKind:0!TestKind:1!']['entity']
        assert 'ccc' in ret['test/b/TestKind:0!TestKind:1!']['entity']

    def tearDown(self):
        datastore_batch = appscale_datastore_batch.DatastoreFactory.getDatastore(
            DB)
        ret = datastore_batch.batch_delete(APP_ENTITY_TABLE, self.keys,
                                           APP_ENTITY_SCHEMA)
        ret = datastore_batch.batch_delete(APP_KIND_TABLE, self.kkeys,
                                           APP_KIND_SCHEMA)
        # Verify an entity has been deleted
        ret = datastore_batch.batch_get_entity(APP_ENTITY_TABLE, self.keys,
                                               APP_ENTITY_SCHEMA)
        assert 'entity' not in ret['test/b/TestKind:0!']