স্থানীয়ভাবে ফাংশন চালান

ফায়ারবেস সিএলআই-তে একটি Cloud Functions এমুলেটর রয়েছে যা নিম্নলিখিত ফাংশন প্রকারগুলিকে অনুকরণ করতে পারে:

  • HTTPS ফাংশন
  • কলযোগ্য ফাংশন
  • টাস্ক কিউ ফাংশন
  • Firebase Authentication , Realtime Database , Cloud Firestore , Cloud Storage , সমর্থিত ফায়ারবেস অ্যালার্ট এবং ক্লাউড পাব/সাব থেকে ব্যাকগ্রাউন্ড ফাংশনগুলি ট্রিগার করা হয়েছে।

প্রোডাকশনে স্থাপনের আগে আপনি স্থানীয়ভাবে ফাংশনগুলি পরীক্ষা করতে পারেন।

ফায়ারবেস সিএলআই ইনস্টল করুন

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 ট্রিগারগুলিতে ইতিমধ্যেই পর্যাপ্ত শংসাপত্র রয়েছে এবং অতিরিক্ত সেটআপের প্রয়োজন হয় না
  • অন্যান্য সকল API, যার মধ্যে রয়েছে Firebase API যেমন Authentication এবং FCM অথবা Google API যেমন Cloud Translation বা Cloud Speech, এই বিভাগে বর্ণিত সেটআপ ধাপগুলি প্রয়োজন। আপনি Cloud Functions শেল ব্যবহার করুন অথবা firebase emulators:start ব্যবহার করুন, এটি প্রযোজ্য।

অনুকরণ করা ফাংশনের জন্য অ্যাডমিন ক্রেডেনশিয়াল সেট আপ করতে:

  1. Google Cloud কনসোলের সার্ভিস অ্যাকাউন্টস প্যানটি খুলুন।
  2. নিশ্চিত করুন যে App Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট নির্বাচন করা আছে, এবং ডানদিকে বিকল্প মেনু ব্যবহার করে Create key নির্বাচন করুন।
  3. অনুরোধ করা হলে, কী টাইপের জন্য JSON নির্বাচন করুন এবং Create এ ক্লিক করুন।
  4. আপনার Google ডিফল্ট শংসাপত্রগুলি ডাউনলোড করা কী-এর দিকে নির্দেশ করতে সেট করুন:

    ইউনিক্স

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase emulators:start
    

    জানালা

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

এই ধাপগুলি সম্পন্ন করার পর, আপনার ফাংশন পরীক্ষাগুলি Admin 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 কমান্ডটি আপনার স্থানীয় প্রকল্পে firebase init ব্যবহার করে যে পণ্যগুলি শুরু করেছেন তার উপর ভিত্তি করে Cloud Functions , ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস এবং ফায়ারবেস হোস্টিংয়ের জন্য এমুলেটর শুরু করবে। আপনি যদি একটি নির্দিষ্ট এমুলেটর শুরু করতে চান, তাহলে --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 এমুলেটরটি Eventarc ট্রিগারগুলিকে সমর্থন করার জন্য Eventarc এমুলেটরের সাথে যুক্ত হয়।

ইভেন্ট নির্গত করে এমন এক্সটেনশনের জন্য কাস্টম ইভেন্ট হ্যান্ডলার পরীক্ষা করতে, আপনাকে অবশ্যই Cloud Functions এবং ইভেন্টটার্ক এমুলেটর ইনস্টল করতে হবে।

Eventarc এমুলেটর চলমান থাকলে, Cloud Functions রানটাইম বর্তমান প্রক্রিয়ায় EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবলকে localhost:9299 এ সেট করে। EVENTARC_EMULATOR এনভায়রনমেন্ট ভেরিয়েবল সেট করা হলে Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরের সাথে সংযুক্ত হয়। Configure Local Emulator Suite এর অধীনে আলোচনা করা ডিফল্ট পোর্টটি আপনি পরিবর্তন করতে পারেন।

