Gwajin Kayan Aiki azaman Lamba tare da Pulumi. Kashi na 2

Assalamu alaikum. A yau za mu raba tare da ku kashi na ƙarshe na labarin. "Gwajin Kayan Aikin Gona azaman Code tare da Pulumi", fassarar wanda aka shirya musamman ga daliban kwas "Ayyukan DevOps da kayan aikin".

Gwajin Kayan Aiki azaman Lamba tare da Pulumi. Kashi na 2

Gwajin turawa

Wannan salon gwaji hanya ce mai ƙarfi kuma tana ba mu damar yin gwajin akwatin farin don gwada ayyukan cikin gida na lambar kayan aikin mu. Koyaya, yana ɗan iyakance abin da zamu iya gwadawa. Ana yin gwaje-gwajen ne bisa tsarin ƙaddamar da ƙwaƙwalwar ajiyar da Pulumi ya ƙirƙira kafin ainihin turawa don haka ba za a iya gwada ƙaddamar da kanta ba. Don irin waɗannan lokuta, Pulumi yana da tsarin gwajin haɗin kai. Kuma waɗannan hanyoyi guda biyu suna aiki tare sosai!

An rubuta tsarin gwajin haɗin kai na Pulumi a cikin Go, wanda shine yadda muke gwada yawancin lambobin mu na ciki. Yayin da tsarin gwajin naúrar da aka tattauna a baya ya kasance kamar gwajin akwatin farin, gwajin haɗin kai akwatin baki ne. (Har ila yau, akwai zaɓuɓɓuka don gwaji na ciki mai tsauri.) An ƙirƙiri wannan tsarin don ɗaukar cikakken shirin Pulumi da aiwatar da ayyuka daban-daban na rayuwa a kai, kamar tura sabon tari daga karce, sabunta shi tare da bambancin, da share shi, mai yiwuwa sau da yawa. . Muna gudanar da su akai-akai (misali, da dare) kuma azaman gwajin damuwa.

(Mu muna aiki a kai, don haka ana samun irin wannan damar gwajin haɗin kai a cikin SDK na asali na harsuna. Kuna iya amfani da tsarin gwajin haɗin kai Go ba tare da la'akari da yaren da aka rubuta shirin ku na Pulumi ba).

Ta hanyar gudanar da shirin ta amfani da wannan tsarin za ku iya duba waɗannan abubuwa:

  • Lambar aikin ku daidai take kuma tana aiki ba tare da kurakurai ba.
  • Saitunan ƙayyadaddun bayanai da abubuwan sirri suna aiki kuma ana fassara su daidai.
  • Ana iya yin nasarar tura aikin ku cikin mai samar da girgijen da kuka zaɓa.
  • Ana iya inganta aikin ku cikin nasara daga jiha ta farko zuwa N wasu jihohi.
  • Ana iya samun nasarar lalata aikinku da cire shi daga mai ba da girgije na ku.

Kamar yadda za mu gani ba da jimawa ba, ana iya amfani da wannan tsarin don tabbatar da lokacin aiki.

Gwajin haɗin kai mai sauƙi

Don ganin wannan a aikace, za mu kalli wurin ajiyar kaya pulumi/examples, Kamar yadda ƙungiyarmu da al'ummar Pulumi ke amfani da ita don gwada buƙatun ja na mu, da aikatawa, da ginin dare.

A ƙasa akwai sauƙaƙe gwajin mu misali wanda ke ba da guga S3 da wasu abubuwa:

example_test.go:

package test
 
import (
    "os"
    "path"
    "testing"
 
    "github.com/pulumi/pulumi/pkg/testing/integration"
)
 
func TestExamples(t *testing.T) {
    awsRegion := os.Getenv("AWS_REGION")
    if awsRegion == "" {
        awsRegion = "us-west-1"
    }
    cwd, _ := os.Getwd()
    integration.ProgramTest(t, &integration.ProgramTestOptions{
        Quick:       true,
        SkipRefresh: true,
        Dir:         path.Join(cwd, "..", "..", "aws-js-s3-folder"),
        Config: map[string]string{
            "aws:region": awsRegion,
        },
    })
}

Wannan gwajin yana tafiya ta ainihin tsarin rayuwa na ƙirƙira, gyaggyarawa, da lalata tari don babban fayil aws-js-s3-folder. Zai ɗauki kusan minti ɗaya don ba da rahoton gwajin da aka ci nasara:

$ go test .
PASS
ok      ... 43.993s

Akwai zaɓuɓɓuka da yawa don tsara halayen waɗannan gwaje-gwaje. Duba cikakken jerin zaɓuɓɓuka. a cikin tsari ProgramTestOptions. Misali, zaku iya saita ƙarshen ƙarshen Jaeger don ganowa (Tracing), nuna cewa kuna tsammanin gwajin zai yi nasara idan gwajin ba shi da kyau (ExpectFailure), yi amfani da jerin “gyara” zuwa shirin don jujjuyawar juzu'i na jeri (EditDirs) da dai sauransu. Bari mu ga yadda ake amfani da su don gwada tura aikace-aikacenku.

Duba kaddarorin albarkatu

Haɗin kai da aka tattauna a sama yana tabbatar da cewa shirinmu yana "aiki" - ba ya rushewa. Amma idan muna so mu duba kaddarorin da aka samu tari fa? Misali, cewa an tanadar da wasu nau'ikan albarkatun (ko ba'a yi musu ba) kuma suna da wasu halaye.

