புலுமியுடன் உள்கட்டமைப்பைக் குறியீடாகச் சோதனை செய்தல். பகுதி 2

அனைவருக்கும் வணக்கம். கட்டுரையின் இறுதிப் பகுதியை இன்று உங்களுடன் பகிர்ந்து கொள்கிறோம். "புலுமியுடன் உள்கட்டமைப்பைக் குறியீடாகச் சோதனை செய்தல்", இதன் மொழிபெயர்ப்பு பாடநெறி மாணவர்களுக்காக குறிப்பாக தயாரிக்கப்பட்டது "DevOps நடைமுறைகள் மற்றும் கருவிகள்".

புலுமியுடன் உள்கட்டமைப்பைக் குறியீடாகச் சோதனை செய்தல். பகுதி 2

வரிசைப்படுத்தல் சோதனை

சோதனையின் இந்த பாணி ஒரு சக்திவாய்ந்த அணுகுமுறை மற்றும் எங்கள் உள்கட்டமைப்பு குறியீட்டின் உள் செயல்பாடுகளைச் சோதிக்க வெள்ளை பெட்டி சோதனையை மேற்கொள்ள அனுமதிக்கிறது. இருப்பினும், நாம் சோதிக்கக்கூடியவற்றை இது ஓரளவு கட்டுப்படுத்துகிறது. உண்மையான வரிசைப்படுத்தலுக்கு முன் புலுமி உருவாக்கிய நினைவகத்தில் உள்ள வரிசைப்படுத்தல் திட்டத்தின் அடிப்படையில் சோதனைகள் செய்யப்படுகின்றன, எனவே வரிசைப்படுத்தலையே சோதிக்க முடியாது. இதுபோன்ற சந்தர்ப்பங்களில், புலுமி ஒரு ஒருங்கிணைப்பு சோதனை கட்டமைப்பைக் கொண்டுள்ளது. இந்த இரண்டு அணுகுமுறைகளும் ஒன்றாக வேலை செய்கின்றன!

புலுமி ஒருங்கிணைப்பு சோதனைக் கட்டமைப்பு Go இல் எழுதப்பட்டுள்ளது, இதுவே எங்கள் பெரும்பாலான உள் குறியீட்டைச் சோதிக்கிறது. முன்னர் விவாதிக்கப்பட்ட அலகு சோதனை அணுகுமுறை வெள்ளை பெட்டி சோதனை போன்றது என்றாலும், ஒருங்கிணைப்பு சோதனை ஒரு கருப்பு பெட்டியாகும். (கடுமையான உள் சோதனைக்கான விருப்பங்களும் உள்ளன.) இந்த கட்டமைப்பானது ஒரு முழுமையான புலுமி நிரலை எடுத்து, புதிதாக ஒரு புதிய அடுக்கை வரிசைப்படுத்துதல், மாறுபாடுகளுடன் புதுப்பித்தல் மற்றும் பலமுறை நீக்குதல் போன்ற பல்வேறு வாழ்க்கைச் சுழற்சி செயல்பாடுகளைச் செய்ய உருவாக்கப்பட்டது. . நாங்கள் அவற்றை தவறாமல் (உதாரணமாக, இரவில்) மற்றும் மன அழுத்த சோதனைகளாக இயக்குகிறோம்.

(நாங்கள் நாங்கள் அதில் வேலை செய்கிறோம், அதனால் ஒரே மாதிரியான ஒருங்கிணைப்பு சோதனை திறன்கள் மொழிகளின் சொந்த SDK இல் கிடைக்கும். உங்கள் புலுமி நிரல் எந்த மொழியில் எழுதப்பட்டிருந்தாலும், Go ஒருங்கிணைப்பு சோதனை கட்டமைப்பைப் பயன்படுத்தலாம்).

இந்த கட்டமைப்பைப் பயன்படுத்தி நிரலை இயக்குவதன் மூலம், பின்வருவனவற்றைச் சரிபார்க்கலாம்:

  • உங்கள் திட்டக் குறியீடு தொடரியல் ரீதியாக சரியானது மற்றும் பிழைகள் இல்லாமல் இயங்குகிறது.
  • ஸ்டேக் மற்றும் சீக்ரெட்ஸ் உள்ளமைவு அமைப்புகள் செயல்படுகின்றன மற்றும் சரியாக விளக்கப்படுகின்றன.
  • நீங்கள் விரும்பும் கிளவுட் வழங்குநரில் உங்கள் திட்டத்தை வெற்றிகரமாக செயல்படுத்த முடியும்.
  • உங்கள் திட்டம் ஆரம்ப நிலையில் இருந்து N பிற மாநிலங்களுக்கு வெற்றிகரமாக மேம்படுத்தப்படலாம்.
  • உங்கள் திட்டம் வெற்றிகரமாக அழிக்கப்பட்டு உங்கள் கிளவுட் வழங்குநரிடமிருந்து அகற்றப்படலாம்.

