একটি নতুন ডিভাইস সংযোগ অ্যাসিঙ্ক্রোনাস ইভেন্টের একটি সিরিজ ট্রিগার করে যা এখনও বোঝার মতো স্পষ্ট নয়।
শারীরিকভাবে সংযুক্ত
Tradefed ddmlib লাইব্রেরি (একটি Java adb লাইব্রেরি) ব্যবহার করে adb এবং ডিভাইসগুলির সাথে মৌলিক মিথস্ক্রিয়া প্রদান করতে। এই সমাধানের অংশ হল IDeviceChangeListener ইন্টারফেস যা নতুন ডিভাইস ইভেন্টগুলি গ্রহণ করার অনুমতি দেয়, যেমন:
-
deviceConnected: যখন একটি নতুন ডিভাইসadbদ্বারা দেখা হয় -
deviceDisconnected: যখন একটি ডিভাইস আরadbরিপোর্ট করছে না -
deviceChanged: যখন একটি প্রধান ডিভাইস অবস্থা ঘটে (যেমন ডিভাইস অফলাইন বা ডিভাইস অনলাইন)
এই ইভেন্টগুলি adb স্তরে একটি ডিভাইস সংযুক্ত, অনলাইন বা অফলাইন কিনা তা নির্ধারণ করতে যথেষ্ট। কিন্তু পরীক্ষার জোতার জন্য, একটি ডিভাইস পরীক্ষা চালানোর জন্য সত্যিই প্রস্তুত তা নিশ্চিত করার জন্য আমাদের এর চেয়ে শক্তিশালী অবস্থার প্রয়োজন; এটি একটি নতুন সংযুক্ত ডিভাইসের সাথে আসতে পারে এমন সম্ভাব্য স্থিতিশীলতা দ্বারা প্রভাবিত হওয়া উচিত নয়।
এটি ট্রেডফেডে ইভেন্টের ক্রম:
- ডিভাইসটি
deviceConnectedহিসাবে স্বীকৃত এবংadbথেকে নিয়মিত ইভেন্টের জন্য উন্মুক্ত একটি অভ্যন্তরীণ ট্রেডফেড ইভেন্ট তৈরি করা হয়েছে যা করবে:
- ডিভাইসটি ইতিমধ্যে পরিচিত কিনা তা পরীক্ষা করুন; Tradefed কিছু ডিভাইসের অভ্যন্তরীণ রেফারেন্স রাখে (বিশেষ করে একটি বর্তমান বরাদ্দ করা এবং চলমান পরীক্ষা) যাতে TF এলোমেলোভাবে ট্র্যাক হারাতে না পারে।
- ডিভাইসটি
ONLINEবাOFFLINEকিনা তা পরীক্ষা করুন৷
ডিভাইস যদি হয়:
OFFLINE: ডিভাইসটিকে ট্রেডফেডCONNECTED_OFFLINEঅবস্থায় স্যুইচ করা হবে, যা ডিভাইসটিকে এখনও পরীক্ষা চালানোর অনুমতি দেয় না। ডিভাইসটি পরে অনলাইন হলে, এটিONLINEচক্রের মধ্য দিয়ে যাবে। যদি আমরা একটিdeviceDisconnectইভেন্ট পাই, তাহলে ডিভাইসটি তালিকা থেকে সরানো হবে।ONLINE(যেমন adb দ্বারা দেখা হয়েছে): ডিভাইসটিCONNECTED_ONLINEঅবস্থায় রাখা হবে এবং পরীক্ষার বরাদ্দের জন্য এটির উপলব্ধতা পরীক্ষা করা হবে:checking_availability।
availabilityপরীক্ষা সফল হলে, ডিভাইসটি পরীক্ষা বরাদ্দের জন্য উপলব্ধ হিসাবে চিহ্নিত করা হবে; এটা পরীক্ষা চালাতে সক্ষম হবে. যদি না হয়, ডিভাইসটি বরাদ্দের জন্যunavailableহিসাবে চিহ্নিত করা হবে এবং কোনো পরীক্ষা গ্রহণ করতে পারবে না।
এই সমস্ত অবস্থা ট্রেডফেড কনসোলে প্রতিফলিত হয় যখন ডিভাইসগুলিকে এর মাধ্যমে তালিকাভুক্ত করা হয়: tf> list devices
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে ডিভাইসটি বর্তমানে একটি পরীক্ষার জন্য বরাদ্দ করা হলে, উপরের বেশিরভাগটি ঘটবে না এবং ট্রেডফেড অভ্যন্তরীণভাবে ডিভাইসের অবস্থা নির্ধারণ করবে। সুতরাং ট্রেডফেড দ্বারা তালিকাভুক্ত থাকা অবস্থায় একটি ডিভাইসের জন্য adb devices থেকে অদৃশ্য হয়ে যাওয়া সম্ভব। এটি ঘটতে পারে যখন একটি পরীক্ষা যেমন ডিভাইসটি পুনরায় বুট করছে।
ভার্চুয়াল ডিভাইস অ্যাডবি কানেক্টের সাথে সংযুক্ত
যখন একটি দূরবর্তী ভার্চুয়াল ডিভাইস তৈরি করা হয়, Tradefed এটির সাথে adb connect ব্যবহার করে সংযোগ করে। এটি সাধারণত adb devices <some ip>:<port number> হিসাবে দেখানো ডিভাইসটিকে ট্রিগার করবে এবং শারীরিকভাবে সংযুক্ত ডিভাইসগুলির মতো একই ক্রম অনুসরণ করবে।
ডিভাইস ট্র্যাকিং যখন একটি ডিভাইস সংযুক্ত ইভেন্ট ঘটে
deviceConnected হলে, ddmlib নতুন সংযুক্ত ডিভাইস ট্র্যাক করতে একটি নতুন রেফারেন্স IDevice তৈরি করে।
ট্রেডফেড সেই রেফারেন্স ব্যবহার করে এবং আরও উন্নত পরিষেবা প্রদানের জন্য ডিভাইস ইন্টারফেস ITestDevice- এর নিজস্ব বাস্তবায়নে এটি মোড়ানো। কিন্তু অন্তর্নিহিত IDevice সবসময় ddmlib থেকে আসে।
এর মানে যদি একটি নতুন ডিভাইস সংযুক্ত থাকে, একটি নতুন ITestDevice তৈরি করা হয় এবং IDevice এর সাথে যুক্ত হয়। যখন এটি একটি আহ্বানের সময় ঘটে এবং ITestDevice ব্যবহার করা হয়, তখনও অন্তর্নিহিত IDevice প্রতিস্থাপন করা হয় যাতে পরীক্ষাটি সঠিক রেফারেন্সে এগিয়ে যেতে পারে। প্রতিবার একটি ডিভাইস সংযোগ বিচ্ছিন্ন/পুনরায় সংযোগ করা হলে এটি নির্বিঘ্নে করা হয় (উদাহরণস্বরূপ, একটি রিবুটের সময়)।