Realtime Database এমুলেটরের সাথে আপনার অ্যাপ কানেক্ট করার আগে, আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝেছেন কিনা এবং Local Emulator Suite ইনস্টল ও কনফিগার করেছেন কিনা এবং এর CLI কমান্ড পর্যালোচনা করেছেন কিনা তা নিশ্চিত করুন।
Firebase প্রোজেক্ট বেছে নিন
Firebase Local Emulator Suite একটি Firebase প্রোজেক্টের জন্য প্রোডাক্ট এমুলেট করে।
ব্যবহার করার জন্য প্রোজেক্ট বেছে নিতে, এমুলেটর শুরু করার আগে, আপনার ওয়ার্কিং ডিরেক্টরিতে CLI রান
firebase use করুন। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে
--project ফ্ল্যাগ
পাস করতে পারেন।
Local Emulator Suite আসল Firebase প্রোজেক্ট এবং ডেমো প্রোজেক্টের এমুলেশন সাপোর্ট করে।
| প্রোজেক্টের ধরন | ফিচার | এমুলেটরের সাথে ব্যবহার করুন |
|---|---|---|
| রিয়েল |
আসল Firebase প্রোজেক্ট হল এমন একটি প্রোজেক্ট যা আপনি তৈরি ও কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। আসল প্রোজেক্টে লাইভ রিসোর্স থাকে, যেমন ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন বা Firebase প্রোজেক্টের জন্য সেট-আপ করা অন্য যেকোনও রিসোর্স। |
আসল Firebase প্রোজেক্ট নিয়ে কাজ করার সময়, আপনি কাজ করে এমন যেকোনও বা সব প্রোডাক্টের জন্য এমুলেটর চালাতে পারবেন। আপনি এমুলেট করছেন না এমন যেকোনও প্রোডাক্টের জন্য, আপনার অ্যাপ এবং কোড লাইভ রিসোর্সের (ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি) সাথে ইন্টার্যাক্ট করবে। |
| নমুনা |
ডেমো Firebase প্রোজেক্টে কোনও আসল Firebase কনফিগারেশন এবং লাইভ রিসোর্স থাকে না। এইসব প্রোজেক্ট সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়। ডেমো প্রোজেক্টের প্রোজেক্ট আইডিতে |
ডেমো Firebase প্রোজেক্টের সাথে কাজ করার সময়, আপনার অ্যাপ ও কোড শুধুমাত্র এমুলেটরের সাথে ইন্টার্যাক্ট করে। আপনার অ্যাপ যদি এমন কোনও রিসোর্সের সাথে ইন্টার্যাক্ট করার চেষ্টা করে যার জন্য এমুলেটর চলছে না, তাহলে সেই কোড কাজ করবে না। |
আমরা সাজেস্ট করি যে যেখানে সম্ভব সেখানে ডেমো প্রোজেক্ট ব্যবহার করুন। সুবিধার মধ্যে এইসব অন্তর্ভুক্ত আছে:
- সহজ সেট-আপ, কারণ আপনি Firebase প্রোজেক্ট তৈরি না করেই এমুলেটর চালাতে পারবেন
- আরও শক্তিশালী নিরাপত্তা, কারণ আপনার কোড যদি ভুলবশত নন-এমুলেটেড (প্রোডাকশন) রিসোর্স ইনভোক করে, তাহলে ডেটা পরিবর্তন, ব্যবহার এবং বিলিংয়ের কোনও সম্ভাবনা থাকে না
- আরও ভালো অফলাইন সহায়তা, কারণ আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।
এমুলেটরের সাথে কথা বলতে আপনার অ্যাপকে ইনস্ট্রুমেন্ট করুন
Android, Apple প্ল্যাটফর্ম এবং Web SDK
Realtime Database-এর সাথে ইন্টার্যাক্ট করার জন্য আপনার অ্যাপ-মধ্যস্থ কনফিগারেশন বা টেস্ট ক্লাস সেট-আপ করুন।
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val database = Firebase.database database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseDatabase database = FirebaseDatabase.getInstance(); database.useEmulator("10.0.2.2", 9000);
Swift
// In almost all cases the ns (namespace) is your project ID. let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")
Unity
// Connects to the RTDB Emulator running on port 9000. // Note: You may need to append your namespace: "?ns=YOUR_PROJECT_ID" FirebaseDatabase database = FirebaseDatabase.GetInstance("http://127.0.0.1:9000");
Web
import { getDatabase, connectDatabaseEmulator } from "firebase/database"; const db = getDatabase(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. connectDatabaseEmulator(db, "127.0.0.1", 9000); }
Web
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("127.0.0.1", 9000); }
এমুলেটর ব্যবহার করে রিয়েল-টাইম ডেটাবেস ইভেন্ট দ্বারা ট্রিগার করা Cloud Functions পরীক্ষা করার জন্য অতিরিক্ত কোনও সেট-আপের প্রয়োজন নেই। রিয়েলটাইম ডেটাবেস এবং ক্লাউড ফাংশন এমুলেটর উভয়ই চলমান থাকলে, তারা স্বয়ংক্রিয়ভাবে একসাথে কাজ করে।
Admin SDK সেকেন্ড
FIREBASE_DATABASE_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে,
Firebase Admin SDK অটোমেটিক Realtime Database এমুলেটরের সাথে কানেক্ট হয়ে যায়:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
আপনার কোড Cloud Functions এমুলেটরের মধ্যে রান করলে, initializeApp কল করার সময় আপনার প্রোজেক্ট আইডি
ও অন্যান্য কনফিগারেশন অটোমেটিক সেট হয়ে যাবে।
আপনি যদি চান যে আপনার Admin SDK কোড অন্য পরিবেশে চলা একটি শেয়ার করা এমুলেটরের সাথে কানেক্ট হোক, তাহলে আপনাকে Firebase CLI ব্যবহার করে সেট করা একই প্রোজেক্ট আইডি উল্লেখ করতে হবে।
আপনি সরাসরি initializeApp-এ প্রোজেক্ট আইডি পাস করতে পারেন অথবা
GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
Node.js অ্যাডমিন SDK
admin.initializeApp({ projectId: "your-project-id" });
এনভায়রনমেন্ট ভেরিয়েবল
export GCLOUD_PROJECT="your-project-id"
টেস্টের মধ্যে আপনার ডেটাবেস মুছুন
অ্যাক্টিভিটির মধ্যে Realtime Database ফ্লাশ করতে, আপনি ডেটাবেস রেফারেন্স মুছে দিতে পারেন। এমুলেটর প্রসেস বন্ধ করার বিকল্প হিসেবে আপনি এই পদ্ধতি ব্যবহার করতে পারেন।
Kotlin
// With a DatabaseReference, write null to clear the database. database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database. database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
import { getDatabase, ref, set } from "firebase/database"; // With a database Reference, write null to clear the database. const db = getDatabase(); set(ref(db), null);
Web
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
স্বাভাবিকভাবেই, আপনার কোডটি আপনার প্ল্যাটফর্মের অ্যাসিঙ্ক্রোনাস ইভেন্ট হ্যান্ডলিং ফিচার ব্যবহার করে ফ্লাশ শেষ হয়েছে বা ব্যর্থ হয়েছে কিনা তা নিশ্চিত করার জন্য অপেক্ষা করা উচিত।
এই ধরনের ধাপ প্রয়োগ করার মাধ্যমে, আপনি নিজের টেস্টের ক্রম নির্ধারণ করতে এবং আত্মবিশ্বাসের সাথে ফাংশন ট্রিগার করতে পারবেন যে রান করার মধ্যে পুরনো ডেটা মুছে যাবে এবং আপনি একটি ফ্রেশ বেসলাইন টেস্ট কনফিগারেশন ব্যবহার করছেন।
ডেটা ইমপোর্ট ও এক্সপোর্ট করা
ডেটাবেস এবং Cloud Storage for Firebase এমুলেটর আপনাকে একটি চলমান এমুলেটর ইনস্ট্যান্স থেকে ডেটা এক্সপোর্ট করার অনুমতি দেয়। আপনার ইউনিট টেস্ট বা কন্টিনিউয়াস ইন্টিগ্রেশন ওয়ার্কফ্লোতে ব্যবহার করার জন্য ডেটার একটি বেসলাইন সেট নির্ধারণ করুন, তারপর টিমের মধ্যে শেয়ার করার জন্য এটি এক্সপোর্ট করুন।
firebase emulators:export ./dirপরীক্ষা করার সময়, এমুলেটর চালু করার সময়, বেসলাইন ডেটা ইমপোর্ট করুন।
firebase emulators:start --import=./dirআপনি এমুলেটরকে শাটডাউনের সময় ডেটা এক্সপোর্ট করার নির্দেশ দিতে পারেন, হয় এক্সপোর্ট পাথ নির্দিষ্ট করে
অথবা --import
ফ্ল্যাগে পাস করা পাথ ব্যবহার করে।
firebase emulators:start --import=./dir --export-on-exitএই ডেটা ইমপোর্ট ও এক্সপোর্ট করার বিকল্পগুলি
firebase emulators:exec কমান্ডের সাথেও কাজ করে। আরও জানতে, এমুলেটর কমান্ড রেফারেন্স দেখুন।
নিরাপত্তা সংক্রান্ত নিয়মের অ্যাক্টিভিটি ভিজ্যুয়ালাইজ করুন
প্রোটোটাইপ ও টেস্ট লুপের মাধ্যমে কাজ করার সময়, আপনি Local Emulator Suite-এর দেওয়া ভিজ্যুয়ালাইজেশন টুল ও রিপোর্ট ব্যবহার করতে পারবেন।
নিয়ম মূল্যায়ন ভিজ্যুয়ালাইজ করুন
আপনার প্রোটোটাইপে নিরাপত্তা সংক্রান্ত নিয়ম যোগ করার সাথে সাথে আপনি Local Emulator Suite টুলের সাহায্যে সেগুলি ডিবাগ করতে পারবেন।
একগুচ্ছ টেস্ট চালানোর পরে, আপনি টেস্ট কভারেজ রিপোর্ট অ্যাক্সেস করতে পারবেন যা দেখায় আপনার প্রতিটি নিয়ম কীভাবে মূল্যায়ন করা হয়েছে। রিপোর্ট পেতে, এমুলেটর চলাকালীন এতে এক্সপোজড এন্ডপয়েন্ট কোয়েরি করুন। ব্রাউজার-ফ্রেন্ডলি ভার্সনের জন্য, নিম্নলিখিত URL ব্যবহার করুন:
http://localhost:9000/.inspect/coverage?ns=<database_name>
এটি আপনার নিয়মকে এক্সপ্রেশন ও সাব-এক্সপ্রেশনে ভাগ করে দেয়। আপনি আরও তথ্য পেতে এগুলির উপর মাউসওভার করতে পারেন। এর মধ্যে এক্সিকিউশনের সংখ্যা ও রিটার্ন করা ভ্যালু অন্তর্ভুক্ত। এই ডেটার র JSON ভার্সনের জন্য, আপনার কোয়েরিতে নিম্নলিখিত URL অন্তর্ভুক্ত করুন:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
এরপর কী করতে হবে?
- কিউরেট করা ভিডিওর সেট এবং বিস্তারিত কীভাবে-করবেন উদাহরণ পেতে, Firebase এমুলেটর ট্রেনিং প্লেলিস্ট অনুসরণ করুন।
- নিরাপত্তা সংক্রান্ত নিয়ম পরীক্ষা এবং Firebase Test SDK সংক্রান্ত উন্নত ব্যবহারের কেসগুলি তদন্ত করুন: নিরাপত্তা সংক্রান্ত নিয়ম পরীক্ষা করুন (রিয়েলটাইম ডেটাবেস)।
- ট্রিগার করা ফাংশনগুলি Realtime Database-এর সাথে একটি সাধারণ ইন্টিগ্রেশন, তাই Cloud Functions for Firebase এমুলেটর সম্পর্কে আরও জানুন স্থানীয়ভাবে ফাংশন চালান-এ।