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

অ্যান্ড্রয়েড 5.0 থেকে, লিনাক্স কার্নেলগুলিতে অ্যান্ড্রয়েড নেটওয়ার্কিং স্ট্যাকের সঠিক অপারেশনের জন্য অনেকগুলি কমিট প্রয়োজন যা তুলনামূলকভাবে সম্প্রতি আপস্ট্রিম করা হয়েছে বা এখনও এটি আপস্ট্রিম করা হয়নি। প্রয়োজনীয় কার্নেল কার্যকারিতা ম্যানুয়ালি যাচাই করা বা অনুপস্থিত প্রতিশ্রুতিগুলি ট্র্যাক করা সহজ নয়, তাই কার্নেলটি প্রত্যাশা অনুযায়ী আচরণ করে তা নিশ্চিত করতে অ্যান্ড্রয়েড টিম যে পরীক্ষাগুলি ব্যবহার করে তা ভাগ করে নিচ্ছে৷

কেন পরীক্ষা চালানো?

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

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

পরীক্ষায় উত্তীর্ণ না হলে, ডিভাইসের নেটওয়ার্ক স্ট্যাকটি ভুল আচরণ করবে, যার ফলে ব্যবহারকারী-দৃশ্যমান সংযোগের বাগগুলি ঘটবে (যেমন Wi-Fi নেটওয়ার্ক বন্ধ হয়ে যাওয়া)। ডিভাইসটি সম্ভবত অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (সিটিএস) পরীক্ষায় ব্যর্থ হবে।

পরীক্ষা ব্যবহার করে

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

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

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

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

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

পরীক্ষা চলছে

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

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

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

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

অবদান

রিপোর্টিং সমস্যা

অনুগ্রহ করে কম্পোনেন্ট-নেটওয়ার্কিং লেবেল সহ অ্যান্ড্রয়েড ইস্যু ট্র্যাকারে কার্নেল নেটওয়ার্ক পরীক্ষায় কোনো সমস্যা রিপোর্ট করুন।

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

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

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