Firebase CLI-তে একটি Cloud Functions এমুলেটর রয়েছে যা নিম্নলিখিত ধরণের ফাংশন অনুকরণ করতে পারে:
- HTTPS ফাংশন
- কলযোগ্য ফাংশন
- টাস্ক কিউ ফাংশন
- Firebase Authentication , Realtime Database , Cloud Firestore , Cloud Storage , সমর্থিত ফায়ারবেস অ্যালার্ট এবং ক্লাউড পাব/সাব থেকে ব্যাকগ্রাউন্ড ফাংশনগুলো সক্রিয় হয়।
প্রোডাকশনে ডেপ্লয় করার আগে ফাংশনগুলো পরীক্ষা করার জন্য আপনি সেগুলোকে লোকালি রান করতে পারেন।
Firebase CLI ইনস্টল করুন
Cloud Functions এমুলেটর ব্যবহার করতে, প্রথমে ফায়ারবেস সিএলআই ইনস্টল করুন:
npm install -g firebase-tools
স্থানীয় এমুলেটর ব্যবহার করার জন্য, আপনার Cloud Functions অবশ্যই নিম্নলিখিত বিষয়গুলোর উপর নির্ভর করতে হবে:
-
firebase-adminসংস্করণ8.0.0বা উচ্চতর। -
firebase-functionsসংস্করণ3.0.0বা উচ্চতর।
অ্যাডমিন পরিচয়পত্র সেট করুন (ঐচ্ছিক)
আপনি যদি আপনার ফাংশন টেস্টগুলোকে Firebase Admin SDK- এর মাধ্যমে Google API বা অন্যান্য Firebase API-এর সাথে সংযুক্ত করতে চান, তাহলে আপনাকে অ্যাডমিন ক্রেডেনশিয়াল সেট আপ করতে হতে পারে।
- Cloud Firestore এবং Realtime Database ট্রিগারগুলিতে ইতিমধ্যেই পর্যাপ্ত ক্রেডেনশিয়াল রয়েছে, এবং এগুলোর জন্য অতিরিক্ত সেটআপের প্রয়োজন নেই ।
- ফায়ারবেস এপিআই (যেমন Authentication ও FCM বা গুগল এপিআই (যেমন ক্লাউড ট্রান্সলেশন বা ক্লাউড স্পিচ) সহ অন্যান্য সমস্ত এপিআই-এর জন্য এই বিভাগে বর্ণিত সেটআপ ধাপগুলি অনুসরণ করতে হবে। আপনি Cloud Functions শেল বা
firebase emulators:startব্যবহার করুন না কেন, এটি প্রযোজ্য।
অনুকৃত ফাংশনগুলির জন্য অ্যাডমিন পরিচয়পত্র সেট আপ করতে:
- Google Cloud কনসোলের সার্ভিস অ্যাকাউন্টস প্যানেটি খুলুন।
- নিশ্চিত করুন যে App Engine ডিফল্ট সার্ভিস অ্যাকাউন্টটি নির্বাচিত আছে, এবং ডানদিকের অপশন মেনু ব্যবহার করে ‘Create key’ নির্বাচন করুন।
- নির্দেশিত হলে, কী টাইপ হিসেবে JSON নির্বাচন করুন এবং Create-এ ক্লিক করুন।
আপনার গুগল ডিফল্ট ক্রেডেনশিয়াল এমনভাবে সেট করুন যাতে তা ডাউনলোড করা কী-টির দিকে নির্দেশ করে:
ইউনিক্স
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
উইন্ডোজ
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
এই ধাপগুলো সম্পন্ন করার পর, আপনার ফাংশন টেস্টগুলো অ্যাডমিন এসডিকে ব্যবহার করে ফায়ারবেস এবং গুগল এপিআই অ্যাক্সেস করতে পারবে। উদাহরণস্বরূপ, একটি Authentication ট্রিগার পরীক্ষা করার সময়, এমুলেটেড ফাংশনটি admin.auth().getUserByEmail(email) কল করতে পারে।
ফাংশন কনফিগারেশন সেট আপ করুন (ঐচ্ছিক)
আপনি যদি কাস্টম ফাংশন কনফিগারেশন ভেরিয়েবল ব্যবহার করেন, তাহলে প্রথমে আপনার স্থানীয় পরিবেশে functions ডিরেক্টরির মধ্যে থেকে কাস্টম কনফিগারেশনটি পেতে কমান্ডটি চালান:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
এমুলেটর স্যুটটি চালান
Cloud Functions এমুলেটরটি চালানোর জন্য, emulators:start কমান্ডটি ব্যবহার করুন:
firebase emulators:start
` emulators:start কমান্ডটি আপনার লোকাল প্রজেক্টে firebase init ব্যবহার করে ইনিশিয়ালাইজ করা প্রোডাক্টগুলোর উপর ভিত্তি করে Cloud Functions , `Cloud Firestore`, `Realtime Database`, এবং `Firebase Hosting`-এর এমুলেটরগুলো চালু করবে। আপনি যদি কোনো নির্দিষ্ট এমুলেটর চালু করতে চান, তাহলে ` --only ফ্ল্যাগটি ব্যবহার করুন:
firebase emulators:start --only functions
এমুলেটরগুলো চালু হওয়ার পর যদি আপনি কোনো টেস্ট স্যুট বা টেস্টিং স্ক্রিপ্ট চালাতে চান, তাহলে emulators:exec কমান্ডটি ব্যবহার করুন:
firebase emulators:exec "./my-test.sh"
এমুলেটরগুলোর সাথে যোগাযোগ করার জন্য আপনার অ্যাপটিকে প্রয়োজনীয় সরঞ্জাম দিয়ে সজ্জিত করুন।
আপনার অ্যাপকে এমুলেটরগুলোর সাথে ইন্টারঅ্যাক্ট করার উপযোগী করতে, আপনাকে কিছু অতিরিক্ত কনফিগারেশন করতে হতে পারে।
কলযোগ্য ফাংশনগুলোর জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন।
আপনার প্রোটোটাইপ এবং পরীক্ষা কার্যক্রমে যদি কলযোগ্য ব্যাকএন্ড ফাংশন অন্তর্ভুক্ত থাকে, তাহলে Cloud Functions for Firebase এমুলেটরের সাথে ইন্টারঅ্যাকশনটি এইভাবে কনফিগার করুন:
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
সুইফট
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
আপনার অ্যাপে HTTPS ফাংশন অনুকরণের ব্যবস্থা করুন।
আপনার কোডের প্রতিটি HTTPS ফাংশন স্থানীয় এমুলেটর থেকে নিম্নলিখিত URL ফর্ম্যাট ব্যবহার করে পরিবেশিত হবে:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
উদাহরণস্বরূপ, ডিফল্ট হোস্ট পোর্ট এবং অঞ্চল সহ একটি সাধারণ helloWorld ফাংশন এখানে পরিবেশিত হবে:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
টাস্ক কিউ ফাংশন অনুকরণের জন্য আপনার অ্যাপটিকে সজ্জিত করুন।
এমুলেটরটি ট্রিগার ডেফিনিশনের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে এমুলেটেড টাস্ক কিউ তৈরি করে, এবং অ্যাডমিন SDK যদি CLOUD_TASKS_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে এমুলেটরটি চালু আছে বলে শনাক্ত করে, তবে এটি কিউতে থাকা অনুরোধগুলিকে এমুলেটরের দিকে পুনঃনির্দেশিত করে।
মনে রাখবেন যে প্রোডাকশনে ব্যবহৃত ডিসপ্যাচ সিস্টেমটি এমুলেটরে প্রয়োগ করা সিস্টেমের চেয়ে বেশি জটিল, তাই এমুলেটেড আচরণ প্রোডাকশন পরিবেশের হুবহু প্রতিচ্ছবি হবে এমনটা আশা করা উচিত নয়। এমুলেটরের ভেতরের প্যারামিটারগুলো টাস্ক ডিসপ্যাচ এবং রিট্রাই করার হারের ঊর্ধ্বসীমা নির্ধারণ করে দেয়।
ব্যাকগ্রাউন্ডে চালিত ফাংশন অনুকরণের জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন।
Cloud Functions এমুলেটর নিম্নলিখিত উৎসগুলো থেকে ব্যাকগ্রাউন্ড-ট্রিগারড ফাংশন সমর্থন করে:
- Realtime Database এমুলেটর
- Cloud Firestore এমুলেটর
- Authentication এমুলেটর
- Pub/Sub এমুলেটর
- ফায়ারবেস অ্যালার্ট এমুলেটর
ব্যাকগ্রাউন্ড ইভেন্ট চালু করতে, Emulator Suite UI ব্যবহার করে ব্যাক-এন্ড রিসোর্স পরিবর্তন করুন, অথবা আপনার প্ল্যাটফর্মের SDK ব্যবহার করে আপনার অ্যাপ বা টেস্ট কোডকে এমুলেটরগুলোর সাথে সংযুক্ত করুন।
এক্সটেনশন দ্বারা নির্গত কাস্টম ইভেন্টগুলির জন্য টেস্ট হ্যান্ডলার
Cloud Functions v2 ব্যবহার করে Firebase Extensions কাস্টম ইভেন্টগুলো পরিচালনা করার জন্য আপনি যে ফাংশনগুলো প্রয়োগ করেন, সেগুলোর Cloud Functions এমুলেটরটি ইভেন্টআর্ক ট্রিগার সমর্থন করার জন্য ইভেন্টআর্ক এমুলেটরের সাথে যুক্ত হয়।
যেসব এক্সটেনশন ইভেন্ট নির্গত করে, সেগুলোর কাস্টম ইভেন্ট হ্যান্ডলার পরীক্ষা করার জন্য আপনাকে অবশ্যই Cloud Functions এবং ইভেন্টআর্ক এমুলেটর ইনস্টল করতে হবে।
ইভেন্টআর্ক এমুলেটর চালু থাকলে, Cloud Functions রানটাইম বর্তমান প্রসেসে EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবলটিকে localhost:9299 এ সেট করে। EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবলটি সেট করা থাকলে Firebase Admin SDK স্বয়ংক্রিয়ভাবে ইভেন্টআর্ক এমুলেটরের সাথে সংযুক্ত হয়। Local Emulator Suite কনফিগার করুন’ অংশে আলোচিত পদ্ধতি অনুযায়ী আপনি ডিফল্ট পোর্টটি পরিবর্তন করতে পারেন।
যখন এনভায়রনমেন্ট ভেরিয়েবলগুলো সঠিকভাবে কনফিগার করা থাকে, তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরে ইভেন্ট পাঠায়। এর ফলে, Eventarc এমুলেটরটি যেকোনো রেজিস্টার্ড হ্যান্ডলারকে ট্রিগার করার জন্য Cloud Functions এমুলেটরকে একটি কলব্যাক করে।
হ্যান্ডলার এক্সিকিউশনের বিস্তারিত জানতে আপনি Emulator Suite UI তে ফাংশন লগগুলো দেখতে পারেন।
অন্যান্য পরিষেবার সাথে মিথস্ক্রিয়া
এমুলেটর স্যুটে একাধিক এমুলেটর রয়েছে, যা বিভিন্ন পণ্যের মধ্যকার পারস্পরিক ক্রিয়া পরীক্ষা করতে সক্ষম করে।
Cloud Firestore
আপনার যদি এমন কোনো ফাংশন থাকে যা Cloud Firestore লেখার জন্য ফায়ারবেস অ্যাডমিন এসডিকে ব্যবহার করে, তবে সেই লেখাগুলো Cloud Firestore এমুলেটরে পাঠানো হবে, যদি সেটি চালু থাকে। যদি সেই লেখাগুলোর দ্বারা আরও কোনো ফাংশন চালু হয়, তবে সেগুলো Cloud Functions এমুলেটরে চালানো হবে।
Cloud Storage
আপনার যদি এমন কোনো ফাংশন থাকে যা Cloud Storage লেখার জন্য ফায়ারবেস অ্যাডমিন এসডিকে (সংস্করণ ৯.৭.০ বা তার বেশি) ব্যবহার করে, তবে সেই লেখাগুলো Cloud Storage এমুলেটরে পাঠানো হবে, যদি সেটি চালু থাকে। যদি সেই লেখাগুলোর দ্বারা আরও কোনো ফাংশন চালু হয়, তবে সেগুলো Cloud Functions এমুলেটরে চালানো হবে।
Firebase Authentication
আপনার যদি এমন কোনো ফাংশন থাকে যা Firebase Authentication এ লেখার জন্য Firebase Admin SDK (সংস্করণ 9.3.0 বা তার বেশি) ব্যবহার করে, তবে সেই লেখাগুলো Auth emulator চালু থাকলে সেখানে পাঠানো হবে। যদি সেই লেখাগুলোর দ্বারা আরও কোনো ফাংশন ট্রিগার হয়, তবে সেগুলো Cloud Functions emulator-এ চালানো হবে।
ফায়ারবেস হোস্টিং
আপনি যদি Firebase Hosting জন্য ডায়নামিক কন্টেন্ট তৈরি করতে Cloud Functions ব্যবহার করেন, তাহলে firebase emulators:start আপনার স্থানীয় HTTP ফাংশনগুলোকে হোস্টিং-এর প্রক্সি হিসেবে ব্যবহার করে।
ফায়ারবেস সতর্কতা
যে কোনো প্রজেক্টে যদি অন্তত একটি সমর্থিত ফায়ারবেস অ্যালার্ট ট্রিগার থাকে, তাহলে এমুলেটর UI-তে একটি FireAlerts ট্যাব অন্তর্ভুক্ত থাকে। একটি অ্যালার্ট ট্রিগার এমুলেট করতে:
- FireAlerts ট্যাবটি খুলুন। এই ট্যাবে একটি ড্রপডাউন প্রদর্শিত হয়, যেখানে সেইসব অ্যালার্টের ধরনগুলো থাকে যেগুলোর সাথে ট্রিগার যুক্ত আছে (উদাহরণস্বরূপ, যদি আপনার onNewFatalIssuePublished ট্রিগার থাকে, তাহলে crashlytics.newFatalIssue প্রদর্শিত হবে)।
- একটি অ্যালার্টের ধরণ নির্বাচন করুন। ফর্মটি ডিফল্ট মান দিয়ে স্বয়ংক্রিয়ভাবে পূরণ হয়ে যায়, যা সম্পাদনা করা যায়। আপনি ইভেন্টের ফিল্ডগুলো সম্পাদনা করতে পারেন (অ্যালার্ট ইভেন্টের অন্যান্য তথ্য হয় অনুমান করা, নকল মান, অথবা এলোমেলোভাবে তৈরি করা হয়)।
- ফাংশন এমুলেটরে একটি সিন্থেটিক অ্যালার্ট পাঠাতে 'Send Alert' নির্বাচন করুন, যার লগিং Firebase কনসোলের ' Alerts ' অংশে (এবং লগগুলিতেও) উপলব্ধ থাকবে।
লগিং
এমুলেটরটি আপনার ফাংশনগুলো থেকে লগগুলো সেই টার্মিনাল উইন্ডোতে স্ট্রিম করে যেখানে সেগুলো চলে। এটি আপনার ফাংশনের ভেতরের console.log() , console.info() , console.error() , এবং console.warn() স্টেটমেন্টগুলোর সমস্ত আউটপুট প্রদর্শন করে।
পরবর্তী পদক্ষেপ
ফায়ারবেস এমুলেটর স্যুট ব্যবহারের একটি পূর্ণাঙ্গ উদাহরণের জন্য, টেস্টিং কুইকস্টার্ট স্যাম্পলটি দেখুন।