[Erp5-report] r28693 - /erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Aug 31 15:00:08 CEST 2009
Author: yusei
Date: Mon Aug 31 15:00:06 2009
New Revision: 28693
URL: http://svn.erp5.org?rev=28693&view=rev
Log:
Add a test to show that there is a bug on serialization tag and SQLDict.
Modified:
erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=28693&r1=28692&r2=28693&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] Mon Aug 31 15:00:06 2009
@@ -3357,6 +3357,77 @@
method_name = 'dummy_counter_%s' % i
delattr(Organisation, method_name)
+ def test_115_TestSerializationTagSQLDictPreventsParallelExecution(self, quiet=0, run=run_all_test):
+ """
+ Test if there are multiple activities with the same serialization tag,
+ then serialization tag guarantees that only one of the same serialization
+ tagged activities can be processed at the same time.
+ """
+ if not run: return
+ if not quiet:
+ message = '\n'
+ ZopeTestCase._print(message)
+ LOG('Testing... ',0,message)
+ from Products.CMFActivity import ActivityTool
+
+ portal = self.getPortal()
+ activity_tool = portal.portal_activities
+ get_transaction().commit()
+ self.tic()
+
+ # Add 6 activities
+ portal.organisation_module.activate(activity='SQLDict', tag='', serialization_tag='test_115').getId()
+ get_transaction().commit()
+ portal.organisation_module.activate(activity='SQLDict', serialization_tag='test_115').getTitle()
+ get_transaction().commit()
+ portal.organisation_module.activate(activity='SQLDict', tag='tag_1', serialization_tag='test_115').getId()
+ get_transaction().commit()
+ portal.person_module.activate(activity='SQLDict', serialization_tag='test_115').getId()
+ get_transaction().commit()
+ portal.person_module.activate(activity='SQLDict', tag='tag_2').getId()
+ get_transaction().commit()
+ portal.organisation_module.activate(activity='SQLDict', tag='', serialization_tag='test_115').getId()
+ get_transaction().commit()
+
+ # distribute and assign them to 3 nodes
+ activity_tool.distribute()
+ get_transaction().commit()
+
+ from Products.CMFActivity import ActivityTool
+ ActivityTool.activity_dict['SQLDict'].getProcessableMessageList(activity_tool, 1)
+ get_transaction().commit()
+ ActivityTool.activity_dict['SQLDict'].getProcessableMessageList(activity_tool, 2)
+ get_transaction().commit()
+ ActivityTool.activity_dict['SQLDict'].getProcessableMessageList(activity_tool, 3)
+ get_transaction().commit()
+
+ result = activity_tool.SQLDict_readMessageList(include_processing=1,
+ processing_node=None,
+ path=None,
+ method_id=None,
+ to_date=None,
+ offset=0,
+ count=1000)
+
+ self.assertEqual(len([message
+ for message in result
+ if (message.processing_node>0 and
+ message.processing==1 and
+ message.serialization_tag=='test_115')]),
+ 1)
+
+ self.assertEqual(len([message
+ for message in result
+ if (message.processing_node==-1 and
+ message.serialization_tag=='test_115')]),
+ 3)
+
+ self.assertEqual(len([message
+ for message in result
+ if (message.processing_node>0 and
+ message.processing==1 and
+ message.serialization_tag=='')]),
+ 1)
def test_suite():
suite = unittest.TestSuite()
More information about the Erp5-report
mailing list