Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-17 09:22:27

0001 #include "MultiLevelTopologyTests.h"
0002 #include "JANA/Engine/JExecutionEngine.h"
0003 #include "JANA/JApplicationFwd.h"
0004 #include "JANA/JException.h"
0005 #include "JANA/Topology/JArrow.h"
0006 #include "JANA/Topology/JTopologyBuilder.h"
0007 #include "JANA/Utils/JEventLevel.h"
0008 
0009 #include <iostream>
0010 #include <map>
0011 
0012 namespace jana {
0013 namespace timeslice_tests {
0014 
0015 
0016 TEST_CASE("TimeslicesTests_FineGrained") {
0017 
0018     JApplication app;
0019     app.SetParameterValue("jana:loglevel", "trace");
0020     app.SetParameterValue("jana:nevents", "5");
0021     app.SetParameterValue("jana:max_inflight_events", "4");
0022 
0023     app.Add(new MyTimesliceSource);
0024     app.Add(new MyTimesliceUnfolder);
0025     app.Add(new MyEventProcessor);
0026     app.Add(new JFactoryGeneratorT<MyProtoClusterFactory>);
0027     app.Add(new JFactoryGeneratorT<MyClusterFactory>);
0028     app.SetTicker(true);
0029 
0030     app.Initialize();
0031     auto ee = app.GetService<JExecutionEngine>();
0032     auto top = app.GetService<JTopologyBuilder>();
0033     enum ArrowId {TS_SRC=0, TS_MAP=1, TS_UNF=2, TS_FLD=3, PH_MAP=4, PH_TAP=5};
0034     JArrow::FireResult result = JArrow::FireResult::NotRunYet;
0035 
0036     result = ee->Fire(TS_SRC, 0);
0037     REQUIRE(result == JArrow::FireResult::KeepGoing);
0038 
0039     REQUIRE(top->arrows[TS_SRC]->get_port(1).queue == top->queues[0]);
0040     REQUIRE(top->pools[0]->GetCapacity() == 4);
0041     REQUIRE(top->pools[0]->GetSize(0) == 3);
0042     REQUIRE(top->queues[0]->GetSize(0) == 1);
0043 
0044     result = ee->Fire(TS_MAP, 0);
0045     REQUIRE(result == JArrow::FireResult::KeepGoing);
0046     REQUIRE(top->queues[0]->GetSize(0) == 0);
0047     REQUIRE(top->queues[1]->GetSize(0) == 1);
0048     
0049     // Parent
0050     result = ee->Fire(TS_UNF, 0);
0051     REQUIRE(result == JArrow::FireResult::KeepGoing);
0052     
0053     // Child
0054     result = ee->Fire(TS_UNF, 0);
0055     REQUIRE(result == JArrow::FireResult::KeepGoing);
0056    
0057     result = ee->Fire(PH_MAP, 0);
0058     REQUIRE(result == JArrow::FireResult::KeepGoing);
0059    
0060     result = ee->Fire(PH_TAP, 0);
0061     REQUIRE(result == JArrow::FireResult::KeepGoing);
0062     
0063     result = ee->Fire(TS_FLD, 0);
0064     REQUIRE(result == JArrow::FireResult::KeepGoing);
0065 
0066     REQUIRE(top->pools[0]->GetSize(0) == 3); // Unfolder still has parent
0067     REQUIRE(top->pools[1]->GetSize(0) == 4); // Child returned to pool
0068     
0069 }
0070 
0071 TEST_CASE("TimeslicesTests") {
0072 
0073     JApplication app;
0074     app.SetParameterValue("jana:loglevel", "trace");
0075     app.SetParameterValue("jana:nevents", "5");
0076     
0077     app.Add(new MyTimesliceSource);
0078     app.Add(new MyTimesliceUnfolder);
0079     app.Add(new MyEventProcessor);
0080     app.Add(new JFactoryGeneratorT<MyProtoClusterFactory>);
0081     app.Add(new JFactoryGeneratorT<MyClusterFactory>);
0082     app.SetTicker(true);
0083     try {
0084         app.Run();
0085     }
0086     catch (JException& e) {
0087         std::cout << e << std::endl;
0088         throw e;
0089     }
0090 }
0091 
0092 
0093 } // namespace timeslice_tests
0094 
0095 
0096 namespace multilevel_source_tests {
0097 
0098 TEST_CASE("MultilevelSource_Trivial") {
0099     // This test case demonstrates the multilevel source behaving just like the plain old JEventSource
0100 
0101     JApplication app;
0102     auto* source = new MyMultilevelSource;
0103     auto* proc = new MyMultilevelProcessor;
0104 
0105     source->SetEventLevels({JEventLevel::PhysicsEvent});
0106     source->data_stream = {{JEventLevel::PhysicsEvent, 4}, {JEventLevel::PhysicsEvent, 5}, {JEventLevel::PhysicsEvent, 6}};
0107     proc->expected_data_stream = {{-1,-1,4}, {-1,-1,5}, {-1,-1,6}};
0108 
0109     app.Add(source);
0110     app.Add(proc);
0111     app.Run();
0112 }
0113 
0114 
0115 
0116 } // namespace multilevel_source_tests
0117 } // namespce jana
0118 
0119 
0120 
0121 
0122 
0123