Idanwo adaṣe ti awọn iṣẹ microservice ni Docker fun iṣọpọ lemọlemọfún

Ninu awọn iṣẹ akanṣe ti o ni ibatan si idagbasoke ti faaji microservice, CI / CD n gbe lati ẹya ti aye igbadun si ẹya ti iwulo iyara. Idanwo adaṣe jẹ apakan pataki ti isọpọ igbagbogbo, ọna ti o peye eyiti o le fun ẹgbẹ ni ọpọlọpọ awọn irọlẹ idunnu pẹlu ẹbi ati awọn ọrẹ. Bibẹẹkọ, awọn eewu iṣẹ akanṣe ko pari.

O ṣee ṣe lati bo gbogbo koodu microservice pẹlu awọn idanwo ẹyọkan pẹlu awọn ohun ẹlẹgàn, ṣugbọn eyi nikan ni apakan kan yanju iṣoro naa ati fi ọpọlọpọ awọn ibeere ati awọn iṣoro silẹ, ni pataki nigbati idanwo ṣiṣẹ pẹlu data. Gẹgẹbi nigbagbogbo, awọn titẹ pupọ julọ jẹ idanwo aitasera data ni ibi ipamọ data ibatan, iṣẹ idanwo pẹlu awọn iṣẹ awọsanma, ati ṣiṣe awọn arosinu ti ko tọ nigba kikọ awọn ohun ẹlẹgàn.

Gbogbo eyi ati diẹ diẹ sii ni a le yanju nipasẹ idanwo gbogbo microservice ninu apoti Docker kan. Anfani ti ko ni iyemeji fun idaniloju iwulo awọn idanwo ni pe awọn aworan Docker kanna ti o lọ si iṣelọpọ ni idanwo.

Automation ti ọna yii ṣafihan ọpọlọpọ awọn iṣoro, ojutu si eyiti yoo ṣe alaye ni isalẹ:

  • awọn ija ti awọn iṣẹ-ṣiṣe ti o jọra ni ile-iṣẹ docker kanna;
  • idamo rogbodiyan ninu awọn database nigba igbeyewo iterations;
  • nduro fun microservices lati wa ni setan;
  • dapọ ati awọn igbasilẹ ti njade si awọn eto ita;
  • idanwo awọn ibeere HTTP ti njade;
  • idanwo iho wẹẹbu (lilo SignalR);
  • idanwo OAuth ìfàṣẹsí ati aṣẹ.

Nkan yii da lori oro mi ni SECR 2019. Nitorina fun awọn ti o jẹ ọlẹ lati ka, eyi ni igbasilẹ ti ọrọ naa.

Idanwo adaṣe ti awọn iṣẹ microservice ni Docker fun iṣọpọ lemọlemọfún

Ninu nkan yii Emi yoo sọ fun ọ bi o ṣe le lo iwe afọwọkọ kan lati ṣiṣẹ iṣẹ naa labẹ idanwo, ibi ipamọ data ati awọn iṣẹ Amazon AWS ni Docker, lẹhinna awọn idanwo lori Postman ati, lẹhin ti wọn ti pari, da duro ati paarẹ awọn apoti ti a ṣẹda. Awọn idanwo ti wa ni ṣiṣe ni gbogbo igba ti koodu ba yipada. Ni ọna yii, a rii daju pe ẹya kọọkan ṣiṣẹ ni deede pẹlu data data AWS ati awọn iṣẹ.

Iwe afọwọkọ kanna ni ṣiṣe mejeeji nipasẹ awọn olupilẹṣẹ funrararẹ lori awọn kọǹpútà Windows wọn ati nipasẹ olupin Gitlab CI labẹ Lainos.

Lati ṣe idalare, iṣafihan awọn idanwo tuntun ko yẹ ki o nilo fifi sori ẹrọ ti awọn irinṣẹ afikun boya lori kọnputa olupilẹṣẹ tabi lori olupin nibiti awọn idanwo naa ti ṣiṣẹ lori adehun kan. Docker yanju iṣoro yii.

Idanwo naa gbọdọ ṣiṣẹ lori olupin agbegbe fun awọn idi wọnyi:

  • Nẹtiwọọki ko ni igbẹkẹle patapata. Ninu ẹgbẹrun ibeere, ọkan le kuna;
    Ni idi eyi, idanwo aifọwọyi kii yoo ṣiṣẹ, iṣẹ naa yoo duro, ati pe iwọ yoo ni lati wa idi naa ninu awọn akọọlẹ;
  • Awọn ibeere loorekoore ko gba laaye nipasẹ diẹ ninu awọn iṣẹ ẹnikẹta.

