Tés mangrupa bagian integral tina prosés pangwangunan. Sarta kadangkala pamekar kudu ngajalankeun tés lokal, saméméh committing parobahan.
Lamun aplikasi ngagunakeun Layanan Web Amazon, python perpustakaan Moto sampurna pikeun ieu.
Daptar lengkep ngeunaan cakupan sumberdaya tiasa ditingali
Aya turnip on Github Hugo Picado -
Muhun, éta cukup gampang pikeun ngalereskeun.
Kusabab nalika ngamimitian anjeun kedah netepkeun jinis jasa (utusan variabel MOTO_SERVICE), urang ngan kudu ngajelaskeun kreasi sumberdaya.
Hayu urang ngarobah éta saeutik ngamimitian.sh:
Malahan
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
Lebetkeun:
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
File ahir nyaéta:
ngamimitian.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
Urang ngawangun gambar anyar jeung nyorong kana pendaptaran urang.
Salajengna, hayu urang nulis naskah initialization sumberdaya, contona domain SWF, ngagunakeun perpustakaan pikeun gawé bareng 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'
Logikana kieu:
- Nalika ngamimitian, urang pasang skrip urang /opt/init/bootstrap.py.
- Upami file dipasang, éta bakal dieksekusi.
- Lamun teu aya file, nu bulistir Moto-server saukur bakal ngamimitian.
Sareng, anjeun tiasa nyindiran sadayana sumber ku ngaluncurkeun hiji wadah:
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
Hayu urang cobaan sacara interaktif:
Gawéna!
Janten urang tiasa ngadamel docker-compose.yml, anu bakal ngahémat waktos parobihan tés:
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
Sabenerna, pendekatan ieu tiasa dianggo henteu ngan ukur dina laptop pamekar. Tes awal sareng moyok saatos perakitan bakal ngabantosan ngaleungitkeun masalah anu mungkin nalika ngajalankeun dina lingkungan dev *.
Rujukan:
Motocker repo -
Moto repo -
Dokumén Boto3 -
sumber: www.habr.com