13 Test the correct handling on errors during the event processing: 
   14 - The CPUCruncher is configured to return an ERROR on a fraction of the events 
   15 - The EventLoopMgr is configured to continue with the next event on ERROR 
   18 from Configurables 
import (
 
   21     AvalancheSchedulerSvc,
 
   35 whiteboard = HiveWhiteBoard(
"EventDataSvc", EventSlots=evtslots)
 
   37 slimeventloopmgr = HiveSlimEventLoopMgr(
 
   38     SchedulerName=
"AvalancheSchedulerSvc", OutputLevel=DEBUG, AbortOnFailure=
False 
   41 scheduler = AvalancheSchedulerSvc(ThreadPoolSize=threads, OutputLevel=DEBUG)
 
   43 AlgResourcePool(OutputLevel=DEBUG)
 
   44 CPUCrunchSvc(shortCalib=
True)
 
   56 a1 = CPUCruncher(
"A1")
 
   57 a1.outKeys = [
"/Event/a1"]
 
   59 a2 = CPUCruncher(
"A2")
 
   60 a2.inpKeys = [
"/Event/a1"]
 
   61 a2.outKeys = [
"/Event/a2"]
 
   63 a3 = CPUCruncher(
"A3")
 
   64 a3.inpKeys = [
"/Event/a1"]
 
   65 a3.outKeys = [
"/Event/a3"]
 
   68 a4 = CPUCruncher(
"A4")
 
   69 a4.inpKeys = [
"/Event/a2"]
 
   70 a4.outKeys = [
"/Event/a4"]
 
   72 a5 = CPUCruncher(
"A5")
 
   73 a5.inpKeys = [
"/Event/a3"]
 
   74 a5.outKeys = [
"/Event/a5"]
 
   76 for algo 
in [a1, a2, a3, a4, a5]:
 
   77     algo.Cardinality = cardinality
 
   80 msgSvc = InertMessageSvc(
"MessageSvc", Format=
"% F%30W%S%4W%e%s%7W%R%T %0W%M")
 
   81 ApplicationMgr().SvcMapping.append(msgSvc)
 
   87     EventLoop=slimeventloopmgr,
 
   88     TopAlg=[a1, a2, a3, a4, a5],
 
   89     MessageSvcType=
"InertMessageSvc",