def test_SeqProduction(self): # Define the first step of the production prodStep1 = ProductionStep() prodStep1.Name = 'Sim_prog' prodStep1.Type = 'MCSimulation' outputquery = { 'zenith': { 'in': [20, 40] }, 'particle': 'gamma', 'tel_sim_prog': 'simtel', 'outputType': { 'in': ['Data', 'Log'] } } prodStep1.Outputquery = outputquery # Add the step to the production res = self.prodClient.addProductionStep(prodStep1) self.assertTrue(res['OK']) # Define the second step of the production prodStep2 = ProductionStep() prodStep2.Name = 'Reco_prog' prodStep2.Type = 'DataProcessing' prodStep2.ParentStep = prodStep1 inputquery = { 'zenith': 20, 'particle': 'gamma', 'tel_sim_prog': 'simtel', 'outputType': 'Data' } outputquery = { 'zenith': 20, 'particle': 'gamma', 'analysis_prog': 'evndisp', 'data_level': 1, 'outputType': { 'in': ['Data', 'Log'] } } prodStep2.Inputquery = inputquery prodStep2.Outputquery = outputquery # Add the step to the production res = self.prodClient.addProductionStep(prodStep2) self.assertTrue(res['OK']) # Define the third step of the production prodStep3 = ProductionStep() prodStep3.Name = 'Analyis_prog' prodStep3.Type = 'DataProcessing' prodStep3.ParentStep = prodStep2 inputquery = { 'zenith': 20, 'particle': 'gamma', 'analysis_prog': 'evndisp', 'data_level': 1, 'outputType': 'Data' } outputquery = { 'zenith': 20, 'particle': 'gamma', 'analysis_prog': 'evndisp', 'data_level': 2, 'outputType': { 'in': ['Data', 'Log'] } } prodStep3.Inputquery = inputquery prodStep3.Outputquery = outputquery # Add the step to the production res = self.prodClient.addProductionStep(prodStep3) self.assertTrue(res['OK']) # Get the production description prodDesc = self.prodClient.prodDescription # Create the production prodName = 'SeqProd' res = self.prodClient.addProduction(prodName, json.dumps(prodDesc)) self.assertTrue(res['OK']) # Start the production, i.e. instatiate the transformation steps res = self.prodClient.startProduction(prodName) self.assertTrue(res['OK']) # Get the transformations of the production res = self.prodClient.getProduction(prodName) self.assertTrue(res['OK']) prodID = res['Value']['ProductionID'] res = self.prodClient.getProductionTransformations(prodID) self.assertTrue(res['OK']) self.assertEqual(len(res['Value']), 3) # Delete the production res = self.prodClient.deleteProduction(prodName) self.assertTrue(res['OK'])
def test_SeqProduction(self): # Define the first step of the production prodStep1 = ProductionStep() prodStep1.Name = "Sim_prog" prodStep1.Type = "MCSimulation" outputquery = { "zenith": { "in": [20, 40] }, "particle": "gamma", "tel_sim_prog": "simtel", "outputType": { "in": ["Data", "Log"] }, } prodStep1.Outputquery = outputquery # Add the step to the production res = self.prodClient.addProductionStep(prodStep1) self.assertTrue(res["OK"]) # Define the second step of the production prodStep2 = ProductionStep() prodStep2.Name = "Reco_prog" prodStep2.Type = "DataProcessing" prodStep2.ParentStep = prodStep1 inputquery = { "zenith": 20, "particle": "gamma", "tel_sim_prog": "simtel", "outputType": "Data" } outputquery = { "zenith": 20, "particle": "gamma", "analysis_prog": "evndisp", "data_level": 1, "outputType": { "in": ["Data", "Log"] }, } prodStep2.Inputquery = inputquery prodStep2.Outputquery = outputquery # Add the step to the production res = self.prodClient.addProductionStep(prodStep2) self.assertTrue(res["OK"]) # Define the third step of the production prodStep3 = ProductionStep() prodStep3.Name = "Analyis_prog" prodStep3.Type = "DataProcessing" prodStep3.ParentStep = prodStep2 inputquery = { "zenith": 20, "particle": "gamma", "analysis_prog": "evndisp", "data_level": 1, "outputType": "Data", } outputquery = { "zenith": 20, "particle": "gamma", "analysis_prog": "evndisp", "data_level": 2, "outputType": { "in": ["Data", "Log"] }, } prodStep3.Inputquery = inputquery prodStep3.Outputquery = outputquery # Add the step to the production res = self.prodClient.addProductionStep(prodStep3) self.assertTrue(res["OK"]) # Get the production description prodDesc = self.prodClient.prodDescription # Create the production prodName = f"SeqProd{random.randint(0, 100_000)}" res = self.prodClient.addProduction(prodName, json.dumps(prodDesc)) self.assertTrue(res["OK"]) # Start the production, i.e. instatiate the transformation steps res = self.prodClient.startProduction(prodName) self.assertTrue(res["OK"]) # Get the transformations of the production res = self.prodClient.getProduction(prodName) self.assertTrue(res["OK"]) prodID = res["Value"]["ProductionID"] res = self.prodClient.getProductionTransformations(prodID) self.assertTrue(res["OK"]) self.assertEqual(len(res["Value"]), 3) # Delete the production res = self.prodClient.deleteProduction(prodName) self.assertTrue(res["OK"])