core: add DebugRule which takes random amount of time to process
This commit is contained in:
		@ -1,6 +1,8 @@
 | 
			
		||||
"""passbook core models"""
 | 
			
		||||
import re
 | 
			
		||||
from logging import getLogger
 | 
			
		||||
from random import randrange
 | 
			
		||||
from time import sleep
 | 
			
		||||
from uuid import uuid4
 | 
			
		||||
 | 
			
		||||
import reversion
 | 
			
		||||
@ -213,3 +215,26 @@ class WebhookRule(Rule):
 | 
			
		||||
 | 
			
		||||
        verbose_name = _('Webhook Rule')
 | 
			
		||||
        verbose_name_plural = _('Webhook Rules')
 | 
			
		||||
 | 
			
		||||
@reversion.register()
 | 
			
		||||
class DebugRule(Rule):
 | 
			
		||||
    """Rule used for debugging the RuleEngine. Returns a fixed result,
 | 
			
		||||
    but takes a random time to process."""
 | 
			
		||||
 | 
			
		||||
    result = models.BooleanField(default=False)
 | 
			
		||||
    wait_min = models.IntegerField(default=5)
 | 
			
		||||
    wait_max = models.IntegerField(default=30)
 | 
			
		||||
 | 
			
		||||
    form = 'passbook.core.forms.rules.DebugRuleForm'
 | 
			
		||||
 | 
			
		||||
    def passes(self, user: User):
 | 
			
		||||
        """Wait random time then return result"""
 | 
			
		||||
        wait = randrange(self.wait_min, self.wait_max)
 | 
			
		||||
        LOGGER.debug("Rule '%s' waiting for %ds", self.name, wait)
 | 
			
		||||
        sleep(wait)
 | 
			
		||||
        return self.result
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
 | 
			
		||||
        verbose_name = _('Debug Rule')
 | 
			
		||||
        verbose_name_plural = _('Debug Rules')
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user