示例#1
0
    def setUp(self):
        """
        It creates the memory db
        """

        db.create_all()

        # We store some Applications in the db for the tests
        application_1 = Application()
        application_1.name = 'AppName_1'
        application_2 = Application()
        application_2.name = 'AppName_2'

        # Adding executing scripts
        execution_script_1 = ExecutionConfiguration()
        execution_script_1.execution_type = "slurm:sbatch"
        execution_script_2 = ExecutionConfiguration()
        execution_script_2.execution_type = "slurm:sbatch2"
        application_2.execution_configurations = [
            execution_script_1, execution_script_2
        ]

        db.session.add(application_1)
        db.session.add(application_2)

        # We store some testbeds in the db for the tests
        testbed_1 = Testbed("name_1", True, "slurm", "ssh", "user@server",
                            ['slurm'])
        testbed_2 = Testbed("name_2", False, "slurm", "ssh", "user@server",
                            ['slurm'])
        testbed_3 = Testbed("name_3", True, "slurm", "ssh", "user@server",
                            ['slurm', 'slurm:singularity'])
        db.session.add(testbed_1)
        db.session.add(testbed_2)
        db.session.add(testbed_3)
        db.session.commit()

        deployment = Deployment()
        deployment.executable_id = execution_script_1.id
        deployment.testbed_id = testbed_1.id
        db.session.add(deployment)

        # We store some nodes in the db for the tests
        node_1 = Node()
        node_1.name = "node_1"
        node_1.information_retrieved = True
        node_2 = Node()
        node_2.name = "node_2"
        node_2.information_retrieved = False
        db.session.add(node_1)
        db.session.add(node_2)

        execution = Execution()
        execution.execution_type = "execution_type"
        execution.status = "status"
        db.session.add(execution)

        db.session.commit()
示例#2
0
	def create_app(self):
		"""
		It initializes flask_testing
		"""
		tmp_directory = tempfile.mkdtemp()
		app = alde.create_app_v1(self.SQLALCHEMY_DATABASE_URI, 
		                         0, 
								 tmp_directory, 
								 tmp_directory,
								 ['APP_TYPE'],
								 None,
								 None)
		app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
		app.config['TESTING'] = self.TESTING
		db.create_all()

		# We register the upload url
		upload_prefix = alde.url_prefix_v1 + "/upload"
		app.register_blueprint(upload.upload_blueprint, url_prefix=upload_prefix)

		# We create the application and we store it in the db
		application = Application()
		application.name = "AppName"
		db.session.add(application)
		db.session.commit()

		return app
示例#3
0
    def setUp(self):
        """
        It creates the model objects and saves then in the database
        """
        super(RankingTests, self).setUp()

        self.execution = Execution()
        self.execution.slurm_sbatch_id = 2333

        execution_configuration = ExecutionConfiguration()
        execution_configuration.id = 22
        self.execution.execution_configuration = execution_configuration

        application = Application()
        application.name = "Matmul"
        execution_configuration.application = application

        testbed = Testbed("nova", True, "SLURM", "SSH", "*****@*****.**",
                          ["SINGULARITY"])
        execution_configuration.testbed = testbed

        db.session.add(testbed)
        db.session.add(application)
        db.session.add(execution_configuration)
        db.session.add(self.execution)
        db.session.commit()
示例#4
0
    def test_initialization_application(self):
        """Test the initialization method of the class Application"""

        application = Application()
        application.name = "name"
        self.assertEquals("name", application.name)
        application.application_type = "XXX"
        self.assertEquals("XXX", application.application_type)
示例#5
0
    def test_patch_execution_preprocessor(self, mock_restart_execution, mock_executor_stop, mock_executor_cancel, mock_executor_add, mock_executor_remove):
        """
        It test the correct work of the method of canceling an execution
        """

        # First we verify that nothing happens if launch_execution = False
        data = {'status': 'PEPITO'}

        response = self.client.patch("/api/v1/executions/100",
                                     data=json.dumps(data),
                                     content_type='application/json')

        self.assertEquals(409, response.status_code)
        self.assertEquals(
          'No execution by the given id',
          response.json['message'])

        # Preparing the data for the rest of the test
        testbed = Testbed("name", False, "slurm", "ssh", "user@server", ['slurm'])
        db.session.add(testbed)
        db.session.commit()
        application = Application()
        application.name = "xxx"
        application.application_type = "XXX"
        db.session.add(application)
        db.session.commit()
        execution_configuration = ExecutionConfiguration()
        execution_configuration.testbed = testbed
        execution_configuration.application = application
        db.session.add(execution_configuration)
        db.session.commit()
        execution = Execution()
        execution.execution_type = Executable.__type_singularity_srun__
        execution.status = Execution.__status_running__
        execution.execution_configuration = execution_configuration
       
        db.session.add(execution)
        db.session.commit()

        response = self.client.patch("/api/v1/executions/" + str(execution.id) ,
                                     data=json.dumps(data),
                                     content_type='application/json')
        self.assertEquals(409, response.status_code)
        self.assertEquals(
          'No valid state to try to change',
          response.json['message'])

        data = {'PEPITO': 'PEPITO'}
        response = self.client.patch("/api/v1/executions/" + str(execution.id) ,
                                     data=json.dumps(data),
                                     content_type='application/json')

        self.assertEquals(409, response.status_code)
        self.assertEquals(
          'No status, remove_resource, or add_resource field in the payload',
          response.json['message'])

        data = {'status': 'CANCEL'}
        response = self.client.patch("/api/v1/executions/" + str(execution.id) ,
                                     data=json.dumps(data),
                                     content_type='application/json')

        self.assertEquals(200, response.status_code)
        mock_executor_cancel.assert_called_with(execution, 'user@server')

        data = {'add_resource': ''}
        response = self.client.patch("/api/v1/executions/" + str(execution.id) ,
                                     data=json.dumps(data),
                                     content_type='application/json')

        mock_executor_add.assert_called_with(execution)

        data = {'remove_resource': ''}
        response = self.client.patch("/api/v1/executions/" + str(execution.id) ,
                                     data=json.dumps(data),
                                     content_type='application/json')

        mock_executor_remove.assert_called_with(execution)

        # Adding Checkpointable changes of status at ALDE level.
        execution.status = Execution.__status_running__
        application.application_type = Application.CHECKPOINTABLE
        db.session.commit()

        data = {'status': 'STOP'}
        response = self.client.patch("/api/v1/executions/" + str(execution.id),
                                    data=json.dumps(data),
                                    content_type="application/json")
        
        mock_executor_stop.assert_called_with(execution)

        execution.status = Execution.__status_cancel__
        db.session.commit()
        response = self.client.patch("/api/v1/executions/" + str(execution.id),
                                    data=json.dumps(data),
                                    content_type="application/json")
        self.assertEquals(409, response.status_code)
        self.assertEquals(
          'Execution is not in right state',
          response.json['message'])

        # Checkpointable restart
        execution.status = Execution.__status_stopped__
        db.session.commit()
        data = {'status': 'RESTART'}
        
        response = self.client.patch("/api/v1/executions/" + str(execution.id),
                                    data=json.dumps(data),
                                    content_type="application/json")
        
        mock_restart_execution.assert_called_with(execution)

        execution.status = Execution.__status_cancel__
        db.session.commit()
        response = self.client.patch("/api/v1/executions/" + str(execution.id),
                                    data=json.dumps(data),
                                    content_type="application/json")
        self.assertEquals(409, response.status_code)
        self.assertEquals(
          'Execution is not in right state',
          response.json['message'])