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()
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
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()
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)
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'])