Ni afikun, o jẹ aifẹ lati lo iduro nitori:

  • Iduro kan le fọ kii ṣe nipasẹ koodu buburu ti nṣiṣẹ lori rẹ, ṣugbọn tun nipasẹ data ti koodu to pe ko le ṣe ilana;
  • Laibikita bawo ni a ṣe le gbiyanju lati yi pada gbogbo awọn ayipada ti idanwo naa ṣe lakoko idanwo funrararẹ, ohun kan le jẹ aṣiṣe (bibẹẹkọ, kilode ti idanwo?).

Nipa ise agbese ati ilana agbari

Ile-iṣẹ wa ni idagbasoke ohun elo wẹẹbu microservice ti n ṣiṣẹ ni Docker ni awọsanma Amazon AWS. Awọn idanwo ẹgbẹ ti lo tẹlẹ lori iṣẹ akanṣe, ṣugbọn awọn aṣiṣe nigbagbogbo waye pe awọn idanwo ẹyọkan ko rii. O jẹ dandan lati ṣe idanwo gbogbo microservice kan pẹlu data data ati awọn iṣẹ Amazon.

Ise agbese na nlo ilana isọpọ lemọlemọfún boṣewa, eyiti o pẹlu idanwo microservice pẹlu gbogbo ifaramọ. Lẹhin yiyan iṣẹ kan, olupilẹṣẹ ṣe awọn ayipada si microservice, ṣe idanwo pẹlu ọwọ ati ṣiṣe gbogbo awọn idanwo adaṣe ti o wa. Ti o ba jẹ dandan, olupilẹṣẹ yipada awọn idanwo naa. Ti ko ba si awọn iṣoro, a ṣe adehun si ẹka ti ọran yii. Lẹhin ṣiṣe kọọkan, awọn idanwo yoo ṣiṣẹ laifọwọyi lori olupin naa. Ijọpọ sinu ẹka ti o wọpọ ati ifilọlẹ awọn idanwo adaṣe lori rẹ waye lẹhin atunyẹwo aṣeyọri. Ti awọn idanwo lori ẹka ti o pin kọja, iṣẹ naa ti ni imudojuiwọn laifọwọyi ni agbegbe idanwo lori Iṣẹ Apoti Elastic Amazon (ibujoko). Iduro jẹ pataki fun gbogbo awọn olupilẹṣẹ ati awọn oludanwo, ati pe ko ni imọran lati fọ. Awọn oludanwo ni agbegbe yii ṣayẹwo atunṣe tabi ẹya tuntun nipa ṣiṣe awọn idanwo afọwọṣe.

faaji ise agbese

Idanwo adaṣe ti awọn iṣẹ microservice ni Docker fun iṣọpọ lemọlemọfún

Ohun elo naa ni diẹ sii ju awọn iṣẹ mẹwa mẹwa lọ. Diẹ ninu wọn ni a kọ sinu .NET Core ati diẹ ninu NodeJs. Iṣẹ kọọkan n ṣiṣẹ ni apoti Docker kan ninu Iṣẹ Apoti Elastic Amazon. Ọkọọkan ni aaye data Postgres tirẹ, ati diẹ ninu tun ni Redis. Ko si awọn apoti isura infomesonu ti o wọpọ. Ti awọn iṣẹ pupọ ba nilo data kanna, lẹhinna data yii, nigbati o ba yipada, ti gbejade si ọkọọkan awọn iṣẹ wọnyi nipasẹ SNS (Iṣẹ Iwifunni Rọrun) ati SQS (Iṣẹ Ipilẹ Irọrun Amazon), ati awọn iṣẹ naa ṣafipamọ sinu awọn apoti isura data lọtọ tiwọn.

SQS ati SNS

SQS ngbanilaaye lati fi awọn ifiranṣẹ sinu isinyi ati ka awọn ifiranṣẹ lati ori isinyi nipa lilo ilana HTTPS.

Ti awọn iṣẹ pupọ ba ka isinyi kan, lẹhinna ifiranṣẹ kọọkan de si ọkan ninu wọn nikan. Eyi wulo nigbati o nṣiṣẹ ọpọlọpọ awọn iṣẹlẹ ti iṣẹ kanna lati pin kaakiri laarin wọn.

