අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා ඩොකර් හි ක්ෂුද්‍ර සේවා ස්වයංක්‍රීයව පරීක්ෂා කිරීම

ක්ෂුද්‍ර සේවා ගෘහ නිර්මාණ ශිල්පය සංවර්ධනයට අදාළ ව්‍යාපෘති වලදී, CI/CD ප්‍රසන්න අවස්ථාවක් යන කාණ්ඩයේ සිට හදිසි අවශ්‍යතා කාණ්ඩයට මාරු වේ. ස්වයංක්‍රීය පරීක්ෂණය යනු අඛණ්ඩ ඒකාබද්ධතාවයේ අනිවාර්ය අංගයක් වන අතර, කණ්ඩායමට පවුලේ අය සහ මිතුරන් සමඟ ප්‍රසන්න සන්ධ්‍යාවක් ලබා දිය හැකි දක්ෂ ප්‍රවේශයකි. එසේ නොමැති නම්, ව්‍යාපෘතිය කිසි විටෙකත් අවසන් නොවන අවදානමක් ඇත.

ව්‍යාජ වස්තූන් සමඟ ඒකක පරීක්ෂණ සමඟ සම්පූර්ණ ක්ෂුද්‍ර සේවා කේතය ආවරණය කළ හැකිය, නමුත් මෙය ගැටළුව අර්ධ වශයෙන් පමණක් විසඳන අතර බොහෝ ප්‍රශ්න සහ දුෂ්කරතා ඉතිරි කරයි, විශේෂයෙන් දත්ත සමඟ වැඩ පරීක්ෂා කිරීමේදී. සෑම විටම, වඩාත්ම වැදගත් ඒවා වන්නේ සම්බන්ධතා දත්ත ගබඩාවක දත්ත අනුකූලතාව පරීක්ෂා කිරීම, වලාකුළු සේවා සමඟ වැඩ පරීක්ෂා කිරීම සහ ව්‍යාජ වස්තු ලිවීමේදී වැරදි උපකල්පන සිදු කිරීමයි.

ඩොකර් කන්ටේනරයක සම්පූර්ණ ක්ෂුද්‍ර සේවාව පරීක්ෂා කිරීමෙන් මේ සියල්ල සහ තව ටිකක් විසඳිය හැකිය. පරීක්ෂණ වල වලංගු භාවය සහතික කිරීම සඳහා නිසැක වාසියක් වන්නේ නිෂ්පාදනයට යන එකම Docker පින්තූර පරීක්ෂා කිරීමයි.

මෙම ප්‍රවේශයේ ස්වයංක්‍රීයකරණය ගැටළු ගණනාවක් ඉදිරිපත් කරයි, ඒවාට විසඳුම පහත විස්තර කෙරේ:

  • එකම ඩොකර් ධාරකයේ සමාන්තර කාර්යයන් වල ගැටුම්;
  • පරීක්ෂණ පුනරාවර්තන අතරතුර දත්ත සමුදායේ හඳුනාගැනීමේ ගැටුම්;
  • ක්ෂුද්ර සේවා සූදානම් වන තෙක් බලා සිටීම;
  • බාහිර පද්ධති වෙත ලඝු-සටහන් ඒකාබද්ධ කිරීම සහ ප්රතිදානය කිරීම;
  • පිටතට යන HTTP ඉල්ලීම් පරීක්ෂා කිරීම;
  • වෙබ් සොකට් පරීක්ෂාව (SignalR භාවිතයෙන්);
  • OAuth සත්‍යාපනය සහ අවසරය පරීක්ෂා කිරීම.

මෙම ලිපිය පදනම් වී ඇත මගේ කථාව SECR 2019 දී. ඉතින් කියවන්න කම්මැලි අයට, මෙන්න කතාවේ පටිගත කිරීමක්.

අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා ඩොකර් හි ක්ෂුද්‍ර සේවා ස්වයංක්‍රීයව පරීක්ෂා කිරීම

මෙම ලිපියෙන් මම ඔබට කියන්නම්, පරීක්‍ෂණය යටතේ සේවාව ක්‍රියාත්මක කිරීමට ස්ක්‍රිප්ට් එකක් භාවිතා කරන්නේ කෙසේද, දත්ත සමුදායක් සහ ඩොකර් හි ඇමේසන් ඒඩබ්ලිව්එස් සේවාවන්, පසුව තැපැල්කරු පිළිබඳ පරීක්ෂණ සහ ඒවා අවසන් වූ පසු, සාදන ලද බහාලුම් නවත්වා මකා දමන්න. කේතය වෙනස් වන සෑම අවස්ථාවකම පරීක්ෂණ ක්රියාත්මක වේ. මේ ආකාරයෙන්, අපි සෑම අනුවාදයක්ම AWS දත්ත සමුදාය සහ සේවාවන් සමඟ නිවැරදිව ක්‍රියා කරන බවට සහතික වෙමු.

එකම ස්ක්‍රිප්ට් එක සංවර්ධකයින් විසින්ම ඔවුන්ගේ වින්ඩෝස් ඩෙස්ක්ටොප් මත සහ ලිනක්ස් යටතේ ඇති ගිට්ලැබ් සීඅයි සේවාදායකය විසින් ධාවනය කරයි.

