Ang pagsubok ay isang mahalagang bahagi ng proseso ng pag-unlad. At kung minsan kailangan ng mga developer na magpatakbo ng mga pagsubok nang lokal, bago gumawa ng mga pagbabago.
Kung ang application ay gumagamit Amazon Web Services, python aklatan moto perpekto para dito.
Maaaring tingnan ang kumpletong listahan ng saklaw ng mapagkukunan
May singkamas sa Github Hugo Picado -
Well, iyon ay sapat na madaling ayusin.
Dahil kapag nagsimula kailangan mong tukuyin ang uri ng serbisyo (env variable MOTO_SERVICE), kailangan lang nating ilarawan ang paglikha ng mapagkukunan.
Baguhin natin ng kaunti simulan.sh:
Sa halip ng
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
Ipasok:
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
Ang huling file ay:
simulan.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
Bumubuo kami ng bagong imahe at itulak ito sa aming registry.
Susunod, magsulat tayo ng script ng pagsisimula ng mapagkukunan, halimbawa SWF domain, gamit ang library para sa pagtatrabaho sa 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'
Ang lohika ay ito:
- Kapag nagsisimula, inilalagay namin ang aming script /opt/init/bootstrap.py.
- Kung ang file ay naka-mount, ito ay isasagawa.
- Kung walang file, magsisimula lang ang hubad na moto-server.
At, maaari mong kutyain ang isang buong mapagkukunan sa pamamagitan ng paglulunsad ng isang lalagyan:
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
Subukan natin ito nang interactive:
Gumagana ito!
Para makagawa tayo ng docker-compose.yml, na makakatipid ng oras sa mga pagbabago sa pagsubok:
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
Sa totoo lang, maaaring gamitin ang diskarteng ito hindi lamang sa laptop ng developer. Ang mga paunang pagsubok na may mga pangungutya pagkatapos ng pagpupulong ay makakatulong sa pag-alis ng mga posibleng problema kapag tumatakbo sa mga dev* na kapaligiran.
Link:
Motocker repo -
Moto repo -
Boto3 Docs -
Pinagmulan: www.habr.com