Ti o ba fẹ ki ifiranṣẹ kọọkan ni jiṣẹ si awọn iṣẹ lọpọlọpọ, olugba kọọkan gbọdọ ni isinyi tirẹ, ati pe a nilo SNS lati ṣe ẹda awọn ifiranṣẹ sinu awọn ila lọpọlọpọ.

Ninu SNS o ṣẹda koko kan ki o ṣe alabapin si, fun apẹẹrẹ, isinyi SQS kan. O le fi awọn ifiranṣẹ ranṣẹ si koko. Ni idi eyi, ifiranṣẹ naa ni a firanṣẹ si isinyi kọọkan ti o ṣe alabapin si koko yii. SNS ko ni ọna kan fun kika awọn ifiranṣẹ. Ti o ba jẹ lakoko ti n ṣatunṣe aṣiṣe tabi idanwo o nilo lati wa ohun ti a firanṣẹ si SNS, o le ṣẹda isinyi SQS, ṣe alabapin si koko ti o fẹ ki o ka isinyi naa.

Idanwo adaṣe ti awọn iṣẹ microservice ni Docker fun iṣọpọ lemọlemọfún

API Gateway

Pupọ awọn iṣẹ kii ṣe wiwọle taara lati Intanẹẹti. Wiwọle wa nipasẹ API Gateway, eyiti o ṣayẹwo awọn ẹtọ wiwọle. Eyi tun jẹ iṣẹ wa, ati pe awọn idanwo wa fun rẹ paapaa.

Awọn iwifunni akoko gidi

Ohun elo naa nlo SignalRlati ṣafihan awọn iwifunni akoko gidi si olumulo. Eyi ni imuse ni iṣẹ iwifunni. O wa ni iraye taara lati Intanẹẹti ati funrararẹ ṣiṣẹ pẹlu OAuth, nitori pe o jẹ aiṣedeede lati kọ atilẹyin fun awọn iho oju opo wẹẹbu sinu Gateway, ni akawe si iṣọpọ OAuth ati iṣẹ iwifunni naa.

Ọna Idanwo ti a mọ daradara

Awọn idanwo apakan rọpo awọn nkan bii ibi ipamọ data pẹlu awọn nkan ẹlẹgàn. Ti microservice kan, fun apẹẹrẹ, gbiyanju lati ṣẹda igbasilẹ ninu tabili kan pẹlu bọtini ajeji, ati igbasilẹ ti o tọka nipasẹ bọtini yẹn ko si, lẹhinna ibeere naa ko le pari. Awọn idanwo ẹyọkan ko le rii eyi.

В nkan lati Microsoft O ti wa ni idamọran lati lo ibi ipamọ data inu-iranti ati ṣe awọn nkan ẹlẹgàn.

Ibi ipamọ data inu-iranti jẹ ọkan ninu awọn DBMS ti o ni atilẹyin nipasẹ Ilana Ohun elo. O ti ṣẹda ni pataki fun idanwo. Data ni iru a database ti wa ni ipamọ nikan titi awọn ilana lilo o fopin si. Ko nilo ṣiṣẹda awọn tabili ati pe ko ṣayẹwo iduroṣinṣin data.

Awọn nkan Mock ṣe apẹẹrẹ kilasi ti wọn rọpo nikan si iye ti olupilẹṣẹ idanwo loye bi o ṣe n ṣiṣẹ.

Bii o ṣe le gba Postgres lati bẹrẹ laifọwọyi ati ṣe awọn iṣiwa nigbati o ba ṣiṣẹ idanwo kan ko ni pato ninu nkan Microsoft. Ojutu mi ṣe eyi ati, ni afikun, ko ṣafikun koodu eyikeyi pataki fun awọn idanwo si microservice funrararẹ.

Jẹ ki a lọ si ojutu

Lakoko ilana idagbasoke, o han gbangba pe awọn idanwo ẹyọkan ko to lati wa gbogbo awọn iṣoro ni akoko ti akoko, nitorinaa o pinnu lati sunmọ ọran yii lati igun oriṣiriṣi.

Ṣiṣeto ayika idanwo kan