යුක්තිසහගත කිරීම සඳහා, නව පරීක්ෂණ හඳුන්වා දීම සඳහා සංවර්ධකයාගේ පරිගණකයේ හෝ පරීක්ෂණ සිදු කරන සේවාදායකයේ අමතර මෙවලම් ස්ථාපනය කිරීම අවශ්‍ය නොවේ. Docker මෙම ගැටලුව විසඳයි.

පහත හේතූන් මත පරීක්ෂණය දේශීය සේවාදායකයක් මත ක්‍රියාත්මක විය යුතුය:

  • ජාලය කිසි විටෙකත් සම්පූර්ණයෙන්ම විශ්වාසදායක නොවේ. ඉල්ලීම් දහසක් අතරින් එකක් අසාර්ථක විය හැක;
    මෙම අවස්ථාවේදී, ස්වයංක්රීය පරීක්ෂණය ක්රියා නොකරනු ඇත, වැඩ නතර වනු ඇත, සහ ඔබ ලඝු-සටහන් තුළ හේතුව සොයා බැලීමට සිදු වනු ඇත;
  • සමහර තුන්වන පාර්ශ්ව සේවා මගින් නිතර නිතර ඉල්ලීම්වලට ඉඩ නොදේ.

ඊට අමතරව, ස්ථාවරය භාවිතා කිරීම නුසුදුසු ය, මන්ද:

  • ස්ථාවරයක් බිඳ දැමිය හැක්කේ එය මත ධාවනය වන නරක කේතයෙන් පමණක් නොව, නිවැරදි කේතයට සැකසීමට නොහැකි දත්ත මගින්ද;
  • පරීක්ෂණය අතරතුරදී පරීක්ෂණයෙන් සිදු කරන ලද සියලුම වෙනස්කම් ආපසු හැරවීමට අප කොතරම් උත්සාහ කළත්, යමක් වැරදී යා හැකිය (එසේ නොමැති නම්, පරීක්ෂණයට හේතුව කුමක්ද?).

ව්‍යාපෘතිය සහ ක්‍රියාවලි සංවිධානය ගැන

අපගේ සමාගම Amazon AWS ක්ලවුඩ් හි Docker හි ක්‍රියාත්මක වන microservice වෙබ් යෙදුමක් නිපදවා ඇත. ව්‍යාපෘතියේ ඒකක පරීක්ෂණ දැනටමත් භාවිතා කර ඇත, නමුත් ඒකක පරීක්ෂණ හඳුනා නොගත් දෝෂ බොහෝ විට සිදු විය. දත්ත සමුදාය සහ ඇමසන් සේවාවන් සමඟ සම්පූර්ණ ක්ෂුද්‍ර සේවාවක් පරීක්ෂා කිරීම අවශ්‍ය විය.

ව්‍යාපෘතිය සෑම කැපවීමකින්ම ක්ෂුද්‍ර සේවාව පරීක්ෂා කිරීම ඇතුළත් සම්මත අඛණ්ඩ ඒකාබද්ධ කිරීමේ ක්‍රියාවලියක් භාවිතා කරයි. කාර්යයක් පැවරීමෙන් පසු, සංවර්ධකයා මයික්‍රො සර්විස් වෙත වෙනස්කම් සිදු කරයි, එය අතින් පරීක්ෂා කර ලබා ගත හැකි සියලුම ස්වයංක්‍රීය පරීක්ෂණ ක්‍රියාත්මක කරයි. අවශ්ය නම්, සංවර්ධකයා පරීක්ෂණ වෙනස් කරයි. ගැටළු කිසිවක් සොයාගත නොහැකි නම්, මෙම ගැටලුවේ ශාඛාව වෙත කැපවීමක් සිදු කරනු ලැබේ. එක් එක් කැපවීමෙන් පසු, පරීක්ෂණ ස්වයංක්‍රීයව සේවාදායකයේ ක්‍රියාත්මක වේ. පොදු ශාඛාවකට ඒකාබද්ධ කිරීම සහ එය මත ස්වයංක්‍රීය පරීක්ෂණ දියත් කිරීම සාර්ථක සමාලෝචනයකින් පසුව සිදු වේ. හවුල් ශාඛාවේ පරීක්ෂණ සමත් වුවහොත්, Amazon Elastic Container Service (bench) හි පරීක්ෂණ පරිසරය තුළ සේවාව ස්වයංක්‍රීයව යාවත්කාලීන වේ. සියලුම සංවර්ධකයින් සහ පරීක්ෂකයින් සඳහා ස්ථාවරය අවශ්‍ය වන අතර එය බිඳ දැමීම සුදුසු නොවේ. මෙම පරිසරයේ සිටින පරීක්ෂකයින් අතින් පරීක්ෂණ සිදු කිරීමෙන් නිවැරදි කිරීමක් හෝ නව විශේෂාංගයක් පරීක්ෂා කරයි.

ව්යාපෘති ගෘහ නිර්මාණ ශිල්පය

අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා ඩොකර් හි ක්ෂුද්‍ර සේවා ස්වයංක්‍රීයව පරීක්ෂා කිරීම

යෙදුම සේවා දහයකට වඩා වැඩි ගණනකින් සමන්විත වේ. ඒවායින් සමහරක් .NET Core වලින් සහ සමහරක් NodeJs වලින් ලියා ඇත. සෑම සේවාවක්ම ඇමේසන් ඉලාස්ටික් බහාලුම් සේවාවේ ඩොකර් කන්ටේනරයක ක්‍රියාත්මක වේ. සෑම එකක්ම තමන්ගේම Postgres දත්ත සමුදායක් ඇති අතර සමහරක් Redis ද ඇත. පොදු දත්ත සමුදායන් නොමැත. සේවා කිහිපයකට එකම දත්ත අවශ්‍ය නම්, මෙම දත්ත, එය වෙනස් වූ විට, SNS (සරල දැනුම්දීම් සේවාව) සහ SQS (Amazon Simple Poeue Service) හරහා මෙම එක් එක් සේවාව වෙත සම්ප්‍රේෂණය වන අතර, සේවා එය ඔවුන්ගේම වෙනම දත්ත සමුදායන් තුළ සුරකියි.

SQS සහ SNS

SQS ඔබට HTTPS ප්‍රොටෝකෝලය භාවිතයෙන් පෝලිමකට පණිවිඩ තැබීමට සහ පෝලිමේ සිට පණිවිඩ කියවීමට ඔබට ඉඩ සලසයි.

සේවා කිහිපයක් එක් පෝලිමක් කියවන්නේ නම්, සෑම පණිවිඩයක්ම පැමිණෙන්නේ ඉන් එකකට පමණි. ඔවුන් අතර බර බෙදා හැරීම සඳහා එකම සේවාවේ අවස්ථා කිහිපයක් ධාවනය කරන විට මෙය ප්රයෝජනවත් වේ.

ඔබට සෑම පණිවිඩයක්ම බහුවිධ සේවා වෙත බෙදා හැරීමට අවශ්‍ය නම්, සෑම ලබන්නාටම තමන්ගේම පෝලිමක් තිබිය යුතු අතර, පණිවිඩ බහු පෝලිම්වලට අනුපිටපත් කිරීමට SNS අවශ්‍ය වේ.

SNS හි ඔබ මාතෘකාවක් සාදා එයට දායක වන්න, උදාහරණයක් ලෙස, SQS පෝලිමක්. ඔබට මාතෘකාවට පණිවිඩ යැවිය හැක. මෙම අවස්ථාවේදී, මෙම මාතෘකාවට දායක වූ සෑම පෝලිමකටම පණිවිඩය යවනු ලැබේ. SNS හට පණිවිඩ කියවීම සඳහා ක්‍රමයක් නොමැත. දෝශ නිරාකරණය කිරීමේදී හෝ පරීක්ෂා කිරීමේදී ඔබට SNS වෙත යවන ලද දේ සොයා ගැනීමට අවශ්‍ය නම්, ඔබට SQS පෝලිමක් සාදා, අවශ්‍ය මාතෘකාවට එය දායක වී පෝලිම කියවන්න.

අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා ඩොකර් හි ක්ෂුද්‍ර සේවා ස්වයංක්‍රීයව පරීක්ෂා කිරීම

API ද්වාරය

බොහෝ සේවාවන් අන්තර්ජාලයෙන් සෘජුවම ප්‍රවේශ විය නොහැක. ප්‍රවේශය API Gateway හරහා වන අතර එය ප්‍රවේශ අයිතීන් පරීක්ෂා කරයි. මෙයද අපගේ සේවාව වන අතර ඒ සඳහාද පරීක්ෂණ ඇත.

තත්‍ය කාලීන දැනුම්දීම්

යෙදුම භාවිතා කරයි සිග්නල් ආර්පරිශීලකයාට තත්‍ය කාලීන දැනුම්දීම් පෙන්වීමට. මෙය දැනුම් දීමේ සේවාව තුළ ක්රියාත්මක වේ. එය අන්තර්ජාලයෙන් සෘජුවම ප්‍රවේශ විය හැකි අතර OAuth සමඟම ක්‍රියා කරයි, මක්නිසාද යත් OAuth සහ දැනුම් දීමේ සේවාව ඒකාබද්ධ කිරීමට සාපේක්ෂව වෙබ් සොකට් සඳහා ගේට්වේ වෙත ආධාරකයක් ගොඩනැගීම ප්‍රායෝගික නොවන බැවිනි.

සුප්රසිද්ධ පරීක්ෂණ ප්රවේශය

ඒකක පරීක්ෂණ දත්ත සමුදාය වැනි දේවල් ආදර්ශ වස්තූන් සමඟ ප්‍රතිස්ථාපනය කරයි. උදාහරණයක් ලෙස, microservice එකක් විදේශීය යතුරක් සහිත වගුවක වාර්තාවක් සෑදීමට උත්සාහ කරන්නේ නම් සහ එම යතුර මගින් යොමු කර ඇති වාර්තාව නොපවතී නම්, ඉල්ලීම ක්‍රියාත්මක කළ නොහැක. ඒකක පරීක්ෂණ මගින් මෙය හඳුනාගත නොහැක.

