The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
ViewIsolationTest.py
Go to the documentation of this file.
1#!/usr/bin/env gaudirun.py
2
12"""
13A test for issue 13 in gitlab.
14Two different sets of sub-event contexts are created, and the
15same algorithms (attached to a common control flow node) run in each
16
17The ViewTester is an algorithm specifically designed to create sub-event
18contexts, pass them to the scheduler, and report on the current context.
19
20Five instances of ViewTester are used as follows:
21 - Algorithm A1 creates two sub-event contexts
22 - Algorithms A2 and A3 run within the sub-event contexts
23 - Algorithm A4 creates two more sub-event contexts
24 - Algorithms A2 and A3 run again, in the new contexts
25 - Algorithm A5 runs in the whole event context, after the sub-events
26
27"""
28
29from Configurables import (
30 AlgResourcePool,
31 AvalancheSchedulerSvc,
32 Gaudi__Sequencer,
33 HiveSlimEventLoopMgr,
34 HiveWhiteBoard,
35 Test__ViewTester,
36)
37from Gaudi.Configuration import *
38
39# metaconfig -------------------------------------------------------------------
40# It's confortable to collect the relevant parameters at the top of the optionfile
41evtslots = 1
42evtMax = 10
43cardinality = 1
44threads = 1
45viewsPerEvt = 2
46# -------------------------------------------------------------------------------
47
48# The configuration of the whiteboard ------------------------------------------
49# It is useful to call it EventDataSvc to replace the usual data service with
50# the whiteboard transparently.
51
52whiteboard = HiveWhiteBoard("EventDataSvc", EventSlots=evtslots)
53
54# -------------------------------------------------------------------------------
55
56# Event Loop Manager -----------------------------------------------------------
57# It's called slim since it has less functionalities overall than the good-old
58# event loop manager. Here we just set its outputlevel to DEBUG.
59
60slimeventloopmgr = HiveSlimEventLoopMgr(
61 SchedulerName="AvalancheSchedulerSvc", OutputLevel=INFO
62)
63
64# -------------------------------------------------------------------------------
65
66# ForwardScheduler -------------------------------------------------------------
67# We just decide how many algorithms in flight we want to have and how many
68# threads in the pool. The default value is -1, which is for TBB equivalent
69# to take over the whole machine.
70
71scheduler = AvalancheSchedulerSvc(ThreadPoolSize=threads, OutputLevel=INFO)
72
73# -------------------------------------------------------------------------------
74
75# Algo Resource Pool -----------------------------------------------------------
76# Nothing special here, we just set the debug level.
77AlgResourcePool(OutputLevel=INFO)
78
79# -------------------------------------------------------------------------------
80
81# Set up of the crunchers, daily business --------------------------------------
82
83a1 = Test__ViewTester("A1")
84a1.baseViewName = "viewOne"
85a1.viewNumber = viewsPerEvt
86a1.viewNodeName = "viewNodeOne"
87
88a2 = Test__ViewTester("A2")
89a2.viewNodeName = ""
90
91a3 = Test__ViewTester("A3")
92a3.viewNodeName = ""
93
94a4 = Test__ViewTester("A4")
95a4.baseViewName = "viewTwo"
96a4.viewNumber = viewsPerEvt
97a4.viewNodeName = "viewNodeTwo"
98
99a5 = Test__ViewTester("A5")
100a5.viewNodeName = ""
101
102for algo in [a1, a2, a3, a4, a5]:
103 algo.Cardinality = cardinality
104 algo.OutputLevel = INFO
105
106extraNode = Gaudi__Sequencer(
107 "extraNode", Members=[a2, a3], Sequential=True, OutputLevel=INFO
108)
109
110viewNodeOne = Gaudi__Sequencer(
111 "viewNodeOne",
112 Members=[extraNode],
113 Sequential=False,
114 ShortCircuit=False,
115 OutputLevel=INFO,
116)
117
118viewNodeTwo = Gaudi__Sequencer(
119 "viewNodeTwo",
120 Members=[extraNode],
121 Sequential=False,
122 ShortCircuit=False,
123 OutputLevel=INFO,
124)
125
126createViewSeq = Gaudi__Sequencer(
127 "createViewSeq",
128 Members=[a1, viewNodeOne, a4, viewNodeTwo, a5],
129 Sequential=True,
130 OutputLevel=INFO,
131)
132
133# Application Manager ----------------------------------------------------------
134# We put everything together and change the type of message service
135
137 EvtMax=evtMax,
138 EvtSel="NONE",
139 ExtSvc=[whiteboard],
140 EventLoop=slimeventloopmgr,
141 TopAlg=[createViewSeq],
142 MessageSvcType="InertMessageSvc",
143)
144
145# -------------------------------------------------------------------------------
The AlgResourcePool is a concrete implementation of the IAlgResourcePool interface.
The Application Manager class.
Data service base class.