Je me suis moqué d'AWS-Batch en utilisant moto, et j'ai pu enregistrer le travail, je vais donc le laisser sous forme de mémorandum.
test_aws_batch.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import boto3
from moto import mock_batch, mock_iam
class MyTestCase(unittest.TestCase):
@mock_iam
@mock_batch
def test_aws_batch(self):
client = boto3.client('batch')
iam = boto3.client('iam')
#rôle simulé iam
iams = iam.create_role(
RoleName='test_matsu_iam',
AssumeRolePolicyDocument='string',
)
iam_arn = iams.get('Role').get('Arn')
print("iamRoleArn: " + iam_arn)
# aws-simulation d'environnement de calcul par lots
batch = client.create_compute_environment(
computeEnvironmentName='test_matsu_batch',
type='UNMANAGED',
serviceRole=iam_arn
)
compute_environment_arn = batch.get('computeEnvironmentArn')
print("computeEnvironmentArn: " + compute_environment_arn)
# aws-maquette de file d'attente de travaux par lots
job_qs = client.create_job_queue(
jobQueueName='test_matsu_job_q',
state='ENABLED',
priority=1,
computeEnvironmentOrder=[
{
'order': 1,
'computeEnvironment': compute_environment_arn
},
]
)
job_q_arn = job_qs.get('jobQueueArn')
print("jobQueueArn: " + job_q_arn)
# aws-simulation de définition de tâche par lots
job_definition = client.register_job_definition(
jobDefinitionName='test_matsu_job_definition',
type='container',
containerProperties={
'image': 'string',
'vcpus': 123,
'memory': 123
},
)
job_definition_arn = job_definition.get('jobDefinitionArn')
print("jobDefinitionArn: " + job_definition_arn)
#Ajouter un emploi
client.submit_job(
jobName='string',
jobQueue=job_q_arn,
jobDefinition=job_definition_arn
)
#Obtenir la liste des emplois
jobs = client.list_jobs(
jobQueue=job_q_arn
)
#Liste des travaux de sortie
print("jobSummaryList: " + str(jobs.get('jobSummaryList')))
if __name__ == '__main__':
unittest.main()
$ python -m unittest test.test_aws_batch -v
test_aws_batch (test.test_aws_batch.MyTestCase) ... iamRoleArn: arn:aws:iam::123456789012:role/test_matsu_iam
computeEnvironmentArn: arn:aws:batch:ap-northeast-1:123456789012:compute-environment/test_matsu_batch
jobQueueArn: arn:aws:batch:ap-northeast-1:123456789012:job-queue/test_matsu_job_q
jobDefinitionArn: arn:aws:batch:ap-northeast-1:123456789012:job-definition/test_matsu_job_definition:1
jobSummaryList: [{'jobId': 'ee3a3206-fdfe-404f-a1c1-9c444b41b546', 'jobName': 'string'}]
ok
----------------------------------------------------------------------
Ran 1 test in 0.167s
OK
Diverses ressources ont été moquées et le travail a été soumis avec succès.
Cette maquette permet de tester la soumission de tâches à AWS-Batch sans utiliser de vraies ressources AWS. Malheureusement, le contenu du travail soumis est uniquement «jobId» et «jobName». Il est peu probable qu'il soit disponible pour les tests liés à l'heure ou au statut de création d'emploi. La conclusion est qu'il semble préférable d'utiliser «mock» de «test d'unité» pour les tests qui utilisent le travail soumis.
Recommended Posts