В Microsoft වෙතින් ලිපිය මතකයේ ඇති දත්ත සමුදායක් භාවිතා කිරීමට සහ ව්‍යාජ වස්තු ක්‍රියාත්මක කිරීමට යෝජනා කෙරේ.

In-memory දත්ත සමුදාය යනු ආයතන රාමුව මගින් සහාය දක්වන DBMS වලින් එකකි. එය පරීක්ෂා කිරීම සඳහා විශේෂයෙන් නිර්මාණය කරන ලදී. එවැනි දත්ත සමුදායක දත්ත ගබඩා කරනු ලබන්නේ එය භාවිතා කරන ක්‍රියාවලිය අවසන් වන තුරු පමණි. එයට වගු සෑදීම අවශ්‍ය නොවන අතර දත්ත අඛණ්ඩතාව පරීක්ෂා නොකරයි.

ව්‍යාජ වස්තු ඔවුන් ප්‍රතිස්ථාපනය කරන පන්තිය ආකෘති කරන්නේ එය ක්‍රියා කරන ආකාරය පරීක්ෂණ සංවර්ධකයාට වැටහෙන ප්‍රමාණයට පමණි.

ඔබ පරීක්ෂණයක් ක්‍රියාත්මක කරන විට පෝස්ට්ග්‍රෙස් ස්වයංක්‍රීයව ආරම්භ කිරීම සහ සංක්‍රමණයන් සිදු කරන්නේ කෙසේද යන්න Microsoft ලිපියේ සඳහන් කර නොමැත. මගේ විසඳුම මෙය සිදු කරන අතර, ඊට අමතරව, මයික්‍රො සර්විස් වෙතම පරීක්ෂණ සඳහා විශේෂිත කේතයක් එක් නොකරයි.

අපි විසඳුම වෙත යමු

සංවර්ධන ක්‍රියාවලියේදී, සියලු ගැටලු කාලෝචිත ලෙස සොයා ගැනීමට ඒකක පරීක්ෂණ ප්‍රමාණවත් නොවන බව පැහැදිලි විය, එබැවින් මෙම ගැටළුව වෙනත් කෝණයකින් ප්‍රවේශ කිරීමට තීරණය විය.

පරීක්ෂණ පරිසරයක් සැකසීම

පළමු කාර්යය වන්නේ පරීක්ෂණ පරිසරයක් යෙදවීමයි. ක්ෂුද්‍ර සේවාවක් ක්‍රියාත්මක කිරීමට අවශ්‍ය පියවර:

  • දේශීය පරිසරය සඳහා පරීක්ෂණය යටතේ සේවාව වින්‍යාස කරන්න, පරිසර විචල්‍යයන් තුළ දත්ත සමුදාය සහ AWS වෙත සම්බන්ධ කිරීම සඳහා විස්තර සඳහන් කරන්න;
  • Postgres ආරම්භ කර Liquibase ධාවනය කිරීමෙන් සංක්‍රමණය සිදු කරන්න.
    සම්බන්ධක DBMS වල, දත්ත සමුදායට දත්ත ලිවීමට පෙර, ඔබ දත්ත සැලැස්මක්, වෙනත් වචන වලින්, වගු සෑදිය යුතුය. යෙදුමක් යාවත්කාලීන කරන විට, වගු නව අනුවාදය විසින් භාවිතා කරන ලද පෝරමයට ගෙන යා යුතු අතර, වඩාත් සුදුසු වන්නේ දත්ත අහිමි නොවීමයි. මෙය සංක්රමණය ලෙස හැඳින්වේ. මුලින් හිස් දත්ත ගබඩාවක වගු නිර්මාණය කිරීම සංක්‍රමණයේ විශේෂ අවස්ථාවකි. සංක්‍රමණය යෙදුම තුළම ගොඩනගා ගත හැකිය. .NET සහ NodeJS යන දෙකටම සංක්‍රමණ රාමු ඇත. අපගේ නඩුවේදී, ආරක්ෂක හේතූන් මත, දත්ත ක්‍රමය වෙනස් කිරීමේ අයිතිය ක්ෂුද්‍ර සේවාවලට අහිමි වන අතර, සංක්‍රමණය Liquibase භාවිතයෙන් සිදු කෙරේ.
  • Amazon LocalStack දියත් කරන්න. මෙය නිවසේදී ක්‍රියාත්මක කිරීම සඳහා AWS සේවාවන් ක්‍රියාත්මක කිරීමකි. Docker Hub හි LocalStack සඳහා සූදානම් කළ රූපයක් ඇත.
  • LocalStack හි අවශ්‍ය ආයතන සෑදීමට ස්ක්‍රිප්ට් ධාවනය කරන්න. Shell scripts AWS CLI භාවිතා කරයි.

