diff --git a/.gitattributes b/.gitattributes index a8c42bb6d818a6a34bf4c49c9f723755ad02a84f..a658a21dbeb4b7cb2b1aac94a97ca48b42541293 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5034,6 +5034,7 @@ SAS/ResourceAssignment/ResourceAssignmentEditor/test/CMakeLists.txt -text SAS/ResourceAssignment/ResourceAssignmentEditor/test/test_webservice.py -text SAS/ResourceAssignment/ResourceAssignmentEditor/test/test_webservice.run -text SAS/ResourceAssignment/ResourceAssignmentEditor/test/test_webservice.sh -text +SAS/ResourceAssignment/Services/test/tJobsToSchedule.in_correlator -text SAS/ResourceAssignment/Services/test/tJobsToSchedule.in_preprocessing -text SAS/ResourceAssignment/Services/test/tJobsToSchedule.sh eol=lf SAS/Scheduler/src/.default_settings.set -text diff --git a/SAS/ResourceAssignment/Services/test/tJobsToSchedule.in_correlator b/SAS/ResourceAssignment/Services/test/tJobsToSchedule.in_correlator new file mode 100644 index 0000000000000000000000000000000000000000..065b4a4adcfe512ed30602d7f4a5080e579e40c0 --- /dev/null +++ b/SAS/ResourceAssignment/Services/test/tJobsToSchedule.in_correlator @@ -0,0 +1,356 @@ +ApplCtrl.application=CorrAppl +ApplCtrl.processes=[CorrProc] +ApplCtrl.resultfile=/opt/lofar/var/run/ACC_CCU001:OnlineControl[0]{427282}_CorrAppl_result.param +Cobalt.BeamFormer.CoherentStokes.nrChannelsPerSubband=1 +Cobalt.BeamFormer.CoherentStokes.subbandsPerFile=512 +Cobalt.BeamFormer.CoherentStokes.timeIntegrationFactor=1 +Cobalt.BeamFormer.CoherentStokes.which=I +Cobalt.BeamFormer.IncoherentStokes.nrChannelsPerSubband=1 +Cobalt.BeamFormer.IncoherentStokes.subbandsPerFile=512 +Cobalt.BeamFormer.IncoherentStokes.timeIntegrationFactor=1 +Cobalt.BeamFormer.IncoherentStokes.which=I +Cobalt.BeamFormer.coherentDedisperseChannels=false +Cobalt.BeamFormer.flysEye=false +Cobalt.Correlator.integrationTime=1.00139 +Cobalt.Correlator.nrBlocksPerIntegration=1 +Cobalt.Correlator.nrChannelsPerSubband=64 +Cobalt.Correlator.nrIntegrationsPerBlock=1 +Cobalt.blockSize=195584 +Cobalt.correctBandPass=true +Cobalt.correctClocks=true +Cobalt.delayCompensation=true +Cobalt.realTime=true +CorrAppl.CorrProc._executable=CN_Processing +CorrAppl.CorrProc._hostname=cbmmaster +CorrAppl.CorrProc._nodes=[] +CorrAppl.CorrProc._startstopType=bgl +CorrAppl.CorrProc.workingdir=/opt/lofar/bin/ +CorrAppl._hostname=cbmmaster +CorrAppl.extraInfo=["PIC","Cobalt"] +CorrAppl.procesOrder=[] +CorrAppl.processes=["CorrProc"] +Observation.AnaBeam[0].angle1=3.71468 +Observation.AnaBeam[0].angle2=0.91111 +Observation.AnaBeam[0].directionType=J2000 +Observation.AnaBeam[0].duration=0 +Observation.AnaBeam[0].rank=1 +Observation.AnaBeam[0].startTime=0 +Observation.AnaBeam[0].target= +Observation.Beam[0].TiedArrayBeam.angle1=0 +Observation.Beam[0].TiedArrayBeam.angle2=0 +Observation.Beam[0].TiedArrayBeam.coherent=true +Observation.Beam[0].TiedArrayBeam.directionType=J2000 +Observation.Beam[0].TiedArrayBeam.dispersionMeasure=0 +Observation.Beam[0].angle1=3.71468 +Observation.Beam[0].angle2=0.91111 +Observation.Beam[0].directionType=J2000 +Observation.Beam[0].duration=0 +Observation.Beam[0].momID=0 +Observation.Beam[0].nrTabRings=0 +Observation.Beam[0].nrTiedArrayBeams=0 +Observation.Beam[0].startTime=0 +Observation.Beam[0].subbandList=[52..255] +Observation.Beam[0].tabRingSize=0 +Observation.Beam[0].target=3C 295 +Observation.Campaign.CO_I="" +Observation.Campaign.PI="Pizzo, Dr. Roberto Francesco" +Observation.Campaign.contact="Pizzo, Dr. Roberto Francesco" +Observation.Campaign.name="2015LOFAROBS_new" +Observation.Campaign.title="2015LOFAROBS_new" +Observation.DataProducts.Input_CoherentStokes.dirmask= +Observation.DataProducts.Input_CoherentStokes.enabled=false +Observation.DataProducts.Input_CoherentStokes.filenames=[] +Observation.DataProducts.Input_CoherentStokes.identifications=[] +Observation.DataProducts.Input_CoherentStokes.locations=[] +Observation.DataProducts.Input_CoherentStokes.mountpoints=[] +Observation.DataProducts.Input_CoherentStokes.namemask= +Observation.DataProducts.Input_CoherentStokes.skip=[] +Observation.DataProducts.Input_Correlated.dirmask= +Observation.DataProducts.Input_Correlated.enabled=false +Observation.DataProducts.Input_Correlated.filenames=[] +Observation.DataProducts.Input_Correlated.identifications=[] +Observation.DataProducts.Input_Correlated.locations=[] +Observation.DataProducts.Input_Correlated.mountpoints=[] +Observation.DataProducts.Input_Correlated.namemask= +Observation.DataProducts.Input_Correlated.skip=[] +Observation.DataProducts.Input_IncoherentStokes.dirmask= +Observation.DataProducts.Input_IncoherentStokes.enabled=false +Observation.DataProducts.Input_IncoherentStokes.filenames=[] +Observation.DataProducts.Input_IncoherentStokes.identifications=[] +Observation.DataProducts.Input_IncoherentStokes.locations=[] +Observation.DataProducts.Input_IncoherentStokes.mountpoints=[] +Observation.DataProducts.Input_IncoherentStokes.namemask= +Observation.DataProducts.Input_IncoherentStokes.skip=[] +Observation.DataProducts.Input_InstrumentModel.dirmask= +Observation.DataProducts.Input_InstrumentModel.enabled=false +Observation.DataProducts.Input_InstrumentModel.filenames=[] +Observation.DataProducts.Input_InstrumentModel.identifications=[] +Observation.DataProducts.Input_InstrumentModel.locations=[] +Observation.DataProducts.Input_InstrumentModel.mountpoints=[] +Observation.DataProducts.Input_InstrumentModel.namemask= +Observation.DataProducts.Input_InstrumentModel.skip=[] +Observation.DataProducts.Input_SkyImage.dirmask= +Observation.DataProducts.Input_SkyImage.enabled=false +Observation.DataProducts.Input_SkyImage.filenames=[] +Observation.DataProducts.Input_SkyImage.identifications=[] +Observation.DataProducts.Input_SkyImage.locations=[] +Observation.DataProducts.Input_SkyImage.mountpoints=[] +Observation.DataProducts.Input_SkyImage.namemask= +Observation.DataProducts.Input_SkyImage.skip=[] +Observation.DataProducts.Output_CoherentStokes.archived=false +Observation.DataProducts.Output_CoherentStokes.deleted=false +Observation.DataProducts.Output_CoherentStokes.dirmask= +Observation.DataProducts.Output_CoherentStokes.enabled=false +Observation.DataProducts.Output_CoherentStokes.filenames=[] +Observation.DataProducts.Output_CoherentStokes.identifications=[] +Observation.DataProducts.Output_CoherentStokes.locations=[] +Observation.DataProducts.Output_CoherentStokes.mountpoints=[] +Observation.DataProducts.Output_CoherentStokes.namemask= +Observation.DataProducts.Output_CoherentStokes.percentageWritten=[] +Observation.DataProducts.Output_CoherentStokes.retentiontime=14 +Observation.DataProducts.Output_CoherentStokes.skip=[] +Observation.DataProducts.Output_Correlated.archived=false +Observation.DataProducts.Output_Correlated.deleted=false +Observation.DataProducts.Output_Correlated.dirmask=L${OBSID} +Observation.DataProducts.Output_Correlated.enabled=true +Observation.DataProducts.Output_Correlated.filenames=[L427282_SAP000_SB000_uv.MS,L427282_SAP000_SB001_uv.MS,L427282_SAP000_SB002_uv.MS,L427282_SAP000_SB003_uv.MS,L427282_SAP000_SB004_uv.MS,L427282_SAP000_SB005_uv.MS,L427282_SAP000_SB006_uv.MS,L427282_SAP000_SB007_uv.MS,L427282_SAP000_SB008_uv.MS,L427282_SAP000_SB009_uv.MS,L427282_SAP000_SB010_uv.MS,L427282_SAP000_SB011_uv.MS,L427282_SAP000_SB012_uv.MS,L427282_SAP000_SB013_uv.MS,L427282_SAP000_SB014_uv.MS,L427282_SAP000_SB015_uv.MS,L427282_SAP000_SB016_uv.MS,L427282_SAP000_SB017_uv.MS,L427282_SAP000_SB018_uv.MS,L427282_SAP000_SB019_uv.MS,L427282_SAP000_SB020_uv.MS,L427282_SAP000_SB021_uv.MS,L427282_SAP000_SB022_uv.MS,L427282_SAP000_SB023_uv.MS,L427282_SAP000_SB024_uv.MS,L427282_SAP000_SB025_uv.MS,L427282_SAP000_SB026_uv.MS,L427282_SAP000_SB027_uv.MS,L427282_SAP000_SB028_uv.MS,L427282_SAP000_SB029_uv.MS,L427282_SAP000_SB030_uv.MS,L427282_SAP000_SB031_uv.MS,L427282_SAP000_SB032_uv.MS,L427282_SAP000_SB033_uv.MS,L427282_SAP000_SB034_uv.MS,L427282_SAP000_SB035_uv.MS,L427282_SAP000_SB036_uv.MS,L427282_SAP000_SB037_uv.MS,L427282_SAP000_SB038_uv.MS,L427282_SAP000_SB039_uv.MS,L427282_SAP000_SB040_uv.MS,L427282_SAP000_SB041_uv.MS,L427282_SAP000_SB042_uv.MS,L427282_SAP000_SB043_uv.MS,L427282_SAP000_SB044_uv.MS,L427282_SAP000_SB045_uv.MS,L427282_SAP000_SB046_uv.MS,L427282_SAP000_SB047_uv.MS,L427282_SAP000_SB048_uv.MS,L427282_SAP000_SB049_uv.MS,L427282_SAP000_SB050_uv.MS,L427282_SAP000_SB051_uv.MS,L427282_SAP000_SB052_uv.MS,L427282_SAP000_SB053_uv.MS,L427282_SAP000_SB054_uv.MS,L427282_SAP000_SB055_uv.MS,L427282_SAP000_SB056_uv.MS,L427282_SAP000_SB057_uv.MS,L427282_SAP000_SB058_uv.MS,L427282_SAP000_SB059_uv.MS,L427282_SAP000_SB060_uv.MS,L427282_SAP000_SB061_uv.MS,L427282_SAP000_SB062_uv.MS,L427282_SAP000_SB063_uv.MS,L427282_SAP000_SB064_uv.MS,L427282_SAP000_SB065_uv.MS,L427282_SAP000_SB066_uv.MS,L427282_SAP000_SB067_uv.MS,L427282_SAP000_SB068_uv.MS,L427282_SAP000_SB069_uv.MS,L427282_SAP000_SB070_uv.MS,L427282_SAP000_SB071_uv.MS,L427282_SAP000_SB072_uv.MS,L427282_SAP000_SB073_uv.MS,L427282_SAP000_SB074_uv.MS,L427282_SAP000_SB075_uv.MS,L427282_SAP000_SB076_uv.MS,L427282_SAP000_SB077_uv.MS,L427282_SAP000_SB078_uv.MS,L427282_SAP000_SB079_uv.MS,L427282_SAP000_SB080_uv.MS,L427282_SAP000_SB081_uv.MS,L427282_SAP000_SB082_uv.MS,L427282_SAP000_SB083_uv.MS,L427282_SAP000_SB084_uv.MS,L427282_SAP000_SB085_uv.MS,L427282_SAP000_SB086_uv.MS,L427282_SAP000_SB087_uv.MS,L427282_SAP000_SB088_uv.MS,L427282_SAP000_SB089_uv.MS,L427282_SAP000_SB090_uv.MS,L427282_SAP000_SB091_uv.MS,L427282_SAP000_SB092_uv.MS,L427282_SAP000_SB093_uv.MS,L427282_SAP000_SB094_uv.MS,L427282_SAP000_SB095_uv.MS,L427282_SAP000_SB096_uv.MS,L427282_SAP000_SB097_uv.MS,L427282_SAP000_SB098_uv.MS,L427282_SAP000_SB099_uv.MS,L427282_SAP000_SB100_uv.MS,L427282_SAP000_SB101_uv.MS,L427282_SAP000_SB102_uv.MS,L427282_SAP000_SB103_uv.MS,L427282_SAP000_SB104_uv.MS,L427282_SAP000_SB105_uv.MS,L427282_SAP000_SB106_uv.MS,L427282_SAP000_SB107_uv.MS,L427282_SAP000_SB108_uv.MS,L427282_SAP000_SB109_uv.MS,L427282_SAP000_SB110_uv.MS,L427282_SAP000_SB111_uv.MS,L427282_SAP000_SB112_uv.MS,L427282_SAP000_SB113_uv.MS,L427282_SAP000_SB114_uv.MS,L427282_SAP000_SB115_uv.MS,L427282_SAP000_SB116_uv.MS,L427282_SAP000_SB117_uv.MS,L427282_SAP000_SB118_uv.MS,L427282_SAP000_SB119_uv.MS,L427282_SAP000_SB120_uv.MS,L427282_SAP000_SB121_uv.MS,L427282_SAP000_SB122_uv.MS,L427282_SAP000_SB123_uv.MS,L427282_SAP000_SB124_uv.MS,L427282_SAP000_SB125_uv.MS,L427282_SAP000_SB126_uv.MS,L427282_SAP000_SB127_uv.MS,L427282_SAP000_SB128_uv.MS,L427282_SAP000_SB129_uv.MS,L427282_SAP000_SB130_uv.MS,L427282_SAP000_SB131_uv.MS,L427282_SAP000_SB132_uv.MS,L427282_SAP000_SB133_uv.MS,L427282_SAP000_SB134_uv.MS,L427282_SAP000_SB135_uv.MS,L427282_SAP000_SB136_uv.MS,L427282_SAP000_SB137_uv.MS,L427282_SAP000_SB138_uv.MS,L427282_SAP000_SB139_uv.MS,L427282_SAP000_SB140_uv.MS,L427282_SAP000_SB141_uv.MS,L427282_SAP000_SB142_uv.MS,L427282_SAP000_SB143_uv.MS,L427282_SAP000_SB144_uv.MS,L427282_SAP000_SB145_uv.MS,L427282_SAP000_SB146_uv.MS,L427282_SAP000_SB147_uv.MS,L427282_SAP000_SB148_uv.MS,L427282_SAP000_SB149_uv.MS,L427282_SAP000_SB150_uv.MS,L427282_SAP000_SB151_uv.MS,L427282_SAP000_SB152_uv.MS,L427282_SAP000_SB153_uv.MS,L427282_SAP000_SB154_uv.MS,L427282_SAP000_SB155_uv.MS,L427282_SAP000_SB156_uv.MS,L427282_SAP000_SB157_uv.MS,L427282_SAP000_SB158_uv.MS,L427282_SAP000_SB159_uv.MS,L427282_SAP000_SB160_uv.MS,L427282_SAP000_SB161_uv.MS,L427282_SAP000_SB162_uv.MS,L427282_SAP000_SB163_uv.MS,L427282_SAP000_SB164_uv.MS,L427282_SAP000_SB165_uv.MS,L427282_SAP000_SB166_uv.MS,L427282_SAP000_SB167_uv.MS,L427282_SAP000_SB168_uv.MS,L427282_SAP000_SB169_uv.MS,L427282_SAP000_SB170_uv.MS,L427282_SAP000_SB171_uv.MS,L427282_SAP000_SB172_uv.MS,L427282_SAP000_SB173_uv.MS,L427282_SAP000_SB174_uv.MS,L427282_SAP000_SB175_uv.MS,L427282_SAP000_SB176_uv.MS,L427282_SAP000_SB177_uv.MS,L427282_SAP000_SB178_uv.MS,L427282_SAP000_SB179_uv.MS,L427282_SAP000_SB180_uv.MS,L427282_SAP000_SB181_uv.MS,L427282_SAP000_SB182_uv.MS,L427282_SAP000_SB183_uv.MS,L427282_SAP000_SB184_uv.MS,L427282_SAP000_SB185_uv.MS,L427282_SAP000_SB186_uv.MS,L427282_SAP000_SB187_uv.MS,L427282_SAP000_SB188_uv.MS,L427282_SAP000_SB189_uv.MS,L427282_SAP000_SB190_uv.MS,L427282_SAP000_SB191_uv.MS,L427282_SAP000_SB192_uv.MS,L427282_SAP000_SB193_uv.MS,L427282_SAP000_SB194_uv.MS,L427282_SAP000_SB195_uv.MS,L427282_SAP000_SB196_uv.MS,L427282_SAP000_SB197_uv.MS,L427282_SAP000_SB198_uv.MS,L427282_SAP000_SB199_uv.MS,L427282_SAP000_SB200_uv.MS,L427282_SAP000_SB201_uv.MS,L427282_SAP000_SB202_uv.MS,L427282_SAP000_SB203_uv.MS] +Observation.DataProducts.Output_Correlated.identifications=[] +Observation.DataProducts.Output_Correlated.locations=[locus001:/data/L427282/,locus004:/data/L427282/,locus005:/data/L427282/,locus006:/data/L427282/,locus007:/data/L427282/,locus008:/data/L427282/,locus009:/data/L427282/,locus010:/data/L427282/,locus011:/data/L427282/,locus012:/data/L427282/,locus014:/data/L427282/,locus016:/data/L427282/,locus017:/data/L427282/,locus018:/data/L427282/,locus020:/data/L427282/,locus021:/data/L427282/,locus023:/data/L427282/,locus025:/data/L427282/,locus026:/data/L427282/,locus027:/data/L427282/,locus028:/data/L427282/,locus029:/data/L427282/,locus031:/data/L427282/,locus032:/data/L427282/,locus034:/data/L427282/,locus035:/data/L427282/,locus036:/data/L427282/,locus037:/data/L427282/,locus038:/data/L427282/,locus039:/data/L427282/,locus040:/data/L427282/,locus041:/data/L427282/,locus042:/data/L427282/,locus043:/data/L427282/,locus044:/data/L427282/,locus045:/data/L427282/,locus046:/data/L427282/,locus047:/data/L427282/,locus048:/data/L427282/,locus049:/data/L427282/,locus050:/data/L427282/,locus051:/data/L427282/,locus052:/data/L427282/,locus053:/data/L427282/,locus054:/data/L427282/,locus055:/data/L427282/,locus056:/data/L427282/,locus057:/data/L427282/,locus058:/data/L427282/,locus060:/data/L427282/,locus061:/data/L427282/,locus062:/data/L427282/,locus063:/data/L427282/,locus064:/data/L427282/,locus065:/data/L427282/,locus066:/data/L427282/,locus067:/data/L427282/,locus068:/data/L427282/,locus069:/data/L427282/,locus070:/data/L427282/,locus071:/data/L427282/,locus072:/data/L427282/,locus073:/data/L427282/,locus074:/data/L427282/,locus075:/data/L427282/,locus076:/data/L427282/,locus077:/data/L427282/,locus078:/data/L427282/,locus079:/data/L427282/,locus080:/data/L427282/,locus081:/data/L427282/,locus082:/data/L427282/,locus084:/data/L427282/,locus085:/data/L427282/,locus086:/data/L427282/,locus087:/data/L427282/,locus088:/data/L427282/,locus089:/data/L427282/,locus090:/data/L427282/,locus091:/data/L427282/,locus001:/data/L427282/,locus004:/data/L427282/,locus005:/data/L427282/,locus006:/data/L427282/,locus007:/data/L427282/,locus008:/data/L427282/,locus009:/data/L427282/,locus010:/data/L427282/,locus011:/data/L427282/,locus012:/data/L427282/,locus014:/data/L427282/,locus016:/data/L427282/,locus017:/data/L427282/,locus018:/data/L427282/,locus020:/data/L427282/,locus021:/data/L427282/,locus023:/data/L427282/,locus025:/data/L427282/,locus026:/data/L427282/,locus027:/data/L427282/,locus028:/data/L427282/,locus029:/data/L427282/,locus031:/data/L427282/,locus032:/data/L427282/,locus034:/data/L427282/,locus035:/data/L427282/,locus036:/data/L427282/,locus037:/data/L427282/,locus038:/data/L427282/,locus039:/data/L427282/,locus040:/data/L427282/,locus041:/data/L427282/,locus042:/data/L427282/,locus043:/data/L427282/,locus044:/data/L427282/,locus045:/data/L427282/,locus046:/data/L427282/,locus047:/data/L427282/,locus048:/data/L427282/,locus049:/data/L427282/,locus050:/data/L427282/,locus051:/data/L427282/,locus052:/data/L427282/,locus053:/data/L427282/,locus054:/data/L427282/,locus055:/data/L427282/,locus056:/data/L427282/,locus057:/data/L427282/,locus058:/data/L427282/,locus060:/data/L427282/,locus061:/data/L427282/,locus062:/data/L427282/,locus063:/data/L427282/,locus064:/data/L427282/,locus065:/data/L427282/,locus066:/data/L427282/,locus067:/data/L427282/,locus068:/data/L427282/,locus069:/data/L427282/,locus070:/data/L427282/,locus071:/data/L427282/,locus072:/data/L427282/,locus073:/data/L427282/,locus074:/data/L427282/,locus075:/data/L427282/,locus076:/data/L427282/,locus077:/data/L427282/,locus078:/data/L427282/,locus079:/data/L427282/,locus080:/data/L427282/,locus081:/data/L427282/,locus082:/data/L427282/,locus084:/data/L427282/,locus085:/data/L427282/,locus086:/data/L427282/,locus087:/data/L427282/,locus088:/data/L427282/,locus089:/data/L427282/,locus090:/data/L427282/,locus091:/data/L427282/,locus001:/data/L427282/,locus004:/data/L427282/,locus005:/data/L427282/,locus006:/data/L427282/,locus007:/data/L427282/,locus008:/data/L427282/,locus009:/data/L427282/,locus010:/data/L427282/,locus011:/data/L427282/,locus012:/data/L427282/,locus014:/data/L427282/,locus016:/data/L427282/,locus017:/data/L427282/,locus018:/data/L427282/,locus020:/data/L427282/,locus021:/data/L427282/,locus023:/data/L427282/,locus025:/data/L427282/,locus026:/data/L427282/,locus027:/data/L427282/,locus028:/data/L427282/,locus029:/data/L427282/,locus031:/data/L427282/,locus032:/data/L427282/,locus034:/data/L427282/,locus035:/data/L427282/,locus036:/data/L427282/,locus037:/data/L427282/,locus038:/data/L427282/,locus039:/data/L427282/,locus040:/data/L427282/,locus041:/data/L427282/,locus042:/data/L427282/,locus043:/data/L427282/,locus044:/data/L427282/,locus045:/data/L427282/,locus046:/data/L427282/,locus047:/data/L427282/,locus048:/data/L427282/,locus049:/data/L427282/,locus050:/data/L427282/,locus051:/data/L427282/,locus052:/data/L427282/,locus053:/data/L427282/] +Observation.DataProducts.Output_Correlated.mountpoints=[locus001:/data,locus004:/data,locus005:/data,locus006:/data,locus007:/data,locus008:/data,locus009:/data,locus010:/data,locus011:/data,locus012:/data,locus014:/data,locus016:/data,locus017:/data,locus018:/data,locus020:/data,locus021:/data,locus023:/data,locus025:/data,locus026:/data,locus027:/data,locus028:/data,locus029:/data,locus031:/data,locus032:/data,locus034:/data,locus035:/data,locus036:/data,locus037:/data,locus038:/data,locus039:/data,locus040:/data,locus041:/data,locus042:/data,locus043:/data,locus044:/data,locus045:/data,locus046:/data,locus047:/data,locus048:/data,locus049:/data,locus050:/data,locus051:/data,locus052:/data,locus053:/data,locus054:/data,locus055:/data,locus056:/data,locus057:/data,locus058:/data,locus060:/data,locus061:/data,locus062:/data,locus063:/data,locus064:/data,locus065:/data,locus066:/data,locus067:/data,locus068:/data,locus069:/data,locus070:/data,locus071:/data,locus072:/data,locus073:/data,locus074:/data,locus075:/data,locus076:/data,locus077:/data,locus078:/data,locus079:/data,locus080:/data,locus081:/data,locus082:/data,locus084:/data,locus085:/data,locus086:/data,locus087:/data,locus088:/data,locus089:/data,locus090:/data,locus091:/data] +Observation.DataProducts.Output_Correlated.namemask=L${OBSID}_SAP${SAP}_SB${SUBBAND}_uv.MS +Observation.DataProducts.Output_Correlated.percentageWritten=[] +Observation.DataProducts.Output_Correlated.retentiontime=14 +Observation.DataProducts.Output_Correlated.skip=[] +Observation.DataProducts.Output_IncoherentStokes.archived=false +Observation.DataProducts.Output_IncoherentStokes.deleted=false +Observation.DataProducts.Output_IncoherentStokes.dirmask= +Observation.DataProducts.Output_IncoherentStokes.enabled=false +Observation.DataProducts.Output_IncoherentStokes.filenames=[] +Observation.DataProducts.Output_IncoherentStokes.identifications=[] +Observation.DataProducts.Output_IncoherentStokes.locations=[] +Observation.DataProducts.Output_IncoherentStokes.mountpoints=[] +Observation.DataProducts.Output_IncoherentStokes.namemask= +Observation.DataProducts.Output_IncoherentStokes.percentageWritten=[] +Observation.DataProducts.Output_IncoherentStokes.retentiontime=14 +Observation.DataProducts.Output_IncoherentStokes.skip=[] +Observation.DataProducts.Output_InstrumentModel.archived=false +Observation.DataProducts.Output_InstrumentModel.deleted=false +Observation.DataProducts.Output_InstrumentModel.dirmask= +Observation.DataProducts.Output_InstrumentModel.enabled=false +Observation.DataProducts.Output_InstrumentModel.filenames=[] +Observation.DataProducts.Output_InstrumentModel.identifications=[] +Observation.DataProducts.Output_InstrumentModel.locations=[] +Observation.DataProducts.Output_InstrumentModel.mountpoints=[] +Observation.DataProducts.Output_InstrumentModel.namemask= +Observation.DataProducts.Output_InstrumentModel.percentageWritten=[] +Observation.DataProducts.Output_InstrumentModel.retentiontime=14 +Observation.DataProducts.Output_InstrumentModel.skip=[] +Observation.DataProducts.Output_Pulsar.archived=false +Observation.DataProducts.Output_Pulsar.deleted=false +Observation.DataProducts.Output_Pulsar.dirmask= +Observation.DataProducts.Output_Pulsar.enabled=false +Observation.DataProducts.Output_Pulsar.filenames=[] +Observation.DataProducts.Output_Pulsar.identifications=[] +Observation.DataProducts.Output_Pulsar.locations=[] +Observation.DataProducts.Output_Pulsar.mountpoints=[] +Observation.DataProducts.Output_Pulsar.namemask= +Observation.DataProducts.Output_Pulsar.percentageWritten=[] +Observation.DataProducts.Output_Pulsar.retentiontime=14 +Observation.DataProducts.Output_Pulsar.skip=[] +Observation.DataProducts.Output_SkyImage.archived=false +Observation.DataProducts.Output_SkyImage.deleted=false +Observation.DataProducts.Output_SkyImage.dirmask= +Observation.DataProducts.Output_SkyImage.enabled=false +Observation.DataProducts.Output_SkyImage.filenames=[] +Observation.DataProducts.Output_SkyImage.identifications=[] +Observation.DataProducts.Output_SkyImage.locations=[] +Observation.DataProducts.Output_SkyImage.mountpoints=[] +Observation.DataProducts.Output_SkyImage.namemask= +Observation.DataProducts.Output_SkyImage.percentageWritten=[] +Observation.DataProducts.Output_SkyImage.retentiontime=14 +Observation.DataProducts.Output_SkyImage.skip=[] +Observation.Dataslots.CS001HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS001HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS002HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS002HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS003HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS003HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS004HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS004HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS005HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS005HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS006HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS006HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS007HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS007HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS011HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS011HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS013HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS013HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS017HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS017HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS021HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS021HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS024HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS024HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS026HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS026HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS028HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS028HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS030HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS030HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS031HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS031HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS032HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS032HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS101HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS101HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS103HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS103HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS201HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS201HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS301HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS301HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS302HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS302HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS401HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS401HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.CS501HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.CS501HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.DataslotInfo.DataslotList=[] +Observation.Dataslots.DataslotInfo.RSPBoardList=[] +Observation.Dataslots.RS106HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS106HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS205HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS205HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS208HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS208HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS210HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS210HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS305HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS305HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS306HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS306HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS307HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS307HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS310HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS310HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS406HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS406HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS407HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS407HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS409HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS409HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS503HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS503HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.Dataslots.RS508HBA.DataslotList=[0..60,0..60,0..60,0..20] +Observation.Dataslots.RS508HBA.RSPBoardList=[61*0,61*1,61*2,21*3] +Observation.ObsID=427282 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.CoherentStokes.nrChannelsPerSubband=1 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.CoherentStokes.subbandsPerFile=512 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.CoherentStokes.timeIntegrationFactor=1 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.CoherentStokes.which=I +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.IncoherentStokes.nrChannelsPerSubband=1 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.IncoherentStokes.subbandsPerFile=512 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.IncoherentStokes.timeIntegrationFactor=1 +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.IncoherentStokes.which=I +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.coherentDedisperseChannels=false +Observation.ObservationControl.OnlineControl.Cobalt.BeamFormer.flysEye=false +Observation.ObservationControl.OnlineControl.Cobalt.Correlator.integrationTime=1.00139 +Observation.ObservationControl.OnlineControl.Cobalt.Correlator.nrBlocksPerIntegration=1 +Observation.ObservationControl.OnlineControl.Cobalt.Correlator.nrChannelsPerSubband=64 +Observation.ObservationControl.OnlineControl.Cobalt.Correlator.nrIntegrationsPerBlock=1 +Observation.ObservationControl.OnlineControl.Cobalt.blockSize=195584 +Observation.ObservationControl.OnlineControl.Cobalt.correctBandPass=true +Observation.ObservationControl.OnlineControl.Cobalt.correctClocks=true +Observation.ObservationControl.OnlineControl.Cobalt.delayCompensation=true +Observation.ObservationControl.OnlineControl.Cobalt.realTime=true +Observation.ObservationControl.OnlineControl.CorrAppl.CorrProc._executable=CN_Processing +Observation.ObservationControl.OnlineControl.CorrAppl.CorrProc._hostname=cbmmaster +Observation.ObservationControl.OnlineControl.CorrAppl.CorrProc._nodes=[] +Observation.ObservationControl.OnlineControl.CorrAppl.CorrProc._startstopType=bgl +Observation.ObservationControl.OnlineControl.CorrAppl.CorrProc.workingdir=/opt/lofar/bin/ +Observation.ObservationControl.OnlineControl.CorrAppl._hostname=cbmmaster +Observation.ObservationControl.OnlineControl.CorrAppl.extraInfo=["PIC","Cobalt"] +Observation.ObservationControl.OnlineControl.CorrAppl.procesOrder=[] +Observation.ObservationControl.OnlineControl.CorrAppl.processes=["CorrProc"] +Observation.ObservationControl.OnlineControl._hostname=CCU001 +Observation.ObservationControl.OnlineControl.applOrder=["CorrAppl"] +Observation.ObservationControl.OnlineControl.applications=["CorrAppl"] +Observation.ObservationControl.OnlineControl.inspectionHost=lhn001.cep2.lofar +Observation.ObservationControl.OnlineControl.inspectionProgram=/opt/cep/pyautoplot/bin/launch-msplots.sh +Observation.ObservationControl.StationControl.TBBControl.CoincidenceTime=0 +Observation.ObservationControl.StationControl.TBBControl.DoDirectionFit=none +Observation.ObservationControl.StationControl.TBBControl.MaxFitVariance=0 +Observation.ObservationControl.StationControl.TBBControl.MinElevation=0 +Observation.ObservationControl.StationControl.TBBControl.NoCoincChann=0 +Observation.ObservationControl.StationControl.TBBControl.ParamExtension= +Observation.ObservationControl.StationControl._hostname=[CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501,RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508] +Observation.ObservationControl.StationControl.aartfaacPiggybackAllowed=true +Observation.ObservationControl.StationControl.tbbPiggybackAllowed=true +Observation.ObservationControl._hostname=MCU001 +Observation.ObservationControl.heartbeatInterval=10 +Observation.Scheduler.contactEmail= +Observation.Scheduler.contactName=Pizzo, Dr. Roberto Francesco +Observation.Scheduler.contactPhone= +Observation.Scheduler.firstPossibleDay=5864 +Observation.Scheduler.fixedDay=false +Observation.Scheduler.fixedTime=false +Observation.Scheduler.lastPossibleDay=6049 +Observation.Scheduler.late= +Observation.Scheduler.nightTimeWeightFactor=4 +Observation.Scheduler.predMaxTimeDif=0000:00:00 +Observation.Scheduler.predMinTimeDif=0000:00:00 +Observation.Scheduler.predecessors=[] +Observation.Scheduler.priority=0 +Observation.Scheduler.reason= +Observation.Scheduler.referenceFrame=J2000 +Observation.Scheduler.reservation=0 +Observation.Scheduler.storageSelectionMode=1 +Observation.Scheduler.taskDuration=120 +Observation.Scheduler.taskID=532 +Observation.Scheduler.taskName=(copy of) (copy of) XC HBA_JOINED +Observation.Scheduler.taskType=0 +Observation.Scheduler.windowMaximumTime=23:59:59 +Observation.Scheduler.windowMinimumTime=00:00:00 +Observation.TBB.TBBsetting.RCUs=[] +Observation.TBB.TBBsetting.baselevel=127 +Observation.TBB.TBBsetting.filter=0 +Observation.TBB.TBBsetting.filter0_coeff0=0 +Observation.TBB.TBBsetting.filter0_coeff1=0 +Observation.TBB.TBBsetting.filter0_coeff2=0 +Observation.TBB.TBBsetting.filter0_coeff3=0 +Observation.TBB.TBBsetting.filter1_coeff0=0 +Observation.TBB.TBBsetting.filter1_coeff1=0 +Observation.TBB.TBBsetting.filter1_coeff2=0 +Observation.TBB.TBBsetting.filter1_coeff3=0 +Observation.TBB.TBBsetting.operatingMode=1 +Observation.TBB.TBBsetting.startlevel=7 +Observation.TBB.TBBsetting.stoplevel=7 +Observation.TBB.TBBsetting.subbandList=[] +Observation.TBB.TBBsetting.triggerMode=1 +Observation.TBB.TBBsetting.window=1M +Observation.VirtualInstrument.minimalNrStations=1 +Observation.VirtualInstrument.stationList=[CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501,RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508] +Observation.VirtualInstrument.stationSet= +Observation.antennaArray=HBA +Observation.antennaSet=HBA_JOINED +Observation.bandFilter=HBA_210_250 +Observation.claimPeriod=35 +Observation.clockMode=<<Clock200 +Observation.momID=0 +Observation.nrAnaBeams=1 +Observation.nrBeams=1 +Observation.nrBitsPerSample=16 +Observation.nrTBBSettings=0 +Observation.originID=254020 +Observation.otdbID=427282 +Observation.preparePeriod=20 +Observation.processSubtype=Beam Observation +Observation.processType=Observation +Observation.sampleClock=200 +Observation.startTime=2016-01-21 14:30:00 +Observation.stopTime=2016-01-21 14:32:00 +Observation.strategy=default +Observation.topologyID= +_DPname=LOFAR_ObsSW_TempObs0054 diff --git a/SAS/ResourceAssignment/Services/test/tJobsToSchedule.py b/SAS/ResourceAssignment/Services/test/tJobsToSchedule.py index eba12c9f22ff4426fccb04393d7ad227fcc0e48d..6331ea9bde02d2e5c77c8ff1ceec6266a384a661 100644 --- a/SAS/ResourceAssignment/Services/test/tJobsToSchedule.py +++ b/SAS/ResourceAssignment/Services/test/tJobsToSchedule.py @@ -49,6 +49,12 @@ def parset_as_dict(filename): class TestResourceIndicators(unittest.TestCase): + """ + The spec for the resource indicators is a draft at this point, + and the output is quite extensive (many parset keys), so + verification of the output is pending. + """ + def test_preprocessing_pipeline(self): parset = parset_as_dict("tJobsToSchedule.in_preprocessing") r = resourceIndicatorsFromParset(parset) @@ -59,19 +65,20 @@ class TestResourceIndicators(unittest.TestCase): class TestService(unittest.TestCase): - def test(self): - """ - Request the resources for a simulated obsid 1, with the following predecessor tree: + def setUp(self): + # Create a random bus + self.busname = "%s-%s" % (sys.argv[0], str(uuid.uuid4())[:8]) + self.bus = ToBus(self.busname + '; { create: "always", delete: "always", node: { type: "topic" }}') + self.bus.open() - 1 requires 2, 3 - 2 requires 3 - 3 requires nothing - """ + # Define the services we use + self.status_service = "%s/TaskStatus" % (self.busname,) + self.parset_service = "%s/TaskSpecification" % (self.busname,) + self.jts_service = "%s/TaskSpecified" % (self.busname,) # setup mock parset service def TaskSpecificationService( input_dict ): obsid = input_dict["OtdbID"] - print obsid if obsid == 1: predecessors = "[2,3]" @@ -88,40 +95,82 @@ class TestService(unittest.TestCase): PARSET_PREFIX + "Observation.Scheduler.predecessors": predecessors, } - # Create a random bus - busname = "%s-%s" % (sys.argv[0], uuid.uuid4()) - with ToBus(busname, options={ "create": "always", "delete": "always", "node": { "type": "topic" }}): - status_service = "%s/TaskStatus" % (busname,) - parset_service = "%s/TaskSpecification" % (busname,) - jts_service = "%s/TaskSpecified" % (busname,) - - # Setup our fake TaskSpecification server, and start our JobsToSchedule service to test - with Service("TaskSpecification", TaskSpecificationService, busname=busname): - with JobsToSchedule("TaskSpecified", otdb_busname=busname, my_busname=busname) as jts: - # Start listening for answer before we trigger it - with FromBus(jts_service) as fb: - - # Send fake status update - with ToBus(status_service) as tb: - msg = EventMessage(content={ - "treeID": 1, - "state": "prescheduled", - "time_of_change": "2016-01-01 00:00:00.00", - }) - tb.send(msg) - - # Wait for answer from service - result = fb.receive(1.0) - self.assertIsNotNone(result) - - # Verify result - self.assertIn("sasID", result.content) - self.assertIn("resource_indicators", result.content) - - self.assertEqual(result.content["sasID"], 1) - self.assertIn("1", result.content["resource_indicators"]) - self.assertIn("2", result.content["resource_indicators"]) - self.assertIn("3", result.content["resource_indicators"]) + + # Setup our fake TaskSpecification server, and start our JobsToSchedule service to test + self.parset_service = Service("TaskSpecification", TaskSpecificationService, busname=self.busname) + self.parset_service.start_listening() + + def tearDown(self): + self.parset_service.stop_listening() + self.bus.close() + + def testNoPredecessors(self): + """ + Request the resources for a simulated obsid 3, with the following predecessor tree: + + 3 requires nothing + """ + + with JobsToSchedule("TaskSpecified", otdb_busname=self.busname, my_busname=self.busname) as jts: + # Start listening for answer before we trigger it + with FromBus(self.jts_service) as fb: + + # Send fake status update + with ToBus(self.status_service) as tb: + msg = EventMessage(content={ + "treeID": 3, + "state": "prescheduled", + "time_of_change": "2016-01-01 00:00:00.00", + }) + tb.send(msg) + + # Wait for answer from service + result = fb.receive(1.0) + self.assertIsNotNone(result) + + # Verify result + self.assertIn("sasID", result.content) + self.assertIn("resource_indicators", result.content) + + self.assertEqual(result.content["sasID"], 3) + self.assertNotIn("1", result.content["resource_indicators"]) + self.assertNotIn("2", result.content["resource_indicators"]) + self.assertIn("3", result.content["resource_indicators"]) + + def testPredecessors(self): + """ + Request the resources for a simulated obsid 1, with the following predecessor tree: + + 1 requires 2, 3 + 2 requires 3 + 3 requires nothing + """ + + with JobsToSchedule("TaskSpecified", otdb_busname=self.busname, my_busname=self.busname) as jts: + # Start listening for answer before we trigger it + with FromBus(self.jts_service) as fb: + + # Send fake status update + with ToBus(self.status_service) as tb: + msg = EventMessage(content={ + "treeID": 1, + "state": "prescheduled", + "time_of_change": "2016-01-01 00:00:00.00", + }) + tb.send(msg) + + # Wait for answer from service + result = fb.receive(1.0) + self.assertIsNotNone(result) + + # Verify result + self.assertIn("sasID", result.content) + self.assertIn("resource_indicators", result.content) + + self.assertEqual(result.content["sasID"], 1) + self.assertIn("1", result.content["resource_indicators"]) + self.assertIn("2", result.content["resource_indicators"]) + self.assertIn("3", result.content["resource_indicators"]) def main(argv): unittest.main(verbosity=2)