কার্নেল নেটওয়ার্কিং ইউনিট পরীক্ষা

অ্যান্ড্রয়েড ৫.০ থেকে, লিনাক্স কার্নেলে অ্যান্ড্রয়েড নেটওয়ার্কিং স্ট্যাকের যথাযথ কার্যকারিতার জন্য এমন কিছু কমিটের প্রয়োজন হয়, যেগুলো তুলনামূলকভাবে সম্প্রতি আপস্ট্রিম করা হয়েছে অথবা এখনও আপস্ট্রিম করা হয়নি। প্রয়োজনীয় কার্নেল কার্যকারিতা ম্যানুয়ালি যাচাই করা বা অনুপস্থিত কমিটগুলো খুঁজে বের করা সহজ নয়, তাই কার্নেলটি প্রত্যাশিতভাবে কাজ করছে কিনা তা নিশ্চিত করতে অ্যান্ড্রয়েড টিম তাদের ব্যবহৃত টেস্টগুলো শেয়ার করছে।

পরীক্ষাগুলো চালানোর কারণ

এই পরীক্ষাগুলো তিনটি প্রধান কারণে বিদ্যমান:

  1. কোনো ডিভাইসে ব্যবহৃত লিনাক্স কার্নেলের সঠিক সংস্করণটি সাধারণত ডিভাইস-ভিত্তিক হয়ে থাকে, এবং পরীক্ষাগুলো না চালিয়ে কোনো কার্নেল সঠিকভাবে কাজ করছে কিনা তা জানা কঠিন।
  2. বিভিন্ন কার্নেল সংস্করণ বা বিভিন্ন ডিভাইস ট্রিতে কার্নেল প্যাচ ফরওয়ার্ড-পোর্টিং এবং ব্যাক-পোর্টিং করার ফলে এমন সূক্ষ্ম সমস্যা দেখা দিতে পারে, যা পরীক্ষা না চালালে চিহ্নিত করা অসম্ভব।
  3. নতুন নেটওয়ার্কিং বৈশিষ্ট্যগুলির জন্য নতুন কার্নেল কার্যকারিতা বা কার্নেল বাগ সংশোধনের প্রয়োজন হতে পারে।

টেস্টগুলো পাস না করলে, ডিভাইসটির নেটওয়ার্ক স্ট্যাক সঠিকভাবে কাজ করে না, যার ফলে ব্যবহারকারীর চোখে কানেক্টিভিটি সংক্রান্ত ত্রুটি (যেমন ওয়াই-ফাই নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন হয়ে যাওয়া) দেখা দেয়। ডিভাইসটি সম্ভবত অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্টেও ব্যর্থ হবে।

পরীক্ষাগুলো ব্যবহার করুন

এই টেস্টগুলো একটি লিনাক্স হোস্ট মেশিনে কার্নেলকে প্রসেস হিসেবে বুট করার জন্য ইউজার-মোড লিনাক্স ব্যবহার করে। উপযুক্ত অপারেটিং সিস্টেম সংস্করণগুলোর জন্য ‘বিল্ড এনভায়রনমেন্ট স্থাপন’ (Establishing a Build Environment) অংশটি দেখুন। ইউনিট টেস্ট ফ্রেমওয়ার্কটি একটি উপযুক্ত ডিস্ক ইমেজ দিয়ে কার্নেল বুট করে এবং হোস্ট ফাইল সিস্টেম থেকে টেস্টগুলো চালায়। টেস্টগুলো পাইথনে লেখা এবং কার্নেলের আচরণ ও সকেট এপিআই (API) পরীক্ষা করার জন্য TAP ইন্টারফেস ব্যবহার করে।

ARCH=um এর জন্য কার্নেল কম্পাইল করুন

টেস্টগুলো চালানোর জন্য, কার্নেলটিকে অবশ্যই ARCH=um SUBARCH=x86_64 এর জন্য কম্পাইল করতে হবে। এটি আপস্ট্রিম এবং সাধারণ অ্যান্ড্রয়েড কার্নেল ট্রি (যেমন android-4.4 ) উভয় ক্ষেত্রেই একটি সমর্থিত আর্কিটেকচার। কিন্তু কখনও কখনও ডিভাইস কার্নেলগুলো এই মোডে কম্পাইল হয় না, কারণ ডিভাইস ট্রি-তে সাধারণ ফাইলগুলোর মধ্যে ডিভাইস-নির্দিষ্ট বা হার্ডওয়্যার-নির্দিষ্ট কোড থাকে (উদাহরণস্বরূপ sys/exit.c )।

