অ্যান্ড্রয়েড ১৫-এ কাটলফিশ ভার্চুয়াল ডিভাইসের স্ন্যাপশট নেওয়া এবং তা রিস্টোর করার পদ্ধতি চালু করা হয়েছে। কাটলফিশ ডিভাইসের স্ন্যাপশট নিলে আপনি ডিভাইসটির অবস্থা ডিস্কে একটি ইমেজ হিসেবে সংরক্ষণ করতে পারবেন। এরপর আপনি স্ন্যাপশটটি রিস্টোর করে কাটলফিশ ডিভাইসটিকে পূর্বের সংরক্ষিত অবস্থায় ফিরিয়ে আনতে পারবেন।
আপনি বিভিন্ন স্বয়ংক্রিয় বা ম্যানুয়াল ওয়ার্কফ্লোতে স্ন্যাপশট ব্যবহার করতে পারেন। যখন এমন কোনো প্রক্রিয়া সম্পাদন করা হয় যা ডিভাইসটিকে পরিবর্তন করে, তখন ডিভাইসটিকে একটি নির্দিষ্ট অবস্থায় পুনরুদ্ধার করা নিশ্চিত করতে আপনি ডিভাইসটির একটি স্ন্যাপশট নিতে পারেন। উদাহরণস্বরূপ, যখন এমন টেস্ট স্যুট চালানো হয় যা ডিভাইসের অবস্থা পরিবর্তন করে এবং পরবর্তী টেস্টগুলোতে সম্ভাব্য সমস্যা বা অস্থিতিশীলতা সৃষ্টি করতে পারে, তখন আপনি একটি স্ন্যাপশট নিতে পারেন যাতে একটি টেস্টের পরে ডিভাইসটিকে একটি সংরক্ষিত অবস্থায় পুনরুদ্ধার করা যায়, যা পরবর্তী টেস্টগুলোর নির্বিঘ্নে চলা নিশ্চিত করে।
অ্যাপের আচরণ পরীক্ষা করার ক্ষেত্রেও স্ন্যাপশট বেশ কার্যকর। কিছু নির্দিষ্ট কাজের ওপর ভিত্তি করে অ্যাপের আচরণ পরীক্ষা করার সময়, অ্যাপটি চলার মাঝে বিভিন্ন কাজের মাঝখানে আপনি একটি স্ন্যাপশট নিতে পারেন। এর ফলে আপনাকে শুরু থেকে পুনরায় চালু না করেই সেই স্ন্যাপশটে ফিরে যেতে পারবেন। উদাহরণস্বরূপ, যদি কোনো গেম চালু হতে দীর্ঘ সময় লাগে, তবে আপনি মূল মেনুতে পৌঁছানোর পর একটি স্ন্যাপশট নিতে পারেন, যাতে ডিভাইসটি চালু হওয়ার সময়টুকু বাদ দিয়ে আগের অবস্থায় ফিরে যেতে পারে।
একটি কাটলফিশ ডিভাইসের স্ন্যাপশট নিন।
কোনো ডিভাইসের স্ন্যাপশট নেওয়ার সময়, ডিভাইসটিকে একটি স্থিতিশীল অবস্থায় রাখা নিশ্চিত করতে সেটিকে অবশ্যই সাসপেন্ড করতে হবে। ডিভাইসটি সাসপেন্ড করা হলে, সমস্ত vCPU ও ডিভাইস বন্ধ হয়ে যায় এবং সমস্ত বাফার তাদের স্টেট VM-এ পুশ করে। এরপর স্ন্যাপশটটি vCPU-এর স্টেট, মেমরি এবং ডিভাইসের স্টেট ডিস্কের একটি নির্দিষ্ট ডেস্টিনেশন ফোল্ডারে সেভ করে।
VirtioFS সমর্থিত নয় এবং স্ন্যাপশট নেওয়ার সময় এটিকে অবশ্যই নিষ্ক্রিয় করতে হবে। VirtioFS নিষ্ক্রিয় করতে, cvd create বা cvd start চালানোর সময় --enable_virtiofs=false আর্গুমেন্টটি পাস করুন।
স্ন্যাপশটের জন্য শুধুমাত্র SwiftShader ( guest_swiftshader ) GPU মোড সমর্থিত। অন্যান্য অ্যাক্সিলারেটেড গ্রাফিক্স মোড সমর্থিত নয়।
নিম্নলিখিত ধাপে একটি কাটলফিশ ডিভাইস চালু করা এবং একটি স্ন্যাপশট নেওয়ার প্রক্রিয়া বর্ণনা করা হয়েছে।
VirtioFS নিষ্ক্রিয় থাকা অবস্থায় একটি ডিভাইস চালু করুন। (এরপর আপনি ডিভাইসটি ব্যবহার করতে পারবেন।)
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshaderনিম্নলিখিত ফ্ল্যাগগুলো সহ
cvd snapshot_takeচালিয়ে একটি স্ন্যাপশট নিন:--force: যদি নির্দিষ্ট স্ন্যাপশট পাথে আগে থেকেই কোনো ফোল্ডার বিদ্যমান থাকে, তাহলে এই ফ্ল্যাগটি নিশ্চিত করে যে বিদ্যমান ফোল্ডারটি মুছে ফেলা হবে এবং স্ন্যাপশট পাথে স্ন্যাপশটটি ধারণকারী একটি নতুন ফোল্ডার তৈরি করা হবে।--auto_suspend: স্ন্যাপশট নেওয়ার আগে ডিভাইসটিকে সাসপেন্ড করে এবং স্ন্যাপশট নেওয়ার পরে ডিভাইসটিকে পুনরায় চালু করে।--snapshot_path: নির্দিষ্ট পথ যেখানে স্ন্যাপশট সহ একটি নতুন ফোল্ডার তৈরি করা হবে।
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
একটি কাটলফিশ ডিভাইস পুনরুদ্ধার করুন
একটি Cuttlefish ডিভাইস স্ন্যাপশট পুনরুদ্ধার করার সময়, যে Cuttlefish ইনস্ট্যান্সটির জন্য স্ন্যাপশটটি নেওয়া হয়েছিল সেটি অবশ্যই বন্ধ থাকতে হবে। যদি ইনস্ট্যান্সটি ইতিমধ্যেই বন্ধ থাকে, তবে আর কোনো পদক্ষেপের প্রয়োজন নেই এবং স্ন্যাপশটটি পুনরুদ্ধার করা যেতে পারে।
একটি কাটলফিশ ডিভাইসের স্ন্যাপশট পুনরুদ্ধার করতে, cvd create দিয়ে ডিভাইসটি চালু করুন এবং স্ন্যাপশটের পাথটি অন্তর্ভুক্ত করুন। যদি যে কাটলফিশ ডিভাইসে স্ন্যাপশটটি নেওয়া হয়েছিল তার বেস ইনস্ট্যান্স নম্বরটি বর্তমান কাটলফিশ ইনস্ট্যান্সের বেস ইনস্ট্যান্স নম্বর থেকে ভিন্ন হয়, তাহলে --base_instance_num ফ্ল্যাগ ব্যবহার করে সেই বেস ইনস্ট্যান্স নম্বরটি পাস করুন।
cvd create --snapshot_path=PATH \
--base_instance_num=IDএকটি কাটলফিশ ডিভাইস স্থগিত করুন
আপনি স্ন্যাপশট না নিয়েই একটি কাটলফিশ ডিভাইস সাসপেন্ড করতে পারেন (অবস্থা সংরক্ষণের জন্য কোনো ডিস্ক স্পেস ব্যবহৃত হয় না)। একটি কাটলফিশ ডিভাইস সাসপেন্ড করতে, চালান:
cvd suspendএকটি কাটলফিশ ডিভাইস পুনরায় চালু করুন
স্থগিত করা কাটলফিশ ডিভাইস পুনরায় চালু করতে, চালান:
cvd resumeস্ন্যাপশট/রিস্টোর বৈশিষ্ট্যটি যাচাই করুন
নিম্নলিখিত পরীক্ষাটি চালানোর মাধ্যমে স্ন্যাপশট/রিস্টোর ফিচারটি যাচাই করা যেতে পারে:
atest SnapshotTest