Tès se yon pati entegral nan pwosesis devlopman an. Epi pafwa devlopè yo bezwen kouri tès lokalman, anvan yo komèt chanjman.
Si aplikasyon an itilize Amazon Sèvis Web, python bibliyotèk la mouvman pafè pou sa.
Ou ka wè yon lis konplè sou kouvèti resous yo
Gen yon Navèt sou Github Hugo Picado -
Oke, sa a ase fasil yo ranje.
Depi lè w kòmanse ou bezwen presize kalite sèvis la (apeprè varyab MOTO_SERVICE), nou jis bezwen dekri kreyasyon resous la.
Ann chanje li yon ti kras kòmanse.sh:
Olye pou yo
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
Mete:
if [ -f /opt/init/bootstrap.py ]; then
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT & (sleep 5 && echo "Executing bootstrap script." && python /opt/init/bootstrap.py)
else
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
fi
wait
Dosye final la se:
kòmanse.sh
#!/bin/sh
# validate required input
if [ -z "$MOTO_SERVICE" ]; then
echo "Please define AWS service to run with Moto Server (e.g. s3, ec2, etc)"
exit 1
fi
# setting defaults for optional input
if [ -z "$MOTO_HOST" ]; then
MOTO_HOST="0.0.0.0"
fi
if [ -z "$MOTO_PORT" ]; then
MOTO_PORT="5000"
fi
echo "Starting service $MOTO_SERVICE at $MOTO_HOST:$MOTO_PORT"
if [ -f /opt/init/bootstrap.py ]; then
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT & (sleep 5 && echo "Executing bootstrap script." && python /opt/init/bootstrap.py)
else
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
fi
# Prevent container from exiting when bootstrap.py finishing
wait
Nou bati yon nouvo imaj epi pouse li nan rejis nou an.
Apre sa, ann ekri yon script inisyalizasyon resous, pou egzanp SWF domèn, lè l sèvi avèk bibliyotèk la pou travay ak AWS - boto3:
bootstrap_swf.py
import boto3
from botocore.exceptions import ClientError
import os
os.environ["AWS_ACCESS_KEY_ID"] = "fake"
os.environ["AWS_SECRET_ACCESS_KEY"] = "fake"
client = boto3.client('swf', region_name='us-west-2', endpoint_url='http://localhost:5000')
try:
client.register_domain(
name='test-swf-mock-domain',
description="Test SWF domain",
workflowExecutionRetentionPeriodInDays="10"
)
except ClientError as e:
print "Domain already exists: ", e.response.get("Error", {}).get("Code")
response = client.list_domains(
registrationStatus='REGISTERED',
maximumPageSize=123,
reverseOrder=True|False
)
print 'Ready'
Lojik la se sa a:
- Lè w kòmanse, nou monte script nou an /opt/init/bootstrap.py.
- Si fichye a monte, li pral egzekite.
- Si pa gen okenn dosye, moto-sèvè a fè tou senpleman ap kòmanse.
Epi, ou ka moke yon resous antye lè w lanse yon sèl veso:
docker run --name swf -d
-e MOTO_SERVICE=swf
-e MOTO_HOST=0.0.0.0
-e MOTO_PORT=5000
-p 5001:5000
-v /tmp/bootstrap_swf.py:/opt/init/bootstrap.py
-i awesome-repo.com/moto-server:latest
Ann eseye li entèaktif:
Работает!
Se konsa, nou ka fè docker-compose.yml, ki pral ekonomize tan chanjman tès yo:
docker-compose.yml
version: '3'
services:
s3:
image: picadoh/motocker
environment:
- MOTO_SERVICE=s3
- MOTO_HOST=10.0.1.2
ports:
- "5002:5000"
networks:
motonet:
ipv4_address: 10.0.1.2
volumes:
- /tmp/bootstrap_s3.py:/opt/init/bootstrap.py
swf:
image: picadoh/motocker
environment:
- MOTO_SERVICE=swf
- MOTO_HOST=10.0.1.3
ports:
- "5001:5000"
networks:
motonet:
ipv4_address: 10.0.1.3
volumes:
- /tmp/bootstrap_swf.py:/opt/init/bootstrap.py
ec2:
image: picadoh/motocker
environment:
- MOTO_SERVICE=ec2
- MOTO_HOST=10.0.1.4
ports:
- "5003:5000"
networks:
motonet:
ipv4_address: 10.0.1.4
volumes:
- /tmp/bootstrap_ec2.py:/opt/init/bootstrap.py
networks:
motonet:
driver: bridge
ipam:
config:
- subnet: 10.0.0.0/16
Aktyèlman, apwòch sa a ka itilize pa sèlman sou laptop yon pwomotè. Tès preliminè ak mok apre asanble pral ede debarase m de pwoblèm posib lè w ap kouri sou anviwònman dev*.
Lyen:
Motocker repo -
Moto repo -
Boto3 Docs -
Sous: www.habr.com