Alamar ExtraRuntimeValidation to ProgramTestOptions yana ba mu damar duba yanayin aika aika da Pulumi ya rubuta don haka za mu iya yin ƙarin bincike. Wannan ya haɗa da cikakken hoto na yanayin tarin da aka samu, gami da daidaitawa, ƙimar fitarwa da aka fitar, duk albarkatun da ƙimar kadarorin su, da duk abin dogaro tsakanin albarkatun.

Don ganin ainihin misalin wannan, bari mu duba cewa shirin namu ya ƙirƙira ɗaya S3 Bukata:

  integration.ProgramTest(t, &integration.ProgramTestOptions{
        // as before...
        ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
            var foundBuckets int
            for _, res := range stack.Deployment.Resources {
                if res.Type == "aws:s3/bucket:Bucket" {
                    foundBuckets++
                }
            }
            assert.Equal(t, 1, foundBuckets, "Expected to find a single AWS S3 Bucket")
        },
    })

Yanzu, lokacin da muka yi gwajin go, ba kawai za ta wuce ta gwajin gwajin rayuwa ba, har ma, bayan an yi nasarar tura tari, za ta yi ƙarin bincike kan yanayin da ya haifar.

Gwajin lokacin gudu

Ya zuwa yanzu, duk gwaje-gwajen sun kasance kawai game da halayen turawa da samfurin albarkatun Pulumi. Me zai faru idan kuna son tabbatar da cewa abubuwan da aka tanadar ku suna aiki da gaske? Misali, cewa injin kama-da-wane yana aiki, guga S3 ya ƙunshi abin da muke tsammani, da sauransu.

Wataƙila kun riga kun yi hasashen yadda ake yin wannan: zaɓi ExtraRuntimeValidation to ProgramTestOptions - wannan babbar dama ce ga wannan. A wannan gaba, kuna gudanar da gwajin Go na al'ada tare da samun dama ga cikakken yanayin albarkatun shirin ku. Wannan jihar ta ƙunshi bayanai kamar adiresoshin IP na injin kama-da-wane, URLs, da duk abin da ake buƙata don yin hulɗa tare da sakamakon aikace-aikacen girgije da abubuwan more rayuwa.

Misali, shirin gwajin mu yana fitar da kadarorin webEndpoint guga da ake kira websiteUrl, wanda shine cikakken URL inda zamu iya daidaitawa index document. Ko da yake za mu iya tono cikin fayil ɗin jihar don nemo bucket kuma karanta waccan kadarar kai tsaye, amma a yawancin lokuta tarin mu yana fitar da kaddarorin masu amfani kamar wannan waɗanda muka sami dacewa don amfani don dubawa:

integration.ProgramTest(t, &integration.ProgramTestOptions{
            // as before ...
        ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
            url := "http://" + stack.Outputs["websiteUrl"].(string)
            resp, err := http.Get(url)
            if !assert.NoError(t, err) {
                return
            }
            if !assert.Equal(t, 200, resp.StatusCode) {
                return
            }
            defer resp.Body.Close()
            body, err := ioutil.ReadAll(resp.Body)
            if !assert.NoError(t, err) {
                return
            }
            assert.Contains(t, string(body), "Hello, Pulumi!")
        },
    })