Iṣẹ akọkọ ni lati ran agbegbe idanwo lọ. Awọn igbesẹ ti o nilo lati ṣiṣẹ microservice kan:

  • Tunto iṣẹ labẹ idanwo fun agbegbe agbegbe, pato awọn alaye fun sisopọ si ibi ipamọ data ati AWS ni awọn oniyipada ayika;
  • Bẹrẹ Postgres ki o ṣe iṣiwa nipasẹ ṣiṣe Liquibase.
    Ni awọn DBMS ti o ni ibatan, ṣaaju kikọ data sinu ibi ipamọ data, o nilo lati ṣẹda ero data kan, ni awọn ọrọ miiran, awọn tabili. Nigbati o ba n ṣe imudojuiwọn ohun elo, awọn tabili gbọdọ wa ni mu wa si fọọmu ti ẹya tuntun lo, ati ni pataki, laisi sisọnu data. Eyi ni a npe ni ijira. Ṣiṣẹda awọn tabili ni ibi ipamọ data ṣofo ni ibẹrẹ jẹ ọran pataki ti ijira. Iṣiwa le ti wa ni itumọ ti sinu awọn ohun elo ara. Mejeeji .NET ati NodeJS ni awọn ilana ijira. Ninu ọran wa, fun awọn idi aabo, awọn iṣẹ microservices ni ẹtọ lati yi eto data pada, ati pe a ṣe iṣilọ nipa lilo Liquibase.
  • Lọlẹ Amazon LocalStack. Eyi jẹ imuse ti awọn iṣẹ AWS lati ṣiṣẹ ni ile. Aworan ti o ti ṣetan wa fun LocalStack lori Ipele Docker.
  • Ṣiṣe iwe afọwọkọ lati ṣẹda awọn nkan pataki ni LocalStack. Awọn iwe afọwọkọ Shell lo AWS CLI.

Lo fun igbeyewo lori ise agbese Oluṣapẹẹrẹ. O wa tẹlẹ, ṣugbọn o ti ṣe ifilọlẹ pẹlu ọwọ ati idanwo ohun elo kan ti a ti gbe lọ tẹlẹ ni iduro. Ọpa yii n gba ọ laaye lati ṣe awọn ibeere HTTP(S) lainidii ati ṣayẹwo boya awọn idahun ba awọn ireti mu. Awọn ibeere ti wa ni idapo sinu akojọpọ kan, ati pe gbogbo ikojọpọ le ṣee ṣiṣẹ.

Idanwo adaṣe ti awọn iṣẹ microservice ni Docker fun iṣọpọ lemọlemọfún

Bawo ni idanwo aifọwọyi ṣiṣẹ?

Lakoko idanwo naa, ohun gbogbo n ṣiṣẹ ni Docker: iṣẹ labẹ idanwo, Postgres, ohun elo ijira, ati Postman, tabi dipo ẹya console rẹ - Newman.

Docker yanju awọn iṣoro pupọ:

  • Ominira lati iṣeto ogun;
  • Fifi sori awọn igbẹkẹle: Docker ṣe igbasilẹ awọn aworan lati Docker Hub;
  • Pada eto pada si ipo atilẹba rẹ: yiyọ awọn apoti kuro nirọrun.

Docker-pipa ṣọkan awọn apoti sinu nẹtiwọọki foju kan, ti o ya sọtọ lati Intanẹẹti, ninu eyiti awọn apoti ti rii ara wọn nipasẹ awọn orukọ ìkápá.

Idanwo naa jẹ iṣakoso nipasẹ iwe afọwọkọ ikarahun kan. Lati ṣiṣẹ idanwo naa lori Windows a lo git-bash. Nitorinaa, iwe afọwọkọ kan to fun Windows ati Lainos mejeeji. Git ati Docker ti fi sori ẹrọ nipasẹ gbogbo awọn olupilẹṣẹ lori iṣẹ akanṣe naa. Nigbati fifi Git sori Windows, git-bash ti fi sori ẹrọ, nitorinaa gbogbo eniyan ni iyẹn paapaa.

Iwe afọwọkọ naa ṣe awọn igbesẹ wọnyi:

  • Awọn aworan docker ile
    docker-compose build
  • Ifilọlẹ data data ati LocalStack
    docker-compose up -d <контейнер>
  • Iṣilọ aaye data ati igbaradi ti LocalStack
    docker-compose run <контейнер>
  • Ifilọlẹ iṣẹ labẹ idanwo
    docker-compose up -d <сервис>
  • Ṣiṣe idanwo naa (Newman)
  • Idaduro gbogbo awọn apoti
    docker-compose down
  • Fifiranṣẹ awọn abajade ni Slack
    A ni iwiregbe nibiti awọn ifiranṣẹ pẹlu ami ayẹwo alawọ ewe tabi agbelebu pupa ati ọna asopọ si log log.

