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

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

  • HTTPS ফাংশন
  • কলযোগ্য ফাংশন
  • ফায়ারবেস প্রমাণীকরণ, রিয়েলটাইম ডেটাবেস, ক্লাউড ফায়ারস্টোর, ক্লাউড স্টোরেজ এবং ক্লাউড পাব/সাব থেকে শুরু হওয়া পটভূমি ফাংশনগুলি।

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

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

ক্লাউড ফাংশন এমুলেটর ব্যবহার করতে, প্রথমে Firebase CLI ইনস্টল করুন:

npm install -g firebase-tools

স্থানীয় এমুলেটর ব্যবহার করার জন্য, আপনার ক্লাউড ফাংশনগুলির উপর নির্ভর করতে হবে:

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

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

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

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

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

  1. Google ক্লাউড কনসোলের পরিষেবা অ্যাকাউন্ট প্যান খুলুন।
  2. নিশ্চিত করুন যে অ্যাপ ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্ট নির্বাচন করা হয়েছে, এবং তৈরি কী নির্বাচন করতে ডানদিকে বিকল্প মেনু ব্যবহার করুন।
  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গুলি অ্যাক্সেস করতে পারে৷ উদাহরণস্বরূপ, একটি প্রমাণীকরণ ট্রিগার পরীক্ষা করার সময়, অনুকরণ করা ফাংশন 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

এমুলেটর স্যুট চালান

ক্লাউড ফাংশন এমুলেটর চালানোর জন্য, emulators:start কমান্ড ব্যবহার করুন:

firebase emulators:start

emulators:start কমান্ড ক্লাউড ফাংশন, ক্লাউড ফায়ারস্টোর, রিয়েলটাইম ডেটাবেস, এবং ফায়ারবেস হোস্টিং-এর জন্য এমুলেটর শুরু করবে firebase init ব্যবহার করে আপনার স্থানীয় প্রকল্পে আপনি যে পণ্যগুলি শুরু করেছেন তার উপর ভিত্তি করে। আপনি যদি একটি নির্দিষ্ট এমুলেটর শুরু করতে চান তবে --only পতাকা ব্যবহার করুন:

firebase emulators:start --only functions

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

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

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

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

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

যদি আপনার প্রোটোটাইপ এবং পরীক্ষামূলক ক্রিয়াকলাপগুলি কলযোগ্য ব্যাকএন্ড ফাংশন জড়িত থাকে, তাহলে 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 modular API

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "127.0.0.1", 5001);

Web namespaced API

firebase.functions().useEmulator("127.0.0.1", 5001);

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

আপনার কোডের প্রতিটি HTTPS ফাংশন নিম্নলিখিত URL বিন্যাস ব্যবহার করে স্থানীয় এমুলেটর থেকে পরিবেশন করা হবে:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

উদাহরণস্বরূপ ডিফল্ট হোস্ট পোর্ট এবং অঞ্চল সহ একটি সাধারণ helloWorld ফাংশন এখানে পরিবেশন করা হবে:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

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

ক্লাউড ফাংশন এমুলেটর নিম্নলিখিত উত্স থেকে ব্যাকগ্রাউন্ড-ট্রিগার করা ফাংশন সমর্থন করে:

  • রিয়েলটাইম ডাটাবেস এমুলেটর
  • ক্লাউড ফায়ারস্টোর এমুলেটর
  • প্রমাণীকরণ এমুলেটর
  • পাব/সাব এমুলেটর

ব্যাকগ্রাউন্ড ইভেন্টগুলি ট্রিগার করতে, এমুলেটর স্যুট UI ব্যবহার করে ব্যাক-এন্ড সংস্থানগুলি সংশোধন করুন, বা আপনার প্ল্যাটফর্মের জন্য SDK ব্যবহার করে এমুলেটরগুলির সাথে আপনার অ্যাপ বা পরীক্ষার কোড সংযুক্ত করে৷

এক্সটেনশন দ্বারা নির্গত কাস্টম ইভেন্টের জন্য পরীক্ষা হ্যান্ডলার

ক্লাউড ফাংশন v2 এর সাথে ফায়ারবেস এক্সটেনশন কাস্টম ইভেন্টগুলি পরিচালনা করার জন্য আপনি যে ফাংশনগুলি প্রয়োগ করেন, ক্লাউড ফাংশন এমুলেটর Eventarc ট্রিগার সমর্থন করার জন্য Eventarc এমুলেটরের সাথে জোড়া।

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

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

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

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

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

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

ক্লাউড ফায়ারস্টোর

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

মেঘ স্টোরেজ

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

ফায়ারবেস প্রমাণীকরণ

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

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

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

লগিং

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

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

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