একাধিক ডিভাইসের সাথে পরীক্ষা চালান

এই পৃষ্ঠাটি আপনাকে পরীক্ষার সময় একাধিক ডিভাইসের সাথে ট্রেড ফেডারেশন টেস্ট হারনেস ব্যবহার করতে সহায়তা করে৷ আপনার প্রথমে এন্ড-টু-এন্ড উদাহরণে বর্ণিত স্বাভাবিক ব্যবহারের সাথে পরিচিত হওয়া উচিত৷

একাধিক ডিভাইসের সাথে পার্থক্য কি?

ট্রেড ফেডারেশনে মাল্টি-ডিভাইস পরীক্ষা কনফিগার এবং চালানোর সময় বেশ কিছু জিনিস আলাদা হয়, বিশেষ করে:

যেকোন বিদ্যমান এক-ডিভাইস কনফিগারেশন মাল্টি-ডিভাইস মোডের জন্য বৈধ।

<! -- TODO: একটি দ্বিতীয় বাক্যে মাল্টি-ডিভাইস মোডের সাথে সম্পর্কিত একটি এক-ডিভাইস ব্যবহারের ক্ষেত্রে উদাহরণ যোগ করে অবিলম্বে উপরের বাক্যটিকে স্পষ্ট করুন। -->>

একাধিক ডিভাইস কনফিগারেশন

এই নথিটি অনুমান করে যে আপনি সাধারণ TF পরীক্ষার কনফিগারেশনের সাথে ইতিমধ্যেই পরিচিত। এখানে দুটি ডিভাইসের সাথে একটি সাধারণ পরীক্ষার কনফিগারেশন কেমন দেখায়:

<configuration description="A simple multi-devices example in Tradefed">

    <device name="device1">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <device name="device2">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <option name="log-level" value="verbose" />
    <test class="com.android.tradefed.HelloWorldMultiDevices" />

    <logger class="com.android.tradefed.log.FileLogger" />
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />

</configuration>

গঠন সম্পর্কে বেশ কিছু জিনিস উল্লেখ করা প্রয়োজন:

  • প্রতিটি ডিভাইসের জন্য প্রয়োজন হবে, একটি <device> প্রত্যাশিত।
  • <build_provider> , <target_preparer> , <device_recovery> , <device_requirements> , এবং <device_options> প্রয়োজন হলে অবশ্যই <device> ট্যাগের মধ্যে অন্তর্ভুক্ত করতে হবে; একটি ব্যতিক্রম অন্যথায় নিক্ষেপ করা হবে.
  • <device> এর name বৈশিষ্ট্যটি বাধ্যতামূলক এবং কনফিগারেশনে উপস্থিত সমস্ত ডিভাইসের মধ্যে অনন্য হওয়া উচিত। এটি এর সাথে সম্পর্কিত নির্দিষ্ট ডিভাইসের উল্লেখ করতে ব্যবহৃত হয়। এটি আপনার পরীক্ষাকে একটি নির্দিষ্ট ডিভাইসকে লক্ষ্য করার অনুমতি দেয়।
  • কনফিগারেশনের মূলে থাকা অবস্থায় <option> হয় একটি গ্লোবাল স্কোপ থাকতে পারে অথবা <device> ট্যাগের ভিতরে নির্দিষ্ট করা হলে ডিভাইসের সুযোগে সীমাবদ্ধ থাকতে পারে।

একক-ডিভাইস কনফিগারেশনে প্রযোজ্য অন্যান্য সমস্ত নিয়ম এখনও এখানে প্রযোজ্য। আরো বিস্তারিত জানার জন্য নীচের হ্যালো ওয়ার্ল্ড উদাহরণ দেখুন.

কমান্ড লাইন আপডেট

TF কমান্ড লাইনে বিকল্পগুলি নির্দিষ্ট করার সময়, {<device name>} ব্যবহার করে একটি ডিভাইস স্কোপ নির্দিষ্ট করাও সম্ভব যেখানে <device name> XML কনফিগারেশনে নির্দিষ্ট করা নাম।

উপরের উদাহরণে, নিম্নলিখিত বিকল্পগুলি অনুমোদিত ছিল:

  • --com.android.tradefed.targetprep.DeviceSetup:disable
  • --device-setup:disable

আপনি ডিভাইসের নাম ব্যবহার করে শুধুমাত্র একটি ডিভাইস build_provider অবজেক্টকে লক্ষ্য করতে পারেন, যেমন:

--{device2}device-setup:disable

এই উদাহরণে, device2 ডিভাইস সেটআপ এড়িয়ে যায় যখন device1 করে না।

TF কিভাবে ডিভাইস নির্বাচন করে?

ট্রেড ফেডারেশন কনফিগারেশনে ডিভাইসের উপস্থিতির ক্রমানুসারে device_requirements (সাধারণত ডিভাইসের স্বাদ, পণ্য, ইত্যাদি) সাথে মেলে এমন একটি ডিভাইস খোঁজে। প্রতিবার একটি ডিভাইস বরাদ্দ করা হলে, TF পরবর্তীটি বরাদ্দ করার চেষ্টা করে। যদি সমস্ত ডিভাইস বরাদ্দ করা সম্ভব না হয়, তবে সেগুলি সমস্ত ছেড়ে দেওয়া হবে এবং সমস্ত ডিভাইস মিলে গেলে কমান্ডটি পুনরায় চেষ্টা করা হবে।

TF কিভাবে ডিভাইস প্রস্তুত করে?

