示例#1
0
文件: fsm_test.py 项目: iki/fantasm
class FSMContextMergeJoinTests(AppEngineTestCase):
    
    def setUp(self):
        super(FSMContextMergeJoinTests, self).setUp()
        self.state = State('foo', None, CountExecuteCalls(), None)
        self.state2 = State('foo2', None, CountExecuteCallsWithFork(), None)
        self.state.addTransition(Transition('t1', self.state2, queueName='q'), 'event')
        self.context = FSMContext(self.state, 
                                  currentState=self.state, 
                                  machineName='machineName', 
                                  instanceName='instanceName',
                                  queueName='qq',
                                  obj={TASK_NAME_PARAM: 'taskName'})
        self.context.startingState = self.state
        from google.appengine.api.taskqueue.taskqueue import TaskRetryOptions
        self.context.retryOptions = TaskRetryOptions()
        self.context[INDEX_PARAM] = 1
        self.context[STEPS_PARAM] = 0
        
    def test_mergeJoinDispatch_1_context(self):
        _FantasmFanIn(workIndex='instanceName--foo--event--foo2--step-0-2654435761').put()
        self.assertEqual(1, _FantasmFanIn.all().count())
        contexts = self.context.mergeJoinDispatch('event', {RETRY_COUNT_PARAM: 0})
        self.assertEqual([{'__ix__': 1, '__step__': 0}], contexts)
        self.assertEqual(1, _FantasmFanIn.all().count())
        
    def test_mergeJoinDispatch_1234_contexts(self):
        for i in xrange(1234):
            _FantasmFanIn(workIndex='instanceName--foo--event--foo2--step-0-2654435761').put()
        self.assertEqual(1000, _FantasmFanIn.all().count()) # can't get them all with .count()
        contexts = self.context.mergeJoinDispatch('event', {RETRY_COUNT_PARAM: 0})
        self.assertEqual(1234, len(contexts))
        self.assertEqual(1000, _FantasmFanIn.all().count())
示例#2
0
 def setUp(self):
     super(FSMContextMergeJoinTests, self).setUp()
     self.state = State('foo', None, CountExecuteCalls(), None)
     self.state2 = State('foo2', None, CountExecuteCallsWithFork(), None)
     self.state.addTransition(Transition('t1', self.state2, queueName='q'),
                              'event')
     self.context = FSMContext(self.state,
                               currentState=self.state,
                               machineName='machineName',
                               instanceName='instanceName',
                               queueName='qq',
                               obj={TASK_NAME_PARAM: 'taskName'})
     self.context.startingState = self.state
     from google.appengine.api.taskqueue.taskqueue import TaskRetryOptions
     self.context.retryOptions = TaskRetryOptions()
     self.context[INDEX_PARAM] = 1
     self.context[STEPS_PARAM] = 0
示例#3
0
 def setUp(self):
     super(ReadWriteLockTest, self).setUp()
     self.loggingDouble = getLoggingDouble()
     self.state = State('name', None, None, None)
     self.context = FSMContext(self.state, queueName='default')
     self.context.currentState = self.state
     ReadWriteLock._BUSY_WAIT_ITER_SECS = ReadWriteLock.BUSY_WAIT_ITERS
     ReadWriteLock.BUSY_WAIT_ITER_SECS = 0
     ReadWriteLock._BUSY_WAIT_ITERS = ReadWriteLock.BUSY_WAIT_ITERS
     ReadWriteLock.BUSY_WAIT_ITERS = 2
     random.seed(0)  # last step
示例#4
0
class FSMContextMergeJoinTests(AppEngineTestCase):
    def setUp(self):
        super(FSMContextMergeJoinTests, self).setUp()
        self.state = State('foo', None, CountExecuteCalls(), None)
        self.state2 = State('foo2', None, CountExecuteCallsWithFork(), None)
        self.state.addTransition(Transition('t1', self.state2, queueName='q'),
                                 'event')
        self.context = FSMContext(self.state,
                                  currentState=self.state,
                                  machineName='machineName',
                                  instanceName='instanceName',
                                  queueName='qq',
                                  obj={TASK_NAME_PARAM: 'taskName'})
        self.context.startingState = self.state
        from google.appengine.api.taskqueue.taskqueue import TaskRetryOptions
        self.context.retryOptions = TaskRetryOptions()
        self.context[INDEX_PARAM] = 1
        self.context[STEPS_PARAM] = 0

    def test_mergeJoinDispatch_1_context(self):
        _FantasmFanIn(
            workIndex='instanceName--foo--event--foo2--step-0-2654435761').put(
            )
        self.assertEqual(1, _FantasmFanIn.all().count())
        contexts = self.context.mergeJoinDispatch('event',
                                                  {RETRY_COUNT_PARAM: 0})
        self.assertEqual([{'__ix__': 1, '__step__': 0}], contexts)
        self.assertEqual(1, _FantasmFanIn.all().count())

    def test_mergeJoinDispatch_1234_contexts(self):
        for i in xrange(1234):
            _FantasmFanIn(
                workIndex='instanceName--foo--event--foo2--step-0-2654435761'
            ).put()
        self.assertEqual(
            1000,
            _FantasmFanIn.all().count())  # can't get them all with .count()
        contexts = self.context.mergeJoinDispatch('event',
                                                  {RETRY_COUNT_PARAM: 0})
        self.assertEqual(1234, len(contexts))
        self.assertEqual(1000, _FantasmFanIn.all().count())
示例#5
0
 def setUp(self):
     super(FSMContextMergeJoinTests, self).setUp()
     self.state = State('foo', None, CountExecuteCalls(), None)
     self.state2 = State('foo2', None, CountExecuteCallsWithFork(), None)
     self.state.addTransition(Transition('t1', self.state2, queueName='q'), 'event')
     self.context = FSMContext(self.state, 
                               currentState=self.state, 
                               machineName='machineName', 
                               instanceName='instanceName',
                               queueName='qq')
     self.context[INDEX_PARAM] = 1
     self.context[STEPS_PARAM] = 0
示例#6
0
文件: fsm_test.py 项目: iki/fantasm
 def setUp(self):
     super(FSMContextMergeJoinTests, self).setUp()
     self.state = State('foo', None, CountExecuteCalls(), None)
     self.state2 = State('foo2', None, CountExecuteCallsWithFork(), None)
     self.state.addTransition(Transition('t1', self.state2, queueName='q'), 'event')
     self.context = FSMContext(self.state, 
                               currentState=self.state, 
                               machineName='machineName', 
                               instanceName='instanceName',
                               queueName='qq',
                               obj={TASK_NAME_PARAM: 'taskName'})
     self.context.startingState = self.state
     from google.appengine.api.taskqueue.taskqueue import TaskRetryOptions
     self.context.retryOptions = TaskRetryOptions()
     self.context[INDEX_PARAM] = 1
     self.context[STEPS_PARAM] = 0
示例#7
0
 def test_generatedContextNameIsUnique(self):
     instanceName1 = self.context.instanceName
     state = State('foo', None, CountExecuteCalls(), None)
     context2 = FSMContext({state.name: state}, state, queueName='q')
     instanceName2 = context2.instanceName
     self.assertNotEquals(instanceName1, instanceName2)