Firebase CLI-তে একটি Cloud Functions এমুলেটর থাকে যা নিম্নলিখিত ফাংশনের ধরন এমুলেট করতে পারে:
- HTTPS ফাংশন
- কল করা যায় এমন ফাংশন
- টাস্কের সারি সংক্রান্ত ফাংশন
- Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, Firebase-এর বিজ্ঞপ্তি যা কাজ করে, এবং Cloud Pub/Sub থেকে ট্রিগার করা ব্যাকগ্রাউন্ড ফাংশন।
প্রোডাকশনে ডেপ্লয় করার আগে, আপনি ফাংশন লোকালি রান করে সেগুলি পরীক্ষা করতে পারবেন।
Firebase CLI ইনস্টল করা
আপনার প্রোজেক্ট ফাইল যোগ করলে, এটি দ্রুত শুরু করার একটি সুবিধাজনক বিকল্প হয়ে ওঠে।Cloud Functions এমুলেটর ব্যবহার করতে, প্রথমে Firebase CLI ইনস্টল করুন:
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-এর মতো Firebase API অথবা Cloud Translation বা Cloud Speech-এর মতো Google API সহ অন্যান্য সব API-এর জন্য এই বিভাগে বর্ণিত সেট-আপ ধাপগুলি প্রয়োজন। আপনি Cloud Functions শেল বা
firebase emulators:startযাই ব্যবহার করুন না কেন, এটি প্রযোজ্য।
ইমুলেটেড ফাংশনের জন্য অ্যাডমিন ক্রেডেনশিয়াল সেট-আপ করতে:
- Google Cloud কনসোলের পরিষেবা অ্যাকাউন্ট প্যান খুলুন।
- App Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট বেছে নেওয়া হয়েছে কিনা তা নিশ্চিত করুন এবং ডানদিকে বিকল্প মেনু থেকে কী তৈরি করুন বিকল্প বেছে নিন।
- প্রম্পট করা হলে, কী ধরনের জন্য JSON বেছে নিন এবং তৈরি করুন বিকল্পে ক্লিক করুন।
ডাউনলোড করা কীয়ের দিকে পয়েন্ট করার জন্য আপনার Google ডিফল্ট ক্রেডেনশিয়াল সেট করুন:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
জানলা
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
এইসব ধাপ সম্পূর্ণ করার পরে, আপনার ফাংশন টেস্ট অ্যাডমিন SDK ব্যবহার করে Firebase এবং
Google API অ্যাক্সেস করতে পারবে। যেমন, কোনও 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 কমান্ডটি Cloud Functions,
Cloud Firestore, রিয়েলটাইম ডেটাবেস এবং Firebase হোস্টিংয়ের উপর ভিত্তি করে
আপনার লোকাল প্রোজেক্টে firebase
init ব্যবহার করে আপনি যে প্রোডাক্ট ইনিশিয়ালাইজ করেছেন সেগুলির জন্য এমুলেটর চালু করবে। আপনি কোনও নির্দিষ্ট ইমুলেটর চালু করতে চাইলে, --only ফ্ল্যাগ ব্যবহার করুন:
firebase emulators:start --only functions
ইমুলেটর চালু হওয়ার পরে আপনি যদি কোনও টেস্ট স্যুট বা টেস্টিং স্ক্রিপ্ট রান করতে চান, তাহলে emulators:exec কমান্ড ব্যবহার করুন:
firebase emulators:exec "./my-test.sh"
স্টার্ট-আপের পরে, এমুলেটর আপনার ফাংশন থেকে লগ স্ট্রিম করে সেই টার্মিনাল
উইন্ডোতে পাঠায় যেখানে এটি রান করে। এটি আপনার ফাংশনের মধ্যে console.log(),
console.info(), console.error() এবং console.warn() স্টেটমেন্ট থেকে
সব আউটপুট দেখায়।
মনে রাখবেন, এমুলেটর আউটপুট ডিফল্ট হিসেবে একটি নির্দিষ্ট
অঞ্চলে (us-central1) ফাংশন ডিপ্লয় করাকে সিমুলেট করে যা আসল প্রোডাকশন ডিপ্লয়মেন্টের ডিফল্ট
অঞ্চলের সাথে নাও মিলতে পারে। অঞ্চল সম্পর্কে আরও
তথ্য পেতে Cloud Functions লোকেশন দেখুন।
ইমুলেটরের সাথে কথা বলার জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করা
ইমুলেটরের সাথে ইন্টার্যাক্ট করার জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করতে, আপনাকে হয়ত কিছু অতিরিক্ত কনফিগারেশন করতে হবে।
কল করা যায় এমন ফাংশনের জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করা
আপনার প্রোটোটাইপ ও পরীক্ষা অ্যাক্টিভিটিতে কল করা যায় এমন ব্যাকএন্ড ফাংশন থাকলে, 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);
Swift
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Unity
ব্যবহার করতে হবে।FirebaseFunctions functions = FirebaseFunctions.DefaultInstance; // Connects to the Functions Emulator running on port 5001 functions.UseFunctionsEmulator("http://127.0.0.1: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 ইমুলেটর
- Firebase অ্যালার্ট এমুলেটর
ব্যাকগ্রাউন্ড ইভেন্ট ট্রিগার করতে, আপনার প্ল্যাটফর্মের জন্য SDK ব্যবহার করে Emulator Suite UI অথবা আপনার অ্যাপ বা টেস্ট কোডকে এমুলেটরের সাথে কানেক্ট করে ব্যাক-এন্ড রিসোর্স পরিবর্তন করুন।
এক্সটেনশন থেকে নির্গত কাস্টম ইভেন্টের জন্য টেস্ট হ্যান্ডলার
Cloud Functions v2-এর সাথে Firebase Extensions কাস্টম ইভেন্ট হ্যান্ডেল করার জন্য আপনি যে ফাংশন প্রয়োগ করেন, Cloud Functions ইমুলেটর Eventarc ট্রিগার কাজ করানোর জন্য Eventarc ইমুলেটরের সাথে পেয়ার করে।
ইভেন্ট এমিট করে এমন এক্সটেনশনের জন্য কাস্টম ইভেন্ট হ্যান্ডলার পরীক্ষা করতে, আপনাকে অবশ্যই Cloud Functions এবং Eventarc এমুলেটর ইনস্টল করতে হবে।
Eventarc এমুলেটর চালু থাকলে, বর্তমান প্রসেসে Cloud Functions রানটাইম EVENTARC_EMULATOR এনভায়রনমেন্ট
ভেরিয়েবলকে localhost:9299 হিসেবে সেট করে। EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে, Firebase Admin SDKs অটোমেটিক Eventarc
এমুলেটরের সাথে কানেক্ট হয়ে যায়। কনফিগার করুন Local Emulator Suite-এর অধীনে আলোচনা করা হয়েছে, সেই অনুযায়ী আপনি
ডিফল্ট পোর্ট পরিবর্তন করতে পারবেন।
এনভায়রনমেন্ট ভেরিয়েবল সঠিকভাবে কনফিগার করা হলে, Firebase Admin SDK Eventarc এমুলেটরে অটোমেটিক ইভেন্ট পাঠায়। এর পরিবর্তে, Eventarc এমুলেটর, রেজিস্টার করা যেকোনও হ্যান্ডলার ট্রিগার করার জন্য Cloud Functions এমুলেটরে কল ব্যাক করে।
আপনি Emulator Suite UI-এ ফাংশন লগ চেক করে হ্যান্ডলার এক্সিকিউশন সম্পর্কে বিস্তারিত জানতে পারবেন।
অন্যান্য পরিষেবার সাথে ইন্টার্যাকশন
ইমুলেটর স্যুটে একাধিক ইমুলেটর থাকে, যা ক্রস-প্রোডাক্ট ইন্টার্যাকশন পরীক্ষা করার সুবিধা দেয়।
Cloud Firestore
আপনার যদি এমন ফাংশন থাকে যা Firebase Admin SDK ব্যবহার করে Cloud Firestore, তাহলে এই লেখাগুলি Cloud Firestore emulator-এ পাঠানো হবে যদি এটি চলছে। সেইসব রাইটের মাধ্যমে আরও ফাংশন ট্রিগার করা হলে, সেগুলি Cloud Functions এমুলেটরে রান করা হবে।
Cloud Storage
আপনার কাছে এমন ফাংশন থাকলে যা Firebase Admin SDK (ভার্সন 9.7.0 বা তার পরের যেকোনও ভার্সন) ব্যবহার করে Cloud Storage-এ লেখে, তাহলে সেগুলি Cloud Storage এমুলেটরে পাঠানো হবে যদি সেটি চলছে। সেইসব রাইটের মাধ্যমে আরও ফাংশন ট্রিগার করা হলে, সেগুলি Cloud Functions এমুলেটরে রান করা হবে।
Firebase Authentication
আপনার কাছে এমন ফাংশন থাকলে যা Firebase Admin SDK (ভার্সন 9.3.0 বা এর পরের যেকোনও ভার্সন) ব্যবহার করে Firebase Authentication-এ লেখে, তাহলে এটি চালু থাকলে, এই লেখাগুলি Auth এমুলেটরে পাঠানো হবে। সেইসব রাইটের মাধ্যমে আরও ফাংশন ট্রিগার করা হলে, সেগুলি Cloud Functions এমুলেটরে রান করা হবে।
Firebase হোস্টিং
আপনি যদি Cloud Functions ব্যবহার করে ডায়নামিক কন্টেন্ট তৈরি করেন
Firebase Hosting, firebase emulators:start
হোস্টিংয়ের জন্য আপনার লোকাল HTTP ফাংশনকে প্রক্সি হিসেবে ব্যবহার করে।
Firebase সতর্কতা
অন্তত একটি কাজ করে এমন Firebase অ্যালার্ট ট্রিগার আছে এমন যেকোনও প্রোজেক্টে, ইমুলেটর UI-তে একটি FireAlerts ট্যাব থাকে। অ্যালার্ট ট্রিগার এমুলেট করতে:
- FireAlerts ট্যাব খুলুন। এই ট্যাবে, ট্রিগার যুক্ত অ্যালার্টের ধরন সহ একটি ড্রপডাউন দেখানো হয় (যেমন, আপনার কাছে কোনও onNewFatalIssuePublished ট্রিগার থাকলে, crashlytics.newFatalIssue দেখানো হয়)।
- সতর্কতার ধরন বেছে নিন। ফর্মটি ডিফল্ট ভ্যালু দিয়ে অটো-ফিল হয়, যা এডিট করা যায়। আপনি ইভেন্টের ফিল্ড এডিট করতে পারবেন (সতর্কতা ইভেন্ট থেকে পাওয়া অন্যান্য তথ্য হয় অনুমান করা, মক ভ্যালু অথবা এলোমেলোভাবে তৈরি করা হয়)।
- ফাংশন এমুলেটরে সিন্থেটিক অ্যালার্ট পাঠাতে, অ্যালার্ট পাঠান বিকল্প বেছে নিন। Firebase কনসোলে অ্যালার্ট বিকল্পে লগ উপলভ্য আছে (লগেও উপলভ্য আছে)।
পরবর্তী ধাপ
Firebase এমুলেটর স্যুট ব্যবহারের সম্পূর্ণ উদাহরণের জন্য, পরীক্ষা সংক্রান্ত কুইকস্টার্ট স্যাম্পেল দেখুন।