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

Firebase CLI-তে একটি Cloud Functions এমুলেটর রয়েছে যা নিম্নলিখিত ফাংশন ধরনের অনুকরণ করতে পারে:

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

আপনি উৎপাদনে স্থাপন করার আগে তাদের পরীক্ষা করার জন্য স্থানীয়ভাবে ফাংশন চালাতে পারেন।

Firebase CLI ইনস্টল করুন

Cloud Functions এমুলেটর ব্যবহার করতে, প্রথমে Firebase CLI ইনস্টল করুন:

npm install -g firebase-tools

স্থানীয় এমুলেটর ব্যবহার করার জন্য, আপনার Cloud Functions উপর নির্ভর করতে হবে:

  • firebase-admin সংস্করণ 8.0.0 বা উচ্চতর।
  • firebase-functions সংস্করণ 3.0.0 বা উচ্চতর।

অ্যাডমিন শংসাপত্র সেট আপ করুন (ঐচ্ছিক)

আপনি যদি চান যে আপনার ফাংশন পরীক্ষাগুলি Firebase অ্যাডমিন SDK-এর মাধ্যমে Google API বা অন্যান্য Firebase API-এর সাথে ইন্টারঅ্যাক্ট করতে পারে, তাহলে আপনাকে অ্যাডমিন শংসাপত্র সেট আপ করতে হতে পারে।

  • Cloud Firestore এবং Realtime Database ট্রিগারগুলির ইতিমধ্যেই যথেষ্ট প্রমাণপত্রাদি রয়েছে এবং অতিরিক্ত সেটআপের প্রয়োজন নেই
  • Firebase API যেমন Authentication এবং FCM বা Google API যেমন ক্লাউড ট্রান্সলেশন বা ক্লাউড স্পিচ সহ অন্যান্য সমস্ত API-গুলির জন্য এই বিভাগে বর্ণিত সেটআপ পদক্ষেপগুলির প্রয়োজন। আপনি Cloud Functions শেল বা firebase emulators:start ব্যবহার করছেন কিনা তা প্রযোজ্য।

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

  1. Google Cloud কনসোলের পরিষেবা অ্যাকাউন্ট প্যান খুলুন।
  2. নিশ্চিত করুন যে App Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট নির্বাচন করা হয়েছে, এবং তৈরি কী নির্বাচন করতে ডানদিকে বিকল্প মেনু ব্যবহার করুন।
  3. প্রম্পট করা হলে, কী ধরণের জন্য JSON নির্বাচন করুন এবং তৈরি করুন ক্লিক করুন।
  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 কমান্ড Cloud Functions , ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস, এবং ফায়ারবেস হোস্টিং-এর জন্য এমুলেটরগুলি শুরু করবে যা আপনি আপনার স্থানীয় প্রকল্পে firebase init ব্যবহার করে শুরু করেছেন। আপনি যদি একটি নির্দিষ্ট এমুলেটর শুরু করতে চান তবে --only পতাকা ব্যবহার করুন:

firebase emulators:start --only functions

এমুলেটরগুলি শুরু হওয়ার পরে আপনি যদি একটি টেস্ট স্যুট বা টেস্টিং স্ক্রিপ্ট চালাতে চান, emulators:exec কমান্ডটি ব্যবহার করুন:

firebase emulators:exec "./my-test.sh"

এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন

আপনার অ্যাপটিকে এমুলেটরগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য, আপনাকে কিছু অতিরিক্ত কনফিগারেশন করতে হতে পারে।

কলযোগ্য ফাংশনগুলির জন্য আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন

যদি আপনার প্রোটোটাইপ এবং পরীক্ষামূলক ক্রিয়াকলাপগুলি কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, Cloud Functions for Firebase সাথে মিথস্ক্রিয়া কনফিগার করুন এইভাবে:

Kotlin+KTX
// 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().useFunctionsEmulator(origin: "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 ফাংশন নিম্নলিখিত 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 এবং ইভেন্টর্ক এমুলেটরগুলি ইনস্টল করতে হবে৷

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

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

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

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

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

Cloud Firestore

আপনার যদি এমন ফাংশন থাকে যা Cloud Firestore লেখার জন্য Firebase অ্যাডমিন SDK ব্যবহার করে, তাহলে এই লেখাগুলি Cloud Firestore এমুলেটর চালু হলে পাঠানো হবে৷ যদি এই লেখাগুলির দ্বারা আরও ফাংশন ট্রিগার করা হয়, সেগুলি Cloud Functions এমুলেটরে চালানো হবে।

Cloud Storage

আপনার যদি Cloud Storage এ লেখার জন্য ফায়ারবেস অ্যাডমিন SDK (সংস্করণ 9.7.0 বা তার বেশি) ব্যবহার করে এমন ফাংশন থাকে, তাহলে এই লেখাগুলি Cloud Storage এমুলেটর চালু হলে পাঠানো হবে। যদি এই লেখাগুলির দ্বারা আরও ফাংশন ট্রিগার করা হয়, সেগুলি Cloud Functions এমুলেটরে চালানো হবে।

Firebase Authentication

আপনার যদি এমন ফাংশন থাকে যা Firebase Authentication লেখার জন্য Firebase Admin SDK (সংস্করণ 9.3.0 বা তার বেশি) ব্যবহার করে, তাহলে এটি চলমান থাকলে এই লেখাগুলি Auth এমুলেটরে পাঠানো হবে। যদি এই লেখাগুলির দ্বারা আরও ফাংশন ট্রিগার করা হয়, সেগুলি Cloud Functions এমুলেটরে চালানো হবে।

ফায়ারবেস হোস্টিং

আপনি যদি Firebase Hosting জন্য গতিশীল সামগ্রী তৈরি করতে Cloud Functions ব্যবহার করেন, firebase emulators:start হোস্টিংয়ের জন্য প্রক্সি হিসাবে আপনার স্থানীয় HTTP ফাংশনগুলি ব্যবহার করে।

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

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

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

লগিং

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

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

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