Awọn aworan Docker wọnyi ni ipa ninu awọn igbesẹ wọnyi:

  • Iṣẹ ti n ṣe idanwo jẹ aworan kanna bi fun iṣelọpọ. Iṣeto ni fun idanwo naa jẹ nipasẹ awọn oniyipada ayika.
  • Fun Postgres, Redis ati LocalStack, awọn aworan ti a ti ṣetan lati Docker Hub ni a lo. Awọn aworan ti a ti ṣetan tun wa fun Liquibase ati Newman. A kọ tiwa sori egungun wọn, fifi awọn faili wa sibẹ.
  • Lati ṣeto LocalStack, o lo aworan AWS CLI ti o ti ṣetan ati ṣẹda aworan ti o ni iwe afọwọkọ ti o da lori rẹ.

Lilo ipele pupọ, o ko ni lati kọ aworan Docker kan lati ṣafikun awọn faili si apo eiyan naa. Sibẹsibẹ, awọn iwọn didun ko dara fun agbegbe wa nitori awọn iṣẹ-ṣiṣe Gitlab CI funrara wọn nṣiṣẹ ninu awọn apoti. O le ṣakoso Docker lati iru eiyan kan, ṣugbọn awọn iwọn didun nikan gbe awọn folda soke lati eto agbalejo, kii ṣe lati eiyan miiran.

Awọn iṣoro ti o le ba pade

Nduro fun imurasilẹ

Nigbati apoti kan pẹlu iṣẹ kan ba n ṣiṣẹ, eyi ko tumọ si pe o ti ṣetan lati gba awọn asopọ. O gbọdọ duro fun asopọ lati tẹsiwaju.

Iṣoro yii jẹ ipinnu nigba miiran nipa lilo iwe afọwọkọ kan duro-fun-o.sh, eyi ti o duro fun anfani lati fi idi asopọ TCP kan mulẹ. Sibẹsibẹ, LocalStack le jabọ aṣiṣe 502 Bad Gateway kan. Ni afikun, o oriširiši ti ọpọlọpọ awọn iṣẹ, ati ti o ba ọkan ninu wọn ti šetan, yi ko so ohunkohun nipa awọn miiran.

Ipinnu: Awọn iwe afọwọkọ ipese LocalStack ti o duro de idahun 200 lati ọdọ SQS ati SNS mejeeji.

Awọn ikọlu Iṣẹ-ṣiṣe ti o jọra

Awọn idanwo lọpọlọpọ le ṣiṣẹ ni igbakanna lori ile-iṣẹ Docker kanna, nitorinaa apoti ati awọn orukọ nẹtiwọọki gbọdọ jẹ alailẹgbẹ. Pẹlupẹlu, awọn idanwo lati awọn ẹka oriṣiriṣi ti iṣẹ kanna tun le ṣiṣẹ ni nigbakannaa, nitorinaa ko to lati kọ awọn orukọ wọn sinu faili akojọpọ kọọkan.

Ipinnu: Iwe afọwọkọ naa ṣeto oniyipada COMPOSE_PROJECT_NAME si iye alailẹgbẹ.

Windows Awọn ẹya ara ẹrọ

Awọn nọmba kan wa ti Mo fẹ tọka si nigba lilo Docker lori Windows, bi awọn iriri wọnyi ṣe pataki lati ni oye idi ti awọn aṣiṣe waye.

  1. Awọn iwe afọwọkọ ikarahun ninu apo kan gbọdọ ni awọn ipari laini Linux.
    Aami ikarahun CR jẹ aṣiṣe sintasi kan. O soro lati sọ lati ifiranṣẹ aṣiṣe pe eyi ni ọran naa. Nigbati o ba n ṣatunṣe iru awọn iwe afọwọkọ lori Windows, o nilo olootu ọrọ to dara. Ni afikun, eto iṣakoso ẹya gbọdọ wa ni tunto daradara.

Eyi ni bi a ṣe tunto git:

git config core.autocrlf input

  1. Git-bash ṣe apẹẹrẹ awọn folda Linux boṣewa ati, nigbati o ba pe faili exe kan (pẹlu docker.exe), rọpo awọn ipa-ọna Linux pipe pẹlu awọn ọna Windows. Sibẹsibẹ, eyi ko ni oye fun awọn ipa-ọna kii ṣe lori ẹrọ agbegbe (tabi awọn ọna ninu apo eiyan). Iwa yii ko le ṣe alaabo.