অনেক ক্ষেত্রে, হার্ডওয়্যার-নির্দিষ্ট কোডকে একটি #ifdef আড়ালে রাখাই যথেষ্ট। সাধারণত এটি এমন একটি কনফিগারেশন অপশনের উপর #ifdef হওয়া উচিত, যা কোডটির সাথে প্রাসঙ্গিক নির্দিষ্ট ফিচারটিকে নিয়ন্ত্রণ করে। যদি এমন কোনো কনফিগারেশন অপশন না থাকে, তবে হার্ডওয়্যার-নির্দিষ্ট কোডকে #ifndef CONFIG_UML ব্লকের ভিতরে রাখুন।

সাধারণত, এটি ঠিক করার দায়িত্ব কার্নেল ট্রি প্রদানকারীর (যেমন চিপসেট বা এসওসি বিক্রেতা) হওয়া উচিত। আমরা ওইএম এবং বিক্রেতাদের সাথে কাজ করছি যাতে বর্তমান ও ভবিষ্যৎ কার্নেলগুলো কোনো পরিবর্তন ছাড়াই ARCH=um SUBARCH=x86_64 এর জন্য কম্পাইল হয়।

পরীক্ষাগুলো চালান

টেস্টগুলো kernel/tests/net/test এ রয়েছে। AOSP main থেকে টেস্টগুলো চালানোর পরামর্শ দেওয়া হচ্ছে, কারণ এগুলোই সবচেয়ে হালনাগাদ; কিছু ক্ষেত্রে, কোনো নির্দিষ্ট অ্যান্ড্রয়েড রিলিজে সঠিক কার্যকারিতার জন্য প্রয়োজনীয় কার্নেল ফিচারগুলোর সম্পূর্ণ টেস্ট কভারেজ সেই রিলিজে এখনো নেই। টেস্টগুলো কীভাবে চালাতে হয় সে সম্পর্কে তথ্যের জন্য, কার্নেল নেটওয়ার্ক টেস্ট README ফাইলটি দেখুন। মূলত, আপনার কার্নেল ট্রি-র শীর্ষ থেকে, এটি চালান:

ANDROID_TREE/kernel/tests/net/test/run_net_test.sh all_tests.sh

পরীক্ষায় উত্তীর্ণ হন

কার্নেল নেটওয়ার্ক টেস্টের পাইথন সোর্স ফাইলগুলোতে এমন কমেন্ট থাকে যা টেস্টগুলো পাস করার জন্য প্রয়োজনীয় বলে পরিচিত কার্নেল কমিটগুলোকে নির্দিষ্ট করে দেয়। AOSP-এর kernel/common প্রোজেক্টে থাকা কমন কার্নেল ট্রিগুলোতে— android-4.4 এবং তার উপরের সমস্ত কমন কার্নেল ব্রাঞ্চে—টেস্টগুলো পাস করা উচিত। সুতরাং, কোনো কার্নেলে টেস্টগুলো পাস করানোটা কেবল সংশ্লিষ্ট কমন কার্নেল ব্রাঞ্চ থেকে ক্রমাগত মার্জ করার একটি বিষয়।

অবদান

সমস্যা রিপোর্ট করুন

কার্নেল নেটওয়ার্ক টেস্ট সংক্রান্ত যেকোনো সমস্যা অ্যান্ড্রয়েড ইস্যু ট্র্যাকারে Component-Networking লেবেল দিয়ে রিপোর্ট করুন।

ডকুমেন্ট কমিট এবং টেস্ট যোগ করা

উপরে বর্ণিত পদ্ধতি অনুযায়ী সমস্যাগুলো রিপোর্ট করুন, এবং সম্ভব হলে সমস্যাটি সমাধানের জন্য একটি পরিবর্তন আপলোড করুন, যদি:

  • সাধারণ কার্নেল ট্রিগুলোতে পরীক্ষাগুলো উত্তীর্ণ হয় না।
  • আপনি এমন একটি প্রয়োজনীয় কমিট খুঁজে পান যা সোর্স কমেন্টসে উল্লেখ করা হয়নি,
  • আপস্ট্রিম কার্নেলে টেস্টগুলো পাস করাতে হলে বড় ধরনের পরিবর্তন প্রয়োজন।
  • আপনার মতে, পরীক্ষাগুলো অতিরিক্ত সুনির্দিষ্ট, অথবা ভবিষ্যতের কার্নেলগুলোতে পরীক্ষাগুলো ব্যর্থ হবে।
  • আপনি আরও পরীক্ষা যোগ করতে অথবা বিদ্যমান পরীক্ষাগুলোর পরিধি বাড়াতে চান।