ව්යාපෘතියේ පරීක්ෂණ සඳහා භාවිතා වේ තැපැල්කරු. එය පෙර පැවති නමුත් එය අතින් දියත් කරන ලද අතර දැනටමත් ස්ථාවරයේ යොදවා ඇති යෙදුමක් පරීක්ෂා කරන ලදී. මෙම මෙවලම ඔබට අත්තනෝමතික HTTP(S) ඉල්ලීම් කිරීමට සහ ප්‍රතිචාර අපේක්ෂාවන්ට ගැළපේදැයි පරීක්ෂා කිරීමට ඉඩ සලසයි. විමසුම් එකතුවක් බවට ඒකාබද්ධ කර ඇති අතර, සම්පූර්ණ එකතුව ධාවනය කළ හැක.

අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා ඩොකර් හි ක්ෂුද්‍ර සේවා ස්වයංක්‍රීයව පරීක්ෂා කිරීම

ස්වයංක්රීය පරීක්ෂණය ක්රියා කරන්නේ කෙසේද?

පරීක්ෂණය අතරතුර, සියල්ල Docker හි ක්‍රියා කරයි: පරීක්ෂණය යටතේ ඇති සේවාව, Postgres, සංක්‍රමණ මෙවලම සහ Postman, හෝ ඒ වෙනුවට එහි කොන්සෝල අනුවාදය - Newman.

ඩොකර් ගැටළු ගණනාවක් විසඳයි:

  • සත්කාරක වින්‍යාසයෙන් ස්වාධීන වීම;
  • පරායත්තතා ස්ථාපනය කිරීම: Docker Docker Hub වෙතින් පින්තූර බාගත කරයි;
  • පද්ධතිය එහි මුල් තත්වයට ගෙන ඒම: හුදෙක් බහාලුම් ඉවත් කිරීම.

ඩොකර්-රචනය බහාලුම් අන්තර්ජාලයෙන් හුදකලා වූ අතථ්‍ය ජාලයකට ඒකාබද්ධ කරයි, එහිදී බහාලුම් වසම් නාම මගින් එකිනෙකා සොයා ගනී.

පරීක්ෂණය පාලනය වන්නේ shell script එකක් මගිනි. වින්ඩෝස් මත පරීක්ෂණය ධාවනය කිරීමට අපි git-bash භාවිතා කරමු. මේ අනුව, වින්ඩෝස් සහ ලිනක්ස් යන දෙකටම එක් ස්ක්‍රිප්ට් එකක් ප්‍රමාණවත් වේ. Git සහ Docker ව්‍යාපෘතියේ සියලුම සංවර්ධකයින් විසින් ස්ථාපනය කර ඇත. Windows වල Git Install කරනකොට git-bash ඉන්ස්ටෝල් වෙන නිසා හැමෝටම ඒකත් තියෙනවා.

ස්ක්‍රිප්ට් පහත පියවරයන් සිදු කරයි:

  • ඩොකර් රූප ගොඩනැගීම
    docker-compose build
  • දත්ත සමුදාය සහ LocalStack දියත් කිරීම
    docker-compose up -d <контейнер>
  • දත්ත සමුදා සංක්‍රමණය සහ LocalStack සකස් කිරීම
    docker-compose run <контейнер>
  • පරීක්ෂණය යටතේ සේවාව දියත් කිරීම
    docker-compose up -d <сервис>
  • පරීක්ෂණය ධාවනය කිරීම (නිව්මන්)
  • සියලුම බහාලුම් නතර කිරීම
    docker-compose down
  • Slack හි ප්‍රතිඵල පළ කිරීම
    හරිත සලකුණු සලකුණක් හෝ රතු කුරුසයක් සහ ලොගය වෙත සබැඳියක් සහිත පණිවිඩ යන සංවාදයක් අපට ඇත.

පහත Docker පින්තූර මෙම පියවරයන් සඳහා සම්බන්ධ වේ:

  • පරීක්ෂා කරනු ලබන සේවාව නිෂ්පාදනය සඳහා සමාන රූපයකි. පරීක්ෂණය සඳහා වින්යාසය පරිසර විචල්යයන් හරහා වේ.
  • Postgres, Redis සහ LocalStack සඳහා, Docker Hub වෙතින් සූදානම් කළ රූප භාවිතා වේ. Liquibase සහ Newman සඳහා සූදානම් කළ රූප ද ඇත. අපි අපේ ඒවා ඔවුන්ගේ ඇටසැකිල්ල මත ගොඩනඟා, අපගේ ලිපිගොනු එහි එකතු කරමු.
  • LocalStack සකස් කිරීම සඳහා, ඔබ සූදානම් කළ AWS CLI රූපයක් භාවිතා කර එය මත පදනම් වූ ස්ක්‍රිප්ට් එකක් සහිත රූපයක් සාදන්න.

භාවිතා කිරීම වෙළුම්, කන්ටේනරයට ගොනු එක් කිරීමට පමණක් ඔබට ඩොකර් රූපයක් තැනීමට අවශ්‍ය නැත. කෙසේ වෙතත්, Gitlab CI කර්තව්‍යයන් බහාලුම්වල ක්‍රියාත්මක වන බැවින් වෙළුම් අපගේ පරිසරයට සුදුසු නොවේ. ඔබට එවැනි බහාලුමකින් ඩොකර් පාලනය කළ හැක, නමුත් වෙළුම් ෆෝල්ඩර සවිකරන්නේ ධාරක පද්ධතියෙන් මිස වෙනත් බහාලුමකින් නොවේ.

