Beispiel #1
0
def workload(id, run):
  key = model.Key(EmptyModel, 1)
  ent = EmptyModel(key=key)
  keys = []

  time.sleep(random.random() / 10)

  def tx1():
    new_key = yield ent.put_async()
    assert key == new_key, (id, run)

  def tx2():
    new_ent = yield key.get_async()
    assert ent == new_ent, (id, run)

  def tx3():
    ents = [EmptyModel() for _ in range(10)]
    futs = [e.put_async() for e in ents]
    keys.extend((yield futs))
    for key, ent in zip(keys, ents):
      assert ent == key.get()

  def tx4():
    yield key.delete_async()
    for key in keys:
      assert (yield key.get_async) is None

  yield [model.transaction_async(tx, xg=True) for tx in tx1, tx2, tx3, tx4]
Beispiel #2
0
    def post(self):
        # TODO: XSRF protection.
        @tasklets.tasklet
        def helper():
            user = users.get_current_user()
            if not user:
                self.redirect(users.create_login_url('/account'))
                return
            account = yield get_account(user.user_id())
            if self.request.get('delete'):
                if account:
                    yield account.key.delete_async()
                self.redirect('/account')
                return
            if not account:
                account = Account(key=account_key(user.user_id()),
                                  email=user.email(),
                                  userid=user.user_id())
            nickname = self.request.get('nickname')
            if nickname:
                account.nickname = nickname
            yield account.put_async()
            self.redirect('/account')

        yield model.transaction_async(helper)
Beispiel #3
0
def workload(id, run):
    key = model.Key(EmptyModel, 1)
    ent = EmptyModel(key=key)
    keys = []

    time.sleep(random.random() / 10)

    def tx1():
        new_key = yield ent.put_async()
        assert key == new_key, (id, run)

    def tx2():
        new_ent = yield key.get_async()
        assert ent == new_ent, (id, run)

    def tx3():
        ents = [EmptyModel() for _ in range(10)]
        futs = [e.put_async() for e in ents]
        keys.extend((yield futs))
        for key, ent in zip(keys, ents):
            assert ent == key.get()

    def tx4():
        yield key.delete_async()
        for key in keys:
            assert (yield key.get_async) is None

    yield [model.transaction_async(tx, xg=True) for tx in tx1, tx2, tx3, tx4]
Beispiel #4
0
 def post(self):
   # TODO: XSRF protection.
   @tasklets.tasklet
   def helper():
     user = users.get_current_user()
     if not user:
       self.redirect(users.create_login_url('/account'))
       return
     account = yield get_account(user.user_id())
     if self.request.get('delete'):
       if account:
         yield account.key.delete_async()
       self.redirect('/account')
       return
     if not account:
       account = Account(key=account_key(user.user_id()),
                         email=user.email(), userid=user.user_id())
     nickname = self.request.get('nickname')
     if nickname:
       account.nickname = nickname
     yield account.put_async()
     self.redirect('/account')
   yield model.transaction_async(helper)