পরিষেবার নাম সচেতন HAL পরীক্ষা

যে ডিভাইসে ভেন্ডর টেস্ট স্যুট (VTS) পরীক্ষা চলছে তার উপর ভিত্তি করে একটি প্রদত্ত HAL ইন্সট্যান্সের পরিষেবার নাম পাওয়ার জন্য Android 9 সমর্থন অন্তর্ভুক্ত করে। পরিষেবার নাম সচেতন VTS HAL পরীক্ষাগুলি চালানো ডেভেলপারদের লক্ষ্য- এবং হোস্ট-সাইড VTS পরীক্ষা উভয় ক্ষেত্রেই বিক্রেতা এক্সটেনশন, একাধিক HAL, এবং একাধিক HAL দৃষ্টান্ত স্বয়ংক্রিয়ভাবে পরীক্ষা করতে সক্ষম করে।

পরিষেবার নাম সম্পর্কে

চলমান HAL পরিষেবার প্রতিটি দৃষ্টান্ত একটি পরিষেবার নাম দিয়ে নিজেকে নিবন্ধন করে।

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, VTS HAL পরীক্ষা চালাচ্ছেন বিকাশকারীদের getService() এ পরীক্ষার ক্লায়েন্টের জন্য সঠিক পরিষেবার নাম সেট করতে হবে বা নামটি খালি রেখে ডিফল্ট পরিষেবার নামে ফলব্যাক করতে হবে। এই পদ্ধতির অসুবিধা অন্তর্ভুক্ত:

  • সঠিক পরিষেবার নাম সেট করতে পরীক্ষা বিকাশকারীর জ্ঞানের উপর নির্ভর করুন।
  • ডিফল্টরূপে একটি একক পরিষেবা দৃষ্টান্তের বিরুদ্ধে পরীক্ষায় সীমাবদ্ধ।
  • পরিষেবার নামগুলির ম্যানুয়াল রক্ষণাবেক্ষণ (অর্থাৎ নামগুলি হার্ড-কোডেড, পরিষেবার নাম পরিবর্তন হলে সেগুলি ম্যানুয়ালি আপডেট করতে হবে৷

অ্যান্ড্রয়েড 9-এ, বিকাশকারীরা স্বয়ংক্রিয়ভাবে পরীক্ষাধীন ডিভাইসের উপর ভিত্তি করে প্রদত্ত HAL উদাহরণের জন্য পরিষেবার নাম পেতে পারে। এই পদ্ধতির সুবিধার মধ্যে রয়েছে পরীক্ষার জন্য সমর্থন:

  • বিক্রেতা HAL এক্সটেনশন . উদাহরণস্বরূপ, যখন একজন বিক্রেতার কাছে camera.provider HAL-এর একটি বাস্তবায়ন থাকে যা একটি কাস্টমাইজড পরিষেবার নাম সহ বিক্রেতা ডিভাইসে চলে, তখন VTS বিক্রেতার উদাহরণ সনাক্ত করতে পারে এবং এর বিরুদ্ধে পরীক্ষা চালাতে পারে।
  • একাধিক HAL দৃষ্টান্ত । উদাহরণস্বরূপ, যখন graphics.composer HAL-এর দুটি দৃষ্টান্ত থাকে (একটি পরিষেবার নাম "ডিফল্ট" সহ এবং একটি পরিষেবার নাম "vr" সহ), VTS উভয় দৃষ্টান্ত সনাক্ত করতে পারে এবং তাদের প্রত্যেকের বিরুদ্ধে পরীক্ষা চালাতে পারে।
  • মাল্টি-এইচএএল টেস্টিং । একাধিক দৃষ্টান্ত সহ একাধিক HAL পরীক্ষা করার সময় ব্যবহার করা হয় উদাহরণস্বরূপ, VTS পরীক্ষা চালানোর সময় যা যাচাই করে যে কীভাবে কীমাস্টার এবং দারোয়ান HAL একসাথে কাজ করে, VTS সেই HAL গুলির জন্য পরিষেবা দৃষ্টান্তের সমস্ত সমন্বয় পরীক্ষা করতে পারে।

টার্গেট-সাইড পরীক্ষা

টার্গেট-সাইড পরীক্ষার জন্য পরিষেবার নাম সচেতনতা সক্ষম করতে, Android 9 একটি কাস্টমাইজযোগ্য পরীক্ষার পরিবেশ ( VtsHalHidlTargetTestEnvBase ) অন্তর্ভুক্ত করে যা এতে ইন্টারফেস সরবরাহ করে:

  • পরীক্ষায় লক্ষ্য করে HAL(গুলি) নিবন্ধন করুন।
  • সমস্ত নিবন্ধিত HAL(গুলি) তালিকাভুক্ত করুন।
  • VTS ফ্রেমওয়ার্ক দ্বারা প্রদত্ত নিবন্ধিত HAL(গুলি) এর জন্য পরিষেবার নাম(গুলি) পান৷

উপরন্তু, VTS ফ্রেমওয়ার্ক এর জন্য রানটাইম সমর্থন প্রদান করে:

  • সমস্ত নিবন্ধিত পরীক্ষা HAL(গুলি) পেতে পরীক্ষার বাইনারি প্রাক-প্রক্রিয়াকরণ।
  • সমস্ত চলমান পরিষেবার দৃষ্টান্তগুলি সনাক্ত করা এবং প্রতিটি উদাহরণের জন্য পরিষেবার নাম পাওয়া ( vendor/manifest.xml উপর ভিত্তি করে পুনরুদ্ধার করা হয়েছে)।
  • সমস্ত উদাহরণ সংমিশ্রণ গণনা করা হচ্ছে (একাধিক HAL পরীক্ষা সমর্থন করতে)।
  • প্রতিটি পরিষেবার উদাহরণের জন্য একটি নতুন পরীক্ষা তৈরি করা হচ্ছে (সংমিশ্রণ)।

উদাহরণ:

Runtime support for target-side testing

চিত্র 1. লক্ষ্য-সাইড পরীক্ষার জন্য VTS ফ্রেমওয়ার্ক রানটাইম সমর্থন

পরিষেবার নাম সচেতন লক্ষ্য-পার্শ্ব পরীক্ষা সেট আপ করুন

টার্গেট-সাইড সার্ভিস নাম সচেতন পরীক্ষার জন্য আপনার পরীক্ষার পরিবেশ সেটআপ করতে:

  1. VtsHalHidlTargetTestEnvBase উপর ভিত্তি করে একটি testEnvironment সংজ্ঞায়িত করুন এবং পরীক্ষা HALগুলি নিবন্ধন করুন:
    #include <VtsHalHidlTargetTestEnvBase.h>
    class testEnvironment  : public::testing::VtsHalHidlTargetTestEnvBase {
          virtual void registerTestServices() override {
        registerTestService<IFoo>();
          }
    };
  2. পরিষেবার নাম পাস করতে পরীক্ষার পরিবেশ দ্বারা প্রদত্ত getServiceName() ব্যবহার করুন:
    ::testing::VtsHalHidlTargetTestBase::getService<IFoo>(testEnv->getServiceName<IFoo>("default"));
    // "default" is the default service name you want to use.
  3. main() এবং initTest এ পরীক্ষার পরিবেশ নিবন্ধন করুন:
    int main(int argc, char** argv) {
            testEnv = new testEnvironment();
            ::testing::AddGlobalTestEnvironment(testEnv);
            ::testing::InitGoogleTest(&argc, argv);
            testEnv->init(argc, argv);
            return RUN_ALL_TESTS();
    }

অতিরিক্ত উদাহরণের জন্য, VtsHalCameraProviderV2_4TargetTest.cpp দেখুন।

VTS হোস্ট-সাইড পরীক্ষা

VTS হোস্ট-সাইড টেস্টগুলি লক্ষ্য ডিভাইসে টেস্ট বাইনারিগুলির পরিবর্তে হোস্ট সাইডে টেস্ট স্ক্রিপ্ট চালায়। এই পরীক্ষাগুলির জন্য পরিষেবার নাম সচেতনতা সক্ষম করতে, আপনি বিভিন্ন পরামিতির (gtest প্যারামিটারাইজড পরীক্ষার অনুরূপ) একই পরীক্ষার স্ক্রিপ্ট একাধিকবার চালানোর জন্য হোস্ট সাইড টেমপ্লেট ব্যবহার করতে পারেন।

Runtime support for host-side testing

চিত্র 2. হোস্ট-সাইড পরীক্ষার জন্য VTS ফ্রেমওয়ার্ক রানটাইম সমর্থন
  • হ্যাল টেস্ট স্ক্রিপ্ট পরীক্ষায় লক্ষ্য করা HAL পরিষেবা(গুলি) নির্দিষ্ট করে।
  • hal_hidl_host_test ( param_test এর সাবক্লাস) পরীক্ষার স্ক্রিপ্ট থেকে নিবন্ধিত পরীক্ষার HAL(গুলি) নেয়, HAL পরীক্ষার জন্য সংশ্লিষ্ট পরিষেবার নাম(গুলি) সনাক্ত করে, তারপর পরীক্ষার পরামিতি হিসাবে পরিষেবার নামের সমন্বয় (মাল্টি-এইচএএল পরীক্ষার জন্য) তৈরি করে। এটি একটি পদ্ধতি getHalServiceName() প্রদান করে যা বর্তমান পরীক্ষার ক্ষেত্রে পাস করা প্যারামিটার অনুসারে সংশ্লিষ্ট পরিষেবার নাম প্রদান করে।
  • param_test টেমপ্লেট প্যারামিটারের একটি তালিকা গ্রহণ করতে এবং প্রতিটি প্যারামিটারের বিরুদ্ধে প্রদত্ত সমস্ত পরীক্ষার ক্ষেত্রে চালানোর জন্য যুক্তি সমর্থন করে। অর্থাৎ প্রতিটি পরীক্ষার ক্ষেত্রে এটি N নতুন প্যারামিটারাইজড টেস্ট কেস (N = প্যারামিটারের আকার) তৈরি করে, প্রতিটি প্রদত্ত প্যারামিটার সহ।

পরিষেবার নাম সচেতন হোস্ট-সাইড পরীক্ষা সেট আপ করুন

হোস্ট-সাইড পরিষেবার নাম সচেতন পরীক্ষার জন্য আপনার পরীক্ষার পরিবেশ সেটআপ করতে:

  1. পরীক্ষার স্ক্রিপ্টে লক্ষ্য HAL পরিষেবা নির্দিষ্ট করুন:
    TEST_HAL_SERVICES = { "android.hardware.foo@1.0::IFoo" }
  2. getHalServiceName() কল করুন এবং init hal এ নামটি পাস করুন:
    self.dut.hal.InitHidlHal(
                target_type='foo',
                target_basepaths=self.dut.libPaths,
                target_version=1.0,
                target_package='android.hardware.foo',
                target_component_name='IFoo',
                hw_binder_service_name
                      =self.getHalServiceName("android.hardware.foo@1.0::IFoo"),
                bits=int(self.abi_bitness))

অতিরিক্ত উদাহরণের জন্য, VtsHalMediaOmxStoreV1_0HostTest.py দেখুন।

পরীক্ষা HALs নিবন্ধন

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, AndroidTest.xml এ কনফিগার করা <precondition-lshal> বিকল্পটি ব্যবহার করে VTS পরীক্ষার HAL শনাক্ত করেছে। এই পদ্ধতিটি বজায় রাখা কঠিন ছিল (যেহেতু এটি পরীক্ষাটি সঠিকভাবে কনফিগার করতে এবং সেই অনুযায়ী কনফিগারেশন আপডেট করার জন্য ডেভেলপারদের উপর নির্ভর করে) এবং ভুল (যেহেতু এতে শুধুমাত্র প্যাকেজ এবং সংস্করণের তথ্য ছিল এবং ইন্টারফেসের তথ্য নয়)।

অ্যান্ড্রয়েড 9-এ, VTS পরিষেবার নাম সচেতনতা ব্যবহার করে পরীক্ষামূলক HAL সনাক্ত করে। নিবন্ধিত পরীক্ষার HALগুলিও এর জন্য দরকারী:

  • পূর্বশর্ত চেক . একটি HAL পরীক্ষা চালানোর আগে, VTS নিশ্চিত করতে পারে টেস্টিং HAL টার্গেট ডিভাইসে উপলব্ধ এবং তা না হলে পরীক্ষাগুলি এড়িয়ে যান ( VTS testability চেক দেখুন)।
  • কভারেজ পরিমাপ । VTS ক্রস-প্রসেস কোড কভারেজ পরিমাপকে সমর্থন করে পরীক্ষার HAL পরিষেবাগুলি সম্পর্কে জ্ঞানের মাধ্যমে যা এটি পরিমাপ করতে চায় (যেমন হ্যাল পরিষেবা প্রক্রিয়ার জন্য কভারেজ ফ্লাশ করতে)।