Kamar binciken mu na lokaci-lokaci na baya, wannan cak ɗin za a aiwatar da shi nan da nan bayan an ɗaga tarin, duk don amsa kira mai sauƙi. go test. Kuma wannan shine kawai ƙarshen ƙanƙara-kowane fasalin gwajin Go da zaku iya rubutawa a cikin lamba yana samuwa.

Ci gaba da Haɗin Kayan Aiki

Yana da kyau a sami damar gudanar da gwaje-gwaje akan kwamfutar tafi-da-gidanka yayin da ake yin sauye-sauyen ababen more rayuwa da yawa don gwada su kafin ƙaddamar da su don bitar lambar. Amma mu da da yawa daga cikin abokan cinikinmu suna gwada abubuwan more rayuwa a matakai daban-daban na ci gaban rayuwa:

  • A cikin kowane buɗaɗɗen buƙatun buɗaɗɗe don gwaji kafin haɗawa.
  • Dangane da kowane alƙawarin, don bincika sau biyu cewa haɗuwa an yi daidai.
  • Lokaci-lokaci, kamar dare ko mako-mako don ƙarin gwaji.
  • A matsayin wani ɓangare na gwajin aiki ko damuwa, wanda yawanci yana gudana na dogon lokaci kuma yana gudanar da gwaje-gwaje a layi daya da/ko ƙaddamar da shirin iri ɗaya sau da yawa.

Ga kowane ɗayan waɗannan, Pulumi yana goyan bayan haɗin kai tare da tsarin haɗin kai da kuka fi so. Tare da ci gaba da haɗin kai, wannan yana ba ku kewayon gwaji iri ɗaya don kayan aikin ku kamar na software na aikace-aikacen ku.

Pulumi yana da goyan baya ga tsarin CI gama gari. Ga wasu daga cikinsu:

Don ƙarin cikakkun bayanai, da fatan za a duba takaddun don Bayarwa na ci gaba.

Muhalli na Ephemeral

Dama mai ƙarfi mai ƙarfi wanda ke buɗewa shine ikon tura yanayin yanayi kawai don dalilai na gwaji. Ra'ayi ayyuka da tari An ƙirƙira Pulumi don sauƙaƙe turawa da ruguza keɓaɓɓun wurare masu zaman kansu, duk a cikin ƴan ƙananan umarni na CLI ko ta amfani da tsarin gwajin haɗin kai.

Idan kuna amfani da GitHub, to Pulumi yana bayarwa GitHub App, wanda zai taimake ka ka haɗa gwajin karɓa don jawo buƙatun a cikin bututun CI naka. Kawai shigar da aikace-aikacen a cikin ma'ajin GitHub, kuma Pulumi zai ƙara bayani game da samfotin abubuwan more rayuwa, sabuntawa da sakamakon gwaji zuwa buƙatun ku na CI da tafkin:

Gwajin Kayan Aiki azaman Lamba tare da Pulumi. Kashi na 2

Lokacin da kuke amfani da Pulumi don ainihin gwaje-gwajen karɓar ku, zaku sami sabbin damar aiki da kai wanda zai inganta aikin ƙungiyar kuma ya ba ku kwarin gwiwa kan ingancin canje-canjenku.

Sakamakon

A cikin wannan labarin, mun ga cewa ta hanyar amfani da harsunan shirye-shirye na gama-gari, dabarun haɓaka software da yawa sun sami samuwa a gare mu waɗanda ke da amfani wajen haɓaka aikace-aikacen mu. Sun haɗa da gwajin naúrar, gwajin haɗin kai, da yadda suke aiki tare don yin babban gwajin lokacin gudu. Gwaje-gwaje suna da sauƙi don gudana akan buƙata ko a cikin tsarin CI ku.

Pulumi - buɗaɗɗen software, kyauta don amfani da aiki tare da yarukan shirye-shirye da kuka fi so da gajimare - gwada shi a yau!

Kashi na farko

source: www.habr.com

Add a comment