Ipinnu: fi afikun din ku si ibẹrẹ ti ọna: //bin dipo / bin. Lainos loye iru awọn ipa ọna; fun rẹ, ọpọlọpọ awọn slashes jẹ kanna bi ọkan. Ṣugbọn git-bash ko ṣe idanimọ iru awọn ọna bẹ ko si gbiyanju lati yi wọn pada.

Wọle jade

Nigbati o ba n ṣiṣẹ awọn idanwo, Emi yoo fẹ lati rii awọn akọọlẹ lati Newman mejeeji ati iṣẹ ti n ṣe idanwo. Niwọn igba ti awọn iṣẹlẹ ti awọn akọọlẹ wọnyi ti ni asopọ, apapọ wọn ni console kan rọrun pupọ diẹ sii ju awọn faili lọtọ meji lọ. Newman ifilọlẹ nipasẹ docker-pipe run, ati nitorinaa abajade rẹ pari ni console. Gbogbo ohun ti o ku ni lati rii daju pe iṣẹjade ti iṣẹ naa tun lọ sibẹ.

Ojutu atilẹba ni lati ṣe docker-pese soke ko si asia -d, ṣugbọn lilo awọn agbara ikarahun, firanṣẹ ilana yii si abẹlẹ:

docker-compose up <service> &

Eyi ṣiṣẹ titi o fi jẹ dandan lati fi awọn igbasilẹ ranṣẹ lati Docker si iṣẹ ẹnikẹta kan. docker-pese soke duro lati jade awọn akọọlẹ si console. Sibẹsibẹ, ẹgbẹ naa ṣiṣẹ so docker.

Ipinnu:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<сервис>_1 &

Identifier rogbodiyan nigba igbeyewo iterations

Awọn idanwo ti wa ni ṣiṣe ni ọpọlọpọ awọn iterations. Awọn database ti ko ba nso. Awọn igbasilẹ ninu ibi ipamọ data ni awọn ID alailẹgbẹ. Ti a ba kọ awọn ID kan pato ni awọn ibeere, a yoo gba ija ni aṣetunṣe keji.

Lati yago fun, boya awọn ID gbọdọ jẹ alailẹgbẹ, tabi gbogbo awọn nkan ti o ṣẹda nipasẹ idanwo naa gbọdọ paarẹ. Diẹ ninu awọn nkan ko le paarẹ nitori awọn ibeere.

Ipinnu: ṣe awọn GUIDs ni lilo awọn iwe afọwọkọ Postman.

var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);

Lẹhinna lo aami ninu ibeere naa {{myUUID}}, eyi ti yoo rọpo pẹlu iye ti oniyipada.

Ifowosowopo nipasẹ LocalStack

Ti iṣẹ ti n ṣe idanwo ba ka tabi kọwe si isinyi SQS, lẹhinna lati jẹrisi eyi, idanwo naa funrararẹ gbọdọ tun ṣiṣẹ pẹlu isinyi yii.

Ipinnu: ibeere lati Postman to LocalStack.

API awọn iṣẹ AWS jẹ akọsilẹ, gbigba awọn ibeere laaye lati ṣe laisi SDK kan.

Ti iṣẹ kan ba kọwe si isinyi, lẹhinna a ka ati ṣayẹwo awọn akoonu ti ifiranṣẹ naa.

Ti iṣẹ naa ba fi awọn ifiranṣẹ ranṣẹ si SNS, ni ipele igbaradi LocalStack tun ṣẹda isinyi ati ṣe alabapin si koko SNS yii. Lẹhinna gbogbo rẹ wa si ohun ti a ṣalaye loke.

Ti iṣẹ naa ba nilo lati ka ifiranṣẹ kan lati isinyi, lẹhinna ni igbesẹ idanwo iṣaaju a kọ ifiranṣẹ yii si isinyi.

Idanwo awọn ibeere HTTP ti o wa lati microservice labẹ idanwo

Diẹ ninu awọn iṣẹ ṣiṣẹ lori HTTP pẹlu nkan miiran ju AWS, ati diẹ ninu awọn ẹya AWS ko ṣe imuse ni LocalStack.

