Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
import FWCore.ParameterSet.Config as cms

process = cms.Process("PROD")

process.load("FWCore.MessageService.MessageLogger_cfi")
process.MessageLogger.cerr.FwkReport.reportEvery = 1000

import FWCore.Framework.test.cmsExceptionsFatal_cff
process.options = FWCore.Framework.test.cmsExceptionsFatal_cff.options

process.maxEvents = cms.untracked.PSet(
    input = cms.untracked.int32(10)
)

process.source = cms.Source("EmptySource",
    firstLuminosityBlock = cms.untracked.uint32(1),
    numberEventsInLuminosityBlock = cms.untracked.uint32(100),
    firstEvent = cms.untracked.uint32(11),
    firstRun = cms.untracked.uint32(1),
    numberEventsInRun = cms.untracked.uint32(100)
)

process.thingWithMergeProducer = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('m1')
)

# These are here only for tests of parentage merging
process.m1 = cms.EDProducer("ThingWithMergeProducer")
process.m2 = cms.EDProducer("ThingWithMergeProducer")
process.m3 = cms.EDProducer("ThingWithMergeProducer")

process.tryNoPut = cms.EDProducer("ThingWithMergeProducer",
    noPut = cms.untracked.bool(True)
)

# This one tests products dropped and then restored by secondary file
# input
process.makeThingToBeDropped = cms.EDProducer("ThingWithMergeProducer")

# This product will be produced in configuration PROD1 and PROD5
# In PROD2 it will be produced and dropped and there will be another
# product whose provenance includes it as a parent. In PROD3 it will
# be produced and dropped and there will not be a product that includes
# it as a parent. In PROD4 it will never be produced at all.
process.makeThingToBeDropped1 = cms.EDProducer("ThingWithMergeProducer")
process.dependsOnThingToBeDropped1 = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('makeThingToBeDropped1')
)

process.test = cms.EDAnalyzer("TestMergeResults",

    verbose = cms.untracked.bool(False),

    expectedParents = cms.untracked.vstring(
        'm1', 'm1', 'm1', 'm1', 'm1',
        'm1', 'm1', 'm1', 'm1', 'm1')
)

process.A = cms.EDProducer("ThingWithMergeProducer")

process.B = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('A')
)

process.C = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('A')
)

process.D = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('B')
)

process.E = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('B', 'C')
)

process.F = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('C')
)

process.G = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('A')
)

process.H = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('G')
)

process.I = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('A')
)

process.J = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('I')
)

process.K = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('I')
)

process.L = cms.EDProducer("ThingWithMergeProducer",
    labelsToGet = cms.untracked.vstring('F')
)

process.testGetterOfProducts = cms.EDFilter("TestGetterOfProducts",
    processName = cms.string('PROD'),
    expectedInputTagLabels = cms.vstring('A','B','C','D','E','F',
                                         'G', 'H', 'I', 'J', 'K', 'L',
                                        'dependsOnThingToBeDropped1',
                                        'm1', 'm2', 'm3',
                                        'makeThingToBeDropped',
                                        'makeThingToBeDropped1',
                                        'thingWithMergeProducer',
                                        'tryNoPut' ),
    expectedLabelsAfterGet = cms.vstring('A','B','C','D','E','F',
                                         'G', 'H', 'I', 'J', 'K', 'L',
                                         'dependsOnThingToBeDropped1',
                                         'm1', 'm2', 'm3',
                                         'makeThingToBeDropped',
                                         'makeThingToBeDropped1',
                                         'thingWithMergeProducer'
                                         
    )
)

process.testGetterOfProductsA = cms.EDAnalyzer("TestGetterOfProductsA",
    processName = cms.string('PROD'),
    branchType = cms.int32(0),
    expectedInputTagLabels = cms.vstring('A','B','C','D','E','F',
                                         'G', 'H', 'I', 'J', 'K', 'L',
                                        'dependsOnThingToBeDropped1',
                                        'm1', 'm2', 'm3',
                                        'makeThingToBeDropped',
                                        'makeThingToBeDropped1',
                                        'thingWithMergeProducer',
                                        'tryNoPut'
    ),
    expectedLabelsAfterGet = cms.vstring('A','B','C','D','E','F',
                                         'G', 'H', 'I', 'J', 'K', 'L',
                                         'dependsOnThingToBeDropped1',
                                         'm1', 'm2', 'm3',
                                         'makeThingToBeDropped',
                                         'makeThingToBeDropped1',
                                         'thingWithMergeProducer'
    ),
    expectedNumberOfThingsWithLabelA = cms.uint32(1)
)