যখন পরিবেশ ভেরিয়েবলগুলি সঠিকভাবে কনফিগার করা হয়, Firebase Admin SDK স্বয়ংক্রিয়ভাবে Eventarc এমুলেটরে ইভেন্ট পাঠায়। পরিবর্তে, Eventarc এমুলেটর যেকোনো নিবন্ধিত হ্যান্ডলারকে ট্রিগার করার জন্য Cloud Functions এমুলেটরে কল ব্যাক করে।

হ্যান্ডলার এক্সিকিউশন সম্পর্কে বিস্তারিত জানতে আপনি Emulator Suite UI তে ফাংশন লগ পরীক্ষা করতে পারেন।

অন্যান্য পরিষেবার সাথে মিথস্ক্রিয়া

এমুলেটর স্যুটে একাধিক এমুলেটর রয়েছে, যা ক্রস-প্রোডাক্ট ইন্টারঅ্যাকশনের পরীক্ষা সক্ষম করে।

Cloud Firestore

যদি আপনার এমন ফাংশন থাকে যা Firebase Admin SDK ব্যবহার করে Cloud Firestore এ লেখার জন্য ব্যবহার করে, তাহলে এই লেখাগুলি Cloud Firestore এমুলেটরে পাঠানো হবে যদি এটি চলমান থাকে। যদি সেই লেখাগুলি দ্বারা আরও ফাংশন ট্রিগার হয়, তাহলে সেগুলি 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 Hosting জন্য গতিশীল কন্টেন্ট তৈরি করতে Cloud Functions ব্যবহার করেন, firebase emulators:start হোস্টিংয়ের জন্য প্রক্সি হিসেবে আপনার স্থানীয় HTTP ফাংশন ব্যবহার করে।

ফায়ারবেস সতর্কতা

যেকোনো প্রকল্পে যেখানে কমপক্ষে একটি সমর্থিত Firebase সতর্কতা ট্রিগার থাকে, এমুলেটর UI-তে একটি FireAlerts ট্যাব থাকে। একটি সতর্কতা ট্রিগার অনুকরণ করতে:

  1. FireAlerts ট্যাবটি খুলুন। এই ট্যাবটি একটি ড্রপডাউন মেনু প্রদর্শন করে যেখানে ট্রিগারগুলির সাথে সম্পর্কিত সতর্কতা প্রকারগুলি পূরণ করা হয় (উদাহরণস্বরূপ, যদি আপনার একটি onNewFatalIssuePublished ট্রিগার থাকে, তাহলে crashlytics.newFatalIssue প্রদর্শিত হয়)।
  2. একটি সতর্কতার ধরণ নির্বাচন করুন। ফর্মটি স্বয়ংক্রিয়ভাবে ডিফল্ট মান দিয়ে পূর্ণ হয়, যা সম্পাদনা করা যেতে পারে। আপনি ইভেন্টের ক্ষেত্রগুলি সম্পাদনা করতে পারেন (সতর্কতা ইভেন্ট থেকে অন্যান্য তথ্য হয় অনুমান করা হয়, নকল মান হয়, অথবা এলোমেলোভাবে তৈরি করা হয়)।
  3. Firebase কনসোলের (এবং লগগুলিতেও) Alerts- এ লগিং উপলব্ধ থাকা ফাংশন এমুলেটরে একটি সিন্থেটিক সতর্কতা পাঠাতে Send Alert নির্বাচন করুন।

লগিং

এমুলেটরটি আপনার ফাংশন থেকে লগগুলিকে টার্মিনাল উইন্ডোতে স্ট্রিম করে যেখানে সেগুলি চলে। এটি আপনার ফাংশনের মধ্যে console.log() , console.info() , console.error() , এবং console.warn() স্টেটমেন্ট থেকে সমস্ত আউটপুট প্রদর্শন করে।

পরবর্তী পদক্ষেপ

ফায়ারবেস এমুলেটর স্যুট ব্যবহারের সম্পূর্ণ উদাহরণের জন্য, টেস্টিং কুইকস্টার্ট নমুনা দেখুন।