Ipinnu: ninu awọn iṣẹlẹ wọnyi o le ṣe iranlọwọ MockServer, eyi ti o ni aworan ti a ti ṣetan ni Docker ibudo. Awọn ibeere ti a nireti ati awọn idahun si wọn jẹ atunto nipasẹ ibeere HTTP kan. API ti ni akọsilẹ, nitorinaa a ṣe awọn ibeere lati Postman.

Idanwo OAuth Ijeri ati Aṣẹ

A lo OAuth ati Awọn Àmi Wẹẹbu JSON (JWT). Idanwo naa nilo olupese OAuth ti a le ṣiṣẹ ni agbegbe.

Gbogbo ibaraenisepo laarin iṣẹ naa ati olupese OAuth wa si awọn ibeere meji: akọkọ, iṣeto ni a beere /.dara-mọ/openid-iṣeto ni, ati lẹhinna bọtini gbogbo eniyan (JWKS) ni a beere ni adirẹsi lati iṣeto. Gbogbo eyi jẹ aimi akoonu.

Ipinnu: Olupese OAuth idanwo wa jẹ olupin akoonu aimi ati awọn faili meji lori rẹ. Aami naa jẹ ipilẹṣẹ ni ẹẹkan ati ṣe adehun si Git.

Awọn ẹya ara ẹrọ ti SignalR igbeyewo

Postman ko ṣiṣẹ pẹlu websockets. Ohun elo pataki kan ni a ṣẹda lati ṣe idanwo SignalR.

Onibara SignalR le jẹ diẹ sii ju ẹrọ aṣawakiri kan lọ. Ile-ikawe alabara kan wa fun labẹ .NET Core. Onibara, ti a kọ sinu .NET Core, ṣe agbekalẹ asopọ kan, ti jẹri, o duro de ọna kan pato ti awọn ifiranṣẹ. Ti ifiranṣẹ airotẹlẹ ba gba tabi asopọ ti sọnu, alabara yoo jade pẹlu koodu 1. Ti o ba gba ifiranṣẹ ti o nireti kẹhin, alabara yoo jade pẹlu koodu 0 kan.

Newman ṣiṣẹ ni nigbakannaa pẹlu alabara. Ọpọlọpọ awọn onibara ṣe ifilọlẹ lati ṣayẹwo pe awọn ifiranṣẹ ti wa ni jiṣẹ si gbogbo eniyan ti o nilo wọn.

Idanwo adaṣe ti awọn iṣẹ microservice ni Docker fun iṣọpọ lemọlemọfún

Lati ṣiṣẹ awọn onibara pupọ lo aṣayan --iwọn lori laini aṣẹ-pipaṣẹ docker.

Ṣaaju ṣiṣe, iwe afọwọkọ Postman n duro de gbogbo awọn alabara lati ṣeto awọn asopọ.
A ti pade iṣoro ti nduro fun asopọ kan. Ṣugbọn awọn olupin wa, ati nibi ni alabara. Ọna ti o yatọ ni a nilo.

Ipinnu: awọn ose ni eiyan nlo awọn siseto HealthChecklati sọ fun iwe afọwọkọ lori agbalejo nipa ipo rẹ. Onibara ṣẹda faili kan ni ọna kan pato, sọ / sọwedowo ilera, ni kete ti asopọ ti fi idi mulẹ. Iwe afọwọkọ HealthCheck ninu faili docker dabi eyi:

HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi

Egbe docker ayewo Ṣe afihan ipo deede, ipo ilera ati koodu ijade fun eiyan naa.

Lẹhin Newman ti pari, iwe afọwọkọ sọwedowo pe gbogbo awọn apoti pẹlu alabara ti pari, pẹlu koodu 0.

Awọn idunnu wa

Lẹhin ti a bori awọn iṣoro ti a ṣalaye loke, a ni ṣeto ti awọn idanwo iṣiṣẹ iduroṣinṣin. Ninu awọn idanwo, iṣẹ kọọkan n ṣiṣẹ bi ẹyọkan kan, ibaraenisepo pẹlu data data ati Amazon LocalStack.

Awọn idanwo wọnyi ṣe aabo ẹgbẹ kan ti awọn olupilẹṣẹ 30+ lati awọn aṣiṣe ninu ohun elo kan pẹlu ibaraenisepo eka ti awọn iṣẹ microservice 10+ pẹlu awọn imuṣiṣẹ loorekoore.

orisun: www.habr.com

Fi ọrọìwòye kun