process.testGetterOfProductsARun = cms.EDAnalyzer("TestGetterOfProductsA",
    processName = cms.string('PROD'),
    branchType = cms.int32(2),
    expectedInputTagLabels = cms.vstring('A','A','B','B','C','C','D','D','E','E','F','F',
                                         'G', 'G', 'H', 'H', 'I', 'I', 'J', 'J', 'K', 'K', 'L', 'L',
                                        'dependsOnThingToBeDropped1','dependsOnThingToBeDropped1',
                                        'm1', 'm1', 'm2', 'm2', 'm3','m3',
                                        'makeThingToBeDropped','makeThingToBeDropped',
                                        'makeThingToBeDropped1','makeThingToBeDropped1',
                                        'thingWithMergeProducer','thingWithMergeProducer',
                                        'tryNoPut','tryNoPut'
    ),
    expectedLabelsAfterGet = cms.vstring('A','A','B','B','C','C','D','D','E','E','F','F',
                                         'G', 'G', 'H', 'H', 'I', 'I', 'J', 'J', 'K', 'K', 'L', 'L',
                                         'dependsOnThingToBeDropped1', 'dependsOnThingToBeDropped1',
                                         'm1', 'm1', 'm2', 'm2', 'm3', 'm3',
                                         'makeThingToBeDropped', 'makeThingToBeDropped',
                                         'makeThingToBeDropped1', 'makeThingToBeDropped1',
                                         'thingWithMergeProducer', 'thingWithMergeProducer'
    ),
    expectedNumberOfThingsWithLabelA = cms.uint32(2)
)

process.testGetterOfProductsALumi = cms.EDAnalyzer("TestGetterOfProductsA",
    processName = cms.string('PROD'),
    branchType = cms.int32(1),
    expectedInputTagLabels = cms.vstring('A','A','B','B','C','C','D','D','E','E','F','F',
                                         'G', 'G', 'H', 'H', 'I', 'I', 'J', 'J', 'K', 'K', 'L', 'L',
                                        'dependsOnThingToBeDropped1','dependsOnThingToBeDropped1',
                                        'm1', 'm1', 'm2', 'm2', 'm3','m3',
                                        'makeThingToBeDropped','makeThingToBeDropped',
                                        'makeThingToBeDropped1','makeThingToBeDropped1',
                                        'thingWithMergeProducer','thingWithMergeProducer',
                                        'tryNoPut','tryNoPut'
    ),
    expectedLabelsAfterGet = cms.vstring('A','A','B','B','C','C','D','D','E','E','F','F',
                                         'G', 'G', 'H', 'H', 'I', 'I', 'J', 'J', 'K', 'K', 'L', 'L',
                                         'dependsOnThingToBeDropped1', 'dependsOnThingToBeDropped1',
                                         'm1', 'm1', 'm2', 'm2', 'm3', 'm3',
                                         'makeThingToBeDropped', 'makeThingToBeDropped',
                                         'makeThingToBeDropped1', 'makeThingToBeDropped1',
                                         'thingWithMergeProducer', 'thingWithMergeProducer'
    ),
    expectedNumberOfThingsWithLabelA = cms.uint32(2)
)

process.out = cms.OutputModule("PoolOutputModule",
    fileName = cms.untracked.string('testRunMerge11.root')
)

process.p1 = cms.Path((process.m1 + process.m2 + process.m3) *
                     process.thingWithMergeProducer *
                     process.test *
                     process.tryNoPut *
                     process.makeThingToBeDropped *
                     process.makeThingToBeDropped1 *
                     process.dependsOnThingToBeDropped1)

process.p2 = cms.Path(process.A *
                      process.B *
                      process.C *
                      process.D *
                      process.E *
                      process.F *
                      process.G *
                      process.H *
                      process.I *
                      process.J *
                      process.K *
                      process.L *
                      process.testGetterOfProducts *
                      process.testGetterOfProductsA *
                      process.testGetterOfProductsARun *
                      process.testGetterOfProductsALumi 
)

process.e = cms.EndPath(process.out)