ඔබට ඇතිවිය හැකි ගැටළු

සූදානම සඳහා බලා සිටීම

සේවාවක් සහිත බහාලුමක් ක්‍රියාත්මක වන විට, එය සම්බන්ධතා පිළිගැනීමට සූදානම් බව මින් අදහස් නොවේ. සම්බන්ධතාවය දිගටම පවතින තෙක් ඔබ බලා සිටිය යුතුය.

මෙම ගැටළුව සමහර විට ස්ක්‍රිප්ට් භාවිතයෙන් විසඳනු ලැබේ ඉන්න-for-it.sh, TCP සම්බන්ධතාවයක් ස්ථාපිත කිරීමට අවස්ථාවක් බලා සිටින. කෙසේ වෙතත්, LocalStack 502 Bad Gateway දෝෂයක් ඇති කළ හැකිය. ඊට අමතරව, එය බොහෝ සේවාවන්ගෙන් සමන්විත වන අතර, ඔවුන්ගෙන් එක් අයෙකු සූදානම් නම්, මෙය අනෙක් අය ගැන කිසිවක් නොකියයි.

තීරණය: SQS සහ SNS යන දෙකෙන්ම 200 ප්‍රතිචාරයක් සඳහා රැඳී සිටින LocalStack ප්‍රතිපාදන ස්ක්‍රිප්ට්.

සමාන්තර කාර්ය ගැටුම්

බහුවිධ පරීක්ෂණ එකම ඩොකර් ධාරකය මත එකවර ක්‍රියාත්මක විය හැක, එබැවින් බහාලුම් සහ ජාල නාමයන් අනන්‍ය විය යුතුය. එපමණක් නොව, එකම සේවාවේ විවිධ ශාඛා වලින් පරීක්ෂණ ද එකවර ක්‍රියාත්මක විය හැකි බැවින්, එක් එක් රචනා ගොනුවේ ඔවුන්ගේ නම් ලිවීම ප්‍රමාණවත් නොවේ.

තීරණය: ස්ක්‍රිප්ට් COMPOSE_PROJECT_NAME විචල්‍යය අද්විතීය අගයකට සකසයි.

වින්ඩෝස් විශේෂාංග

වින්ඩෝස් මත ඩොකර් භාවිතා කිරීමේදී මට පෙන්වා දීමට අවශ්‍ය කරුණු ගණනාවක් ඇත, මන්ද මෙම අත්දැකීම් දෝෂ ඇතිවන්නේ මන්දැයි තේරුම් ගැනීමට වැදගත් වේ.

  1. කන්ටේනරයක ඇති Shell scripts වල Linux line endings තිබිය යුතුය.
    shell CR සංකේතය සින්ටැක්ස් දෝෂයකි. එරර් මැසේජ් එකෙන් කියන්න අමාරුයි එහෙමයි කියලා. වින්ඩෝස් හි එවැනි ස්ක්‍රිප්ට් සංස්කරණය කිරීමේදී, ඔබට නිසි පෙළ සංස්කාරකයක් අවශ්‍ය වේ. මීට අමතරව, අනුවාද පාලන පද්ධතිය නිසි ලෙස වින්යාසගත කළ යුතුය.

git වින්‍යාස කරන්නේ මෙහෙමයි.

git config core.autocrlf input

  1. Git-bash සම්මත ලිනක්ස් ෆෝල්ඩර අනුකරණය කරන අතර, exe ගොනුවක් ඇමතීමේ දී (docker.exe ඇතුළුව), නිරපේක්ෂ Linux මාර්ග වින්ඩෝස් මාර්ග සමඟ ප්‍රතිස්ථාපනය කරයි. කෙසේ වෙතත්, දේශීය යන්ත්‍රයේ (හෝ බහාලුම්වල ඇති මාර්ග) නොවන මාර්ග සඳහා මෙය අර්ථවත් නොවේ. මෙම හැසිරීම අක්රිය කළ නොහැක.

තීරණය: මාර්ගයේ ආරම්භයට අමතර slash එකක් එක් කරන්න: /bin වෙනුවට //bin. ලිනක්ස් එවැනි මාර්ග තේරුම් ගනී; ඒ සඳහා, ස්ලැෂ් කිහිපයක් එකකට සමාන වේ. නමුත් git-bash එවැනි මාර්ග හඳුනා නොගන්නා අතර ඒවා පරිවර්තනය කිරීමට උත්සාහ නොකරයි.

ලොග් ප්‍රතිදානය

පරීක්ෂණ ක්‍රියාත්මක කරන විට, මම Newman සහ සේවාව යන දෙකෙන්ම ලොග පරීක්ෂා කරනු දැකීමට කැමතියි. මෙම ලඝු-සටහන් වල සිදුවීම් එකිනෙකට සම්බන්ධ වී ඇති බැවින්, ඒවා එක් කොන්සෝලයක ඒකාබද්ධ කිරීම වෙනම ගොනු දෙකකට වඩා පහසු වේ. නිව්මන් විසින් දියත් කරයි docker-compose ධාවනය, සහ එම නිසා එහි ප්රතිදානය කොන්සෝලය තුළ අවසන් වේ. ඉතිරිව ඇත්තේ සේවාවේ ප්‍රතිදානය ද එහි යන බවට වග බලා ගැනීමයි.

