আপনার অ্যাপকে Realtime Database এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি Firebase Local Emulator Suite সামগ্রিক কার্যপ্রবাহ বুঝতে পেরেছেন , এবং আপনি Local Emulator Suite ইনস্টল ও কনফিগার করার পাশাপাশি এর CLI কমান্ডগুলো পর্যালোচনা করেছেন।
একটি ফায়ারবেস প্রজেক্ট বেছে নিন
Firebase Local Emulator Suite একটিমাত্র ফায়ারবেস প্রোজেক্টের প্রোডাক্টগুলোকে এমুলেট করে।
ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, এমুলেটরগুলো চালু করার আগে, আপনার ওয়ার্কিং ডিরেক্টরিতে CLI-তে firebase use চালান। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project ফ্ল্যাগটি পাস করতে পারেন।
Local Emulator Suite বাস্তব ফায়ারবেস প্রজেক্ট এবং ডেমো প্রজেক্টের এমুলেশন সমর্থন করে।
| প্রকল্পের ধরণ | বৈশিষ্ট্য | এমুলেটরের সাথে ব্যবহার করুন |
|---|---|---|
| বাস্তব | একটি প্রকৃত Firebase প্রজেক্ট হলো সেটি যা আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)। বাস্তব প্রজেক্টগুলিতে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, বা অন্য যেকোনো রিসোর্স যা আপনি সেই Firebase প্রজেক্টের জন্য সেট আপ করেছেন। | আসল Firebase প্রোজেক্ট নিয়ে কাজ করার সময়, আপনি সমর্থিত যেকোনো বা সমস্ত প্রোডাক্টের জন্য এমুলেটর চালাতে পারেন। যেসব প্রোডাক্ট আপনি এমুলেট করছেন না, সেগুলোর ক্ষেত্রে আপনার অ্যাপ ও কোড লাইভ রিসোর্সের (যেমন ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি) সাথে ইন্টারঅ্যাক্ট করবে। |
| ডেমো | একটি ডেমো ফায়ারবেস প্রজেক্টে কোনো বাস্তব ফায়ারবেস কনফিগারেশন বা লাইভ রিসোর্স থাকে না। এই প্রজেক্টগুলো সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে ব্যবহার করা হয়। ডেমো প্রজেক্টগুলোর আইডির শুরুতে | ডেমো ফায়ারবেস প্রজেক্ট নিয়ে কাজ করার সময়, আপনার অ্যাপ এবং কোড শুধুমাত্র এমুলেটরের সাথেই ইন্টারঅ্যাক্ট করে। যদি আপনার অ্যাপ এমন কোনো রিসোর্সের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য কোনো এমুলেটর চলছে না, তাহলে সেই কোডটি ব্যর্থ হবে। |
আমরা আপনাকে যথাসম্ভব ডেমো প্রজেক্ট ব্যবহার করার পরামর্শ দিই। এর সুবিধাগুলোর মধ্যে রয়েছে:
- সেটআপ করা সহজ, কারণ কোনো Firebase প্রজেক্ট তৈরি না করেই এমুলেটরগুলো চালানো যায়।
- আরও শক্তিশালী সুরক্ষা, কারণ যদি আপনার কোড ভুলবশত নন-এমুলেটেড (প্রোডাকশন) রিসোর্স ব্যবহার করে, তাহলেও ডেটা পরিবর্তন, ব্যবহার এবং বিলিং-এর কোনো সম্ভাবনা থাকে না।
- উন্নততর অফলাইন সাপোর্ট, কারণ আপনার 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);
সুইফট
// 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")
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); }
এমুলেটর ব্যবহার করে রিয়েলটাইম ডাটাবেস ইভেন্ট দ্বারা ট্রিগার হওয়া ক্লাউড ফাংশন পরীক্ষা করার জন্য কোনো অতিরিক্ত সেটআপের প্রয়োজন নেই। যখন রিয়েলটাইম ডাটাবেস এবং ক্লাউড ফাংশন এমুলেটর উভয়ই চালু থাকে, তখন তারা স্বয়ংক্রিয়ভাবে একসাথে কাজ করে।
Admin SDK
যখন FIREBASE_DATABASE_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবলটি সেট করা থাকে, তখন Firebase Admin SDK স্বয়ংক্রিয়ভাবে Realtime Database emulator-এর সাথে সংযুক্ত হয়:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
আপনার কোড যদি Cloud Functions এমুলেটরের ভেতরে চলে, তাহলে initializeApp কল করার সময় আপনার প্রোজেক্ট আইডি এবং অন্যান্য কনফিগারেশন স্বয়ংক্রিয়ভাবে সেট হয়ে যাবে।
আপনি যদি আপনার Admin SDK কোডকে অন্য কোনো পরিবেশে চলমান একটি শেয়ার্ড এমুলেটরের সাথে সংযোগ করতে চান, তাহলে আপনাকে Firebase CLI ব্যবহার করে সেট করা একই প্রজেক্ট আইডি উল্লেখ করতে হবে। আপনি সরাসরি initializeApp এ একটি প্রজেক্ট আইডি পাস করতে পারেন অথবা GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
নোড.জেএস অ্যাডমিন এসডিকে
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);
সুইফট
// 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>
এরপর কী?
- নির্বাচিত ভিডিও এবং বিস্তারিত নির্দেশনামূলক উদাহরণের জন্য, ফায়ারবেস এমুলেটর প্রশিক্ষণ প্লেলিস্টটি অনুসরণ করুন।
- সিকিউরিটি রুলস টেস্টিং এবং ফায়ারবেস টেস্ট এসডিকে-এর সাথে জড়িত উন্নত ব্যবহারের ক্ষেত্রগুলো অনুসন্ধান করুন: সিকিউরিটি রুলস টেস্ট করুন (রিয়েলটাইম ডেটাবেস) ।
- যেহেতু ট্রিগারড ফাংশনগুলো Realtime Database সাথে একটি সাধারণ ইন্টিগ্রেশন, তাই ‘Run functions locally’ অংশে Cloud Functions for Firebase এমুলেটর সম্পর্কে আরও জানুন।