মাল্টি-ডিভাইসের প্রস্তুতির ধাপটি বেশিরভাগই একক ডিভাইসের মতোই। প্রতিটি ডিভাইস <device> এর ভিতরে উপস্থিত হওয়ার জন্য <target_preparer> কল করে প্রস্তুত করা হয়।

আপনি কনফিগারেশনের মূলে নির্দিষ্ট করা <multi_target_preparer> ও ব্যবহার করতে পারেন যা একাধিক ডিভাইসের প্রয়োজন হয়, যেমন ডিভাইস জোড়া দেওয়া। এটা target_preparer ধাপের পরে চলে।

একটি বিকল্প হল <pre_multi_target_preparer> যা target_preparer ধাপের আগে চলে।

  • <pre_multi_target_preparer> সেটআপের জন্য ব্যবহার করা উচিত যা পৃথক ডিভাইস সেটআপের আগে করা আবশ্যক
  • <multi_target_preparer> সেটআপের জন্য ব্যবহার করা উচিত যা পৃথক ডিভাইস সেটআপের পরে করা আবশ্যক।

উদাহরণ স্বরূপ:

ফ্ল্যাশ ডিভাইস 1 (টার্গেট_প্রিপারার) ফ্ল্যাশ ডিভাইস 2 (টার্গেট_প্রিপারার) ব্লুটুথ উভয় ডিভাইস কানেক্ট করুন (মাল্টি_টার্গেট_প্রিপারার)

একটি মাল্টি-ডিভাইস পরীক্ষা লিখুন

একটি নিয়মিত একক-ডিভাইস পরীক্ষা লেখার সময়, আপনি IDeviceTest ইন্টারফেস বাস্তবায়ন করেন।

পরীক্ষার অধীনে ডিভাইসগুলি পাওয়ার জন্য পরীক্ষার জন্য, আপনি IMultiDeviceTest বা IInvocationContextReceiver প্রয়োগ করতে পারেন।

IMultiDeviceTest আপনাকে তার IBuildInfo- তে ডিভাইসের একটি সরাসরি মানচিত্র দেয় যখন IInvocationContextReceiver পরে আপনাকে সম্পূর্ণ প্রসঙ্গ (ডিভাইস, IBuildInfo এবং মেটাডেটা) দেয়।

তারপরে আপনি সাধারণ ITestDevice API ব্যবহার করতে সক্ষম হবেন যা TF পরীক্ষার লেখার জন্য রাখে।

device1.sync(device2) এর মতো একটি ডিভাইস থেকে অন্য ডিভাইসে ক্রিয়াকলাপ পরিচালনা করার জন্য কোনো API এখনও বিদ্যমান নেই। আপনি যদি মনে করেন যে আপনার কাছে একটি বাধ্যতামূলক ব্যবহার কেস সমর্থন করার জন্য আছে, তাহলে আপনার যুক্তি অ্যান্ড্রয়েড-প্ল্যাটফর্ম তালিকায় পাঠান।

মাল্টি ডিভাইস হ্যালো ওয়ার্ল্ড উদাহরণ

আমরা একটি হ্যালো ওয়ার্ল্ড-এর মতো উদাহরণ কনফিগারেশন যোগ করেছি: multi-devices.xml multi_target_preparer ইমপ্লিমেন্টেশন HelloWorldMultiTargetPreparer এর একটি উদাহরণও রয়েছে যা দেখায় কিভাবে ডিভাইসের তালিকা এবং তাদের বিল্ডগুলি গ্রহণ করতে হয়।

এটি একটি সম্পূর্ণ উদাহরণ যা জড়িত:

  • দুটি ডিভাইস বরাদ্দ করা হচ্ছে
  • একটি multi_target_preparer এর মাধ্যমে উভয় ডিভাইসে অ্যাক্সেস করা
  • দুটি ডিভাইস ব্যবহার করে এমন একটি পরীক্ষা চালানো হচ্ছে

একবার আপনি Tradefed তৈরি করলে, আপনি TF শেলে নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:

run example/multi-devices

আপনি নিম্নলিখিত ধারণকারী কিছু আউটপুট দেখতে হবে:

08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' from context with build 'com.android.tradefed.build.DeviceBuildInfo@c99cbc1'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' from context with build 'com.android.tradefed.build.DeviceBuildInfo@b41f20c5'

উপরেরটি চালানোর জন্য আপনাকে দুটি ডিভাইস সংযুক্ত করতে হবে। এটির মাধ্যমে চেক করা যেতে পারে: adb devices

যখন আমন্ত্রণ চলছে, আপনি list i এবং list d সহ একক ডিভাইসের মতো এটি নিরীক্ষণ করতে পারেন:

tf >list i
Command Id  Exec Time  Device                          State
1           0m:35      [00b4e73b4cbcd162, LP5A390056]  fetching build
tf >list d
Serial            State      Product   Variant   Build   Battery
00b4e73b4cbcd162  Allocated  bullhead  bullhead  NRD90O  100
LP5A390056        Allocated  shamu     shamu     NRD90I  100

আপনি প্রতিটি আহ্বানের সাথে জড়িত ডিভাইসগুলি, সেইসাথে উপলব্ধ সমস্ত ডিভাইস এবং তাদের নিজ নিজ অবস্থা দেখতে সক্ষম হবেন।

মনে রাখবেন যে এই উদাহরণে আমরা device1 এবং device2 কনফিগারেশনে দুটি ডিভাইসকে কল করেছি; আপনি যে ধরনের ডিভাইস সেট করার আশা করছেন তার উপর নির্ভর করে সম্ভব হলে আপনাকে আরও বর্ণনামূলক নাম দিতে হবে।