நாம் விரைவில் பார்ப்பது போல, இந்த கட்டமைப்பை இயக்க நேர சரிபார்ப்பைச் செய்யவும் பயன்படுத்தலாம்.

எளிய ஒருங்கிணைப்பு சோதனை

இதை செயலில் காண, களஞ்சியத்தைப் பார்ப்போம் pulumi/examples, எங்கள் குழுவும் புலுமி சமூகமும் எங்களின் சொந்த இழுக்கும் கோரிக்கைகள், கமிட்கள் மற்றும் இரவு கட்டங்களைச் சோதிக்க இதைப் பயன்படுத்துகிறது.

எங்களின் எளிமையான சோதனை கீழே உள்ளது S3 பக்கெட் மற்றும் வேறு சில பொருட்களை வழங்கும் உதாரணம்:

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,
        },
    })
}

இந்தச் சோதனையானது ஒரு கோப்புறைக்கான அடுக்கை உருவாக்குதல், மாற்றியமைத்தல் மற்றும் அழிப்பது போன்ற அடிப்படை வாழ்க்கைச் சுழற்சியில் செல்கிறது aws-js-s3-folder. தேர்ச்சி பெற்ற தேர்வைப் புகாரளிக்க ஒரு நிமிடம் ஆகும்:

$ go test .
PASS
ok      ... 43.993s

இந்த சோதனைகளின் நடத்தையை தனிப்பயனாக்க பல விருப்பங்கள் உள்ளன. விருப்பங்களின் முழு பட்டியலையும் பார்க்கவும். கட்டமைப்பில் ProgramTestOptions. எடுத்துக்காட்டாக, நீங்கள் ஜாகர் எண்ட்பாயிண்ட்டை டிரேஸ் செய்ய உள்ளமைக்கலாம் (Tracing), சோதனை எதிர்மறையாக இருந்தால் சோதனை தோல்வியடையும் என்று நீங்கள் எதிர்பார்க்கிறீர்கள் என்பதைக் குறிக்கவும் (ExpectFailure), மாநிலங்களின் வரிசை மாற்றத்திற்கான திட்டத்திற்கு தொடர்ச்சியான "திருத்தங்கள்" பயன்படுத்தவும் (EditDirs) இன்னும் பற்பல. உங்கள் பயன்பாட்டு வரிசைப்படுத்தலைச் சோதிக்க அவற்றை எவ்வாறு பயன்படுத்துவது என்பதைப் பார்ப்போம்.

வள பண்புகளை சரிபார்க்கிறது

மேலே விவாதிக்கப்பட்ட ஒருங்கிணைப்பு எங்கள் நிரல் "செயல்படுகிறது" என்பதை உறுதி செய்கிறது - அது செயலிழக்கவில்லை. ஆனால் விளைந்த அடுக்கின் பண்புகளை நாம் சரிபார்க்க விரும்பினால் என்ன செய்வது? எடுத்துக்காட்டாக, சில வகையான வளங்கள் வழங்கப்பட்டுள்ளன (அல்லது இல்லை) மற்றும் அவை சில பண்புகளைக் கொண்டுள்ளன.

அளவுரு ExtraRuntimeValidation செய்ய ProgramTestOptions புலுமியால் பதிவுசெய்யப்பட்ட வரிசைப்படுத்தலுக்குப் பிந்தைய நிலையைப் பார்க்க அனுமதிக்கிறது, எனவே நாம் கூடுதல் சோதனைகளைச் செய்யலாம். உள்ளமைவு, ஏற்றுமதி செய்யப்பட்ட வெளியீட்டு மதிப்புகள், அனைத்து வளங்கள் மற்றும் அவற்றின் சொத்து மதிப்புகள் மற்றும் வளங்களுக்கு இடையிலான அனைத்து சார்புகள் உட்பட, விளைந்த அடுக்கின் நிலையின் முழுமையான ஸ்னாப்ஷாட் இதில் அடங்கும்.

இதற்கான அடிப்படை உதாரணத்தைப் பார்க்க, நமது புரோகிராம் ஒன்றை உருவாக்குகிறதா என்று பார்க்கலாம் S3 பக்கெட்:

  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")
        },
    })