කළ යුතු මුල් විසඳුම විය docker- රචනා කරන්න කොඩිය නැත -d, නමුත් shell හැකියාවන් භාවිතා කරමින්, මෙම ක්‍රියාවලිය පසුබිමට යවන්න:

docker-compose up <service> &

Docker වෙතින් තෙවන පාර්ශවීය සේවාවකට ලඝු-සටහන් යැවීමට අවශ්‍ය වන තෙක් මෙය ක්‍රියාත්මක විය. docker- රචනා කරන්න කොන්සෝලයට ලොග් ප්‍රතිදානය කිරීම නැවැත්තුවා. කෙසේ වෙතත්, කණ්ඩායම වැඩ කළා docker ඇමුණුම.

තීරණය:

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

පරීක්ෂණ පුනරාවර්තන අතරතුර හඳුනාගැනීමේ ගැටුම

පරීක්ෂණ පුනරාවර්තන කිහිපයකින් සිදු කෙරේ. දත්ත සමුදාය ඉවත් කර නැත. දත්ත සමුදායේ ඇති වාර්තා වලට අනන්‍ය ID ඇත. අපි ඉල්ලීම්වල නිශ්චිත හැඳුනුම්පත් ලියා ඇත්නම්, දෙවන පුනරාවර්තනයේදී අපට ගැටුමක් ඇති වේ.

එය වළක්වා ගැනීම සඳහා, එක්කෝ ID අනන්‍ය විය යුතුය, නැතහොත් පරීක්ෂණයෙන් සාදන ලද සියලුම වස්තූන් මකා දැමිය යුතුය. අවශ්‍යතා නිසා සමහර වස්තු මකා දැමිය නොහැක.

තීරණය: Postman ස්ක්‍රිප්ට් භාවිතයෙන් GUID ජනනය කරන්න.

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

ඉන්පසු විමසුමේ ඇති සංකේතය භාවිතා කරන්න {{myUUID}}, විචල්‍යයේ අගය සමඟ ප්‍රතිස්ථාපනය වනු ඇත.

LocalStack හරහා සහයෝගීතාවය

පරීක්ෂා කරනු ලබන සේවාව SQS පෝලිමකට කියවීම හෝ ලිවීම සිදු කරන්නේ නම්, මෙය සත්‍යාපනය කිරීමට, පරීක්ෂණයම මෙම පෝලිම සමඟද ක්‍රියා කළ යුතුය.

තීරණය: Postman වෙතින් LocalStack වෙත ඉල්ලීම්.

AWS සේවා API ලේඛනගත කර ඇති අතර, SDK එකක් නොමැතිව විමසීම් කිරීමට ඉඩ සලසයි.

සේවාවක් පෝලිමකට ලියන්නේ නම්, අපි එය කියවා පණිවිඩයේ අන්තර්ගතය පරීක්ෂා කරන්නෙමු.

සේවාව SNS වෙත පණිවිඩ යවන්නේ නම්, සූදානම් වීමේ අදියරේදී LocalStack ද පෝලිමක් සාදා මෙම SNS මාතෘකාවට දායක වේ. එවිට ඒ සියල්ල ඉහත විස්තර කර ඇති දේට පැමිණේ.

සේවාවට පෝලිමෙන් පණිවිඩයක් කියවීමට අවශ්‍ය නම්, පෙර පරීක්ෂණ පියවරේදී අපි මෙම පණිවිඩය පෝලිමට ලියන්නෙමු.

පරීක්‍ෂණය යටතේ පවතින ක්ෂුද්‍ර සේවාවෙන් ආරම්භ වන HTTP ඉල්ලීම් පරීක්‍ෂා කිරීම

සමහර සේවාවන් AWS හැර වෙනත් දෙයක් සමඟ HTTP හරහා ක්‍රියා කරයි, සමහර AWS විශේෂාංග LocalStack තුළ ක්‍රියාත්මක නොවේ.

තීරණය: මෙම අවස්ථා වලදී එය උපකාර විය හැක MockServer, එහි සූදානම් කළ රූපයක් ඇත ඩෝකර් හබ්. අපේක්ෂිත ඉල්ලීම් සහ ඒවාට ප්‍රතිචාර HTTP ඉල්ලීමක් මඟින් වින්‍යාස කර ඇත. API ලේඛනගත කර ඇත, එබැවින් අපි Postman වෙතින් ඉල්ලීම් කරන්නෙමු.

OAuth සත්‍යාපනය සහ අවසරය පරීක්ෂා කිරීම

අපි OAuth භාවිතා කරමු සහ JSON වෙබ් ටෝකන (JWT). පරීක්ෂණයට අපට දේශීයව ධාවනය කළ හැකි OAuth සපයන්නෙකු අවශ්‍ය වේ.

