Esempio n. 1
0
    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'])
Esempio n. 2
0
    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"])