இப்போது, ​​நாம் கோ சோதனையை இயக்கும் போது, ​​அது பேட்டரியின் லைஃப்சைக்கிள் சோதனைகள் மூலம் செல்வது மட்டுமல்லாமல், அடுக்கை வெற்றிகரமாக வரிசைப்படுத்திய பிறகு, அது விளைந்த நிலையில் கூடுதல் சரிபார்ப்பைச் செய்யும்.

இயக்க நேர சோதனைகள்

இதுவரை, அனைத்து சோதனைகளும் வரிசைப்படுத்தல் நடத்தை மற்றும் புலுமி வள மாதிரியைப் பற்றியது. உங்களுக்கு வழங்கப்பட்ட உள்கட்டமைப்பு உண்மையில் செயல்படுகிறதா என்பதை நீங்கள் சரிபார்க்க விரும்பினால் என்ன செய்வது? எடுத்துக்காட்டாக, மெய்நிகர் இயந்திரம் இயங்குகிறது, S3 பக்கெட் நாம் எதிர்பார்ப்பது மற்றும் பலவற்றைக் கொண்டுள்ளது.

இதை எப்படி செய்வது என்று நீங்கள் ஏற்கனவே யூகித்திருக்கலாம்: விருப்பம் ExtraRuntimeValidation செய்ய ProgramTestOptions - இது ஒரு சிறந்த வாய்ப்பு. இந்த கட்டத்தில், உங்கள் நிரலின் வளங்களின் முழு நிலைக்கான அணுகலுடன் தனிப்பயன் Go சோதனையை இயக்குகிறீர்கள். இந்த நிலையில் மெய்நிகர் இயந்திரத்தின் IP முகவரிகள், URLகள் மற்றும் அதன் விளைவாக வரும் கிளவுட் பயன்பாடுகள் மற்றும் உள்கட்டமைப்புடன் உண்மையில் தொடர்புகொள்வதற்குத் தேவையான அனைத்தும் போன்ற தகவல்கள் அடங்கும்.

எடுத்துக்காட்டாக, எங்கள் சோதனைத் திட்டம் சொத்தை ஏற்றுமதி செய்கிறது webEndpoint வாளி என்று websiteUrl, இது முழு URL ஆகும், அங்கு நாம் உள்ளமைக்கப்பட்டதைப் பெறலாம் index document. கண்டுபிடிக்க மாநில கோப்பை தோண்டலாம் என்றாலும் bucket மற்றும் அந்த சொத்தை நேரடியாகப் படிக்கவும், ஆனால் பல சமயங்களில் எங்கள் அடுக்குகள் இது போன்ற பயனுள்ள பண்புகளை ஏற்றுமதி செய்கின்றன.

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!")
        },
    })

எங்களின் முந்தைய இயக்க நேரச் சரிபார்ப்புகளைப் போலவே, இந்தச் சரிபார்ப்பும் அடுக்கை உயர்த்தியவுடன் உடனடியாகச் செயல்படுத்தப்படும், இவை அனைத்தும் ஒரு எளிய அழைப்புக்குப் பதிலளிக்கும் வகையில் go test. அது பனிப்பாறையின் முனை மட்டுமே - நீங்கள் குறியீட்டில் எழுதக்கூடிய ஒவ்வொரு கோ சோதனை அம்சமும் கிடைக்கிறது.

தொடர்ச்சியான உள்கட்டமைப்பு ஒருங்கிணைப்பு

குறியீட்டு மதிப்பாய்வுக்கு அவற்றைச் சமர்ப்பிப்பதற்கு முன்பு அவற்றைச் சோதிக்க நிறைய உள்கட்டமைப்பு மாற்றங்கள் செய்யப்படும்போது லேப்டாப்பில் சோதனைகளை இயக்குவது நல்லது. ஆனால் நாமும் எங்கள் வாடிக்கையாளர்களில் பலர் வளர்ச்சி வாழ்க்கைச் சுழற்சியின் பல்வேறு கட்டங்களில் உள்கட்டமைப்பைச் சோதிக்கிறோம்:

  • ஒன்றிணைக்கும் முன் சோதனைக்கான ஒவ்வொரு திறந்த இழுக்கும் கோரிக்கையிலும்.
  • ஒவ்வொரு உறுதிப்பாட்டிற்கும் பதிலளிக்கும் விதமாக, ஒன்றிணைப்பு சரியாக செய்யப்பட்டதா என்பதை இருமுறை சரிபார்க்கவும்.
  • கூடுதல் சோதனைக்காக இரவு அல்லது வாரந்தோறும் அவ்வப்போது.
  • செயல்திறன் அல்லது அழுத்த சோதனையின் ஒரு பகுதியாக, இது பொதுவாக நீண்ட காலத்திற்கு இயங்குகிறது மற்றும் சோதனைகளை இணையாக இயக்குகிறது மற்றும்/அல்லது ஒரே நிரலை பல முறை பயன்படுத்துகிறது.