සේවාව සහ OAuth සපයන්නා අතර ඇති සියලුම අන්තර්ක්‍රියා ඉල්ලීම් දෙකකට පැමිණේ: පළමුව, වින්‍යාසය ඉල්ලා ඇත /.හොඳින් දන්නා/විවෘත-වින්‍යාසය, පසුව වින්‍යාසයෙන් ලිපිනයෙන් පොදු යතුර (JWKS) ඉල්ලා ඇත. මේ සියල්ල ස්ථිතික අන්තර්ගතයකි.

තීරණය: අපගේ පරීක්ෂණ OAuth සපයන්නා ස්ථිතික අන්තර්ගත සේවාදායකයක් සහ එහි ඇති ගොනු දෙකකි. ටෝකනය වරක් උත්පාදනය කර Git වෙත කැපවී ඇත.

SignalR පරීක්ෂණයේ විශේෂාංග

තැපැල්කරු වෙබ් සොකට් සමඟ වැඩ නොකරයි. SignalR පරීක්ෂා කිරීම සඳහා විශේෂ මෙවලමක් නිර්මාණය කරන ලදී.

SignalR සේවාලාභියෙකු බ්‍රවුසරයකට වඩා වැඩි විය හැක. .NET Core යටතේ ඒ සඳහා සේවාදායක පුස්තකාලයක් ඇත. .NET Core හි ලියා ඇති සේවාදායකයා, සම්බන්ධතාවයක් ස්ථාපිත කරයි, සත්‍යාපනය කර, නිශ්චිත පණිවිඩ අනුපිළිවෙලක් බලා සිටියි. අනපේක්ෂිත පණිවිඩයක් ලැබුණහොත් හෝ සම්බන්ධතාවය නැති වුවහොත්, සේවාලාභියා 1 කේතයක් සමඟින් පිටවෙයි. අවසාන අපේක්ෂිත පණිවිඩය ලැබුණේ නම්, සේවාදායකයා පිටවන්නේ 0 කේතයකිනි.

Newman සේවාලාභියා සමඟ එකවර වැඩ කරයි. පණිවිඩ අවශ්‍ය සෑම කෙනෙකුටම ලබා දෙන්නේ දැයි පරීක්ෂා කිරීමට සේවාදායකයින් කිහිප දෙනෙකු දියත් කරනු ලැබේ.

අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා ඩොකර් හි ක්ෂුද්‍ර සේවා ස්වයංක්‍රීයව පරීක්ෂා කිරීම

බහු සේවාදායකයන් ධාවනය කිරීමට විකල්පය භාවිතා කරන්න --පරිමාණ docker-compose විධාන රේඛාව මත.

ධාවනය කිරීමට පෙර, Postman ස්ක්‍රිප්ට් සියලු සේවාලාභීන් සම්බන්ධතා ඇති කර ගන්නා තෙක් බලා සිටී.
සම්බන්ධතාවයක් සඳහා රැඳී සිටීමේ ගැටලුව අප දැනටමත් මුහුණ දී ඇත. නමුත් සේවාදායකයන් තිබුණි, මෙන්න සේවාදායකයා. වෙනස් ප්රවේශයක් අවශ්ය වේ.

තීරණය: කන්ටේනරයේ සේවාදායකයා යාන්ත්රණය භාවිතා කරයි සෞඛ්‍ය පරීක්ෂාවධාරකයෙහි ස්ක්‍රිප්ටයට එහි තත්ත්වය පිළිබඳව දැනුම් දීමට. සේවාලාභියා සම්බන්ධතාවය ස්ථාපිත වූ විගස, /healthcheck කියන්න, නිශ්චිත මාර්ගයක ගොනුවක් නිර්මාණය කරයි. ඩොකර් ගොනුවේ ඇති HealthCheck ස්ක්‍රිප්ටය මේ ආකාරයට පෙනේ:

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

කණ්ඩායම ඩොකර් පරීක්ෂා කිරීම බහාලුම් සඳහා සාමාන්‍ය තත්ත්වය, සෞඛ්‍ය තත්ත්වය සහ පිටවීමේ කේතය පෙන්වයි.

Newman සම්පූර්ණ කිරීමෙන් පසුව, 0 කේතය සමඟ, සේවාදායකයා සමඟ ඇති සියලුම බහාලුම් අවසන් වී ඇත්දැයි ස්ක්‍රිප්ට් පරීක්ෂා කරයි.

හැපින්ස් පවතී

ඉහත විස්තර කර ඇති දුෂ්කරතා මඟහරවා ගත් පසු, අපට ස්ථාවර ධාවන පරීක්ෂණ මාලාවක් තිබුණි. පරීක්ෂණ වලදී, සෑම සේවාවක්ම තනි ඒකකයක් ලෙස ක්‍රියා කරයි, දත්ත සමුදාය සහ Amazon LocalStack සමඟ අන්තර් ක්‍රියා කරයි.

මෙම පරීක්ෂණ 30+ සංවර්ධකයින් කණ්ඩායමක් නිතර යෙදවීම් සහිත 10+ ක්ෂුද්‍ර සේවා සංකීර්ණ අන්තර්ක්‍රියා සහිත යෙදුමක දෝෂ වලින් ආරක්ෂා කරයි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න