def test_abacus_account(self): """ ABACUS (ACCOUNT): Test update of account usage """ self.session.query(models.UpdatedAccountCounter).delete() # pylint: disable=no-member self.session.query(models.AccountUsage).delete() # pylint: disable=no-member self.session.commit() # pylint: disable=no-member # Upload files -> account usage should increase self.files = [{'did_scope': self.scope.external, 'did_name': 'file_' + generate_uuid(), 'path': file_generator(size=self.file_sizes), 'rse': self.rse, 'lifetime': -1} for i in range(0, 2)] self.upload_client.upload(self.files) [os.remove(file['path']) for file in self.files] account.run(once=True) account_usage = get_local_account_usage(account=self.account, rse_id=self.rse_id)[0] assert account_usage['bytes'] == len(self.files) * self.file_sizes assert account_usage['files'] == len(self.files) # Update and check the account history with the core method update_account_counter_history(account=self.account, rse_id=self.rse_id) usage_history = get_usage_history(rse_id=self.rse_id, account=self.account) assert usage_history[-1]['bytes'] == len(self.files) * self.file_sizes assert usage_history[-1]['files'] == len(self.files) # Check the account history with the client usage_history = self.account_client.get_account_usage_history(rse=self.rse, account=self.account.external) assert usage_history[-1]['bytes'] == len(self.files) * self.file_sizes assert usage_history[-1]['files'] == len(self.files) # Delete rules -> account usage should decrease cleaner.run(once=True) account.run(once=True) # set account limit because return value of get_local_account_usage differs if a limit is set or not set_local_account_limit(account=self.account, rse_id=self.rse_id, bytes=10) account_usages = get_local_account_usage(account=self.account, rse_id=self.rse_id)[0] assert account_usages['bytes'] == 0 assert account_usages['files'] == 0
def get_usage_history(rse, account, issuer): """ Returns historical values of the specified counter, or raises CounterNotFound if the counter does not exist. :param rse: The RSE. :param account: The account name. :param issuer: The issuer account. :returns: A dictionary with total and bytes. """ rse_id = get_rse_id(rse=rse) return account_core.get_usage_history(rse_id, account)
def get_usage_history(rse, account, issuer, vo='def', session=None): """ Returns historical values of the specified counter, or raises CounterNotFound if the counter does not exist. :param rse: The RSE. :param account: The account name. :param issuer: The issuer account. :param vo: The VO to act on. :param session: The database session in use. :returns: A dictionary with total and bytes. """ rse_id = get_rse_id(rse=rse, vo=vo, session=session) account = InternalAccount(account, vo=vo) return account_core.get_usage_history(rse_id, account, session=session)