இவை ஒவ்வொன்றிற்கும், உங்களுக்கு பிடித்த தொடர்ச்சியான ஒருங்கிணைப்பு அமைப்புடன் ஒருங்கிணைப்பை புலுமி ஆதரிக்கிறது. தொடர்ச்சியான ஒருங்கிணைப்புடன், இது உங்கள் பயன்பாட்டு மென்பொருளுக்கான அதே சோதனைக் கவரேஜை உங்கள் உள்கட்டமைப்புக்கும் வழங்குகிறது.

பொதுவான CI அமைப்புகளுக்கு புலுமி ஆதரவு உள்ளது. அவற்றில் சில இங்கே:

மேலும் விரிவான தகவலுக்கு, அதற்கான ஆவணங்களைப் பார்க்கவும் தொடர்ச்சியான டெலிவரி.

எபிமரல் சூழல்கள்

ஏற்றுக்கொள்ளும் சோதனை நோக்கங்களுக்காக மட்டுமே இடைக்கால சூழல்களை வரிசைப்படுத்தும் திறன் திறக்கும் மிகவும் சக்திவாய்ந்த வாய்ப்பாகும். கருத்து திட்டங்கள் மற்றும் அடுக்குகள் முற்றிலும் தனிமைப்படுத்தப்பட்ட மற்றும் சுதந்திரமான சூழல்களை, ஒரு சில எளிய CLI கட்டளைகளில் அல்லது ஒரு ஒருங்கிணைப்பு சோதனை கட்டமைப்பைப் பயன்படுத்தி, எளிதாக வரிசைப்படுத்தவும் மற்றும் சிதைக்கவும் புலுமி வடிவமைக்கப்பட்டுள்ளது.

நீங்கள் GitHub ஐப் பயன்படுத்தினால், Pulumi வழங்குகிறது கிட்ஹப் ஆப், இது உங்கள் CI பைப்லைனுக்குள் கோரிக்கைகளை இழுக்க ஏற்றுக்கொள்ளும் சோதனையை இணைக்க உதவும். GitHub களஞ்சியத்தில் பயன்பாட்டை நிறுவினால் போதும், உங்கள் CI மற்றும் பூல் கோரிக்கைகளில் உள்கட்டமைப்பு மாதிரிக்காட்சிகள், புதுப்பிப்புகள் மற்றும் சோதனை முடிவுகள் பற்றிய தகவல்களை Pulumi சேர்க்கும்:

புலுமியுடன் உள்கட்டமைப்பைக் குறியீடாகச் சோதனை செய்தல். பகுதி 2

உங்கள் முக்கிய ஏற்புச் சோதனைகளுக்கு புலுமியைப் பயன்படுத்தும்போது, ​​குழுவின் உற்பத்தித் திறனை மேம்படுத்தும் மற்றும் உங்கள் மாற்றங்களின் தரத்தில் நம்பிக்கையைத் தரும் புதிய ஆட்டோமேஷன் திறன்களைப் பெறுவீர்கள்.

இதன் விளைவாக

இந்த கட்டுரையில், பொது நோக்கத்திற்கான நிரலாக்க மொழிகளைப் பயன்படுத்துவதன் மூலம், பல மென்பொருள் மேம்பாட்டு நுட்பங்கள் நமக்குக் கிடைக்கின்றன, அவை எங்கள் பயன்பாடுகளை உருவாக்க பயனுள்ளதாக இருக்கும். அவை அலகு சோதனை, ஒருங்கிணைப்பு சோதனை மற்றும் விரிவான இயக்க நேர சோதனையைச் செய்ய அவை எவ்வாறு இணைந்து செயல்படுகின்றன. சோதனைகள் தேவைக்கேற்ப அல்லது உங்கள் CI அமைப்பில் இயங்குவது எளிது.

புலுமி - திறந்த மூல மென்பொருள், பயன்படுத்த இலவசம் மற்றும் உங்களுக்கு பிடித்த நிரலாக்க மொழிகள் மற்றும் மேகங்களுடன் வேலை செய்கிறது - இன்று முயற்சி செய்!

முதல் பகுதி

ஆதாரம்: www.habr.com

கருத்தைச் சேர்