VTS ড্যাশবোর্ড সেট-আপ

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

VTS ড্যাশবোর্ড UI, VTS ইনফ্রাস্ট্রাকচার দ্বারা প্রদত্ত ফিচার (যেমন, নেটিভ কোড কভারেজ) সাপোর্ট করে এবং অপ্টিমাইজ করা ও ভালোভাবে চিহ্নিত করা পারফর্ম্যান্স টুল ডেভেলপ করার জন্য একটানা পারফর্ম্যান্স মনিটর করার সুবিধা প্রদান করে।

প্রয়োজনীয়তা

VTS ড্যাশবোর্ড ব্যবহার করার জন্য নিম্নলিখিত পরিষেবাগুলি প্রয়োজন:

টেস্ট কভারেজ দেখার জন্য সোর্স কোড সার্ভারের (যেমন, Gerrit) সাথে REST API-এর উপর নির্ভর করতে হয়, যা ওয়েব পরিষেবাকে আগে থেকে থাকা অ্যাক্সেস কন্ট্রোল তালিকা অনুযায়ী মূল সোর্স কোড ফেচ করতে দেয়।

স্থাপত্যশিল্প

VTS ড্যাশবোর্ড নিম্নলিখিত আর্কিটেকচার ব্যবহার করে:

ছবি ১. VTS ড্যাশবোর্ড আর্কিটেকচার।

REST ইন্টারফেসের মাধ্যমে Cloud Datastore ডেটাবেসে টেস্ট স্ট্যাটাস ফলাফল ক্রমাগত আপলোড করা হয়। VTS রানার অটোমেটিক ফলাফল প্রসেস করে এবং Protobuf ফর্ম্যাট ব্যবহার করে সেগুলি সিরিয়ালাইজ করে।

ওয়েব সার্ভলেট হল ব্যবহারকারীদের জন্য প্রাথমিক অ্যাক্সেস পয়েন্ট, যা Datastore ডেটাবেস থেকে ডেটা ডেলিভার ও প্রসেস করে। সার্ভলেটে এগুলি অন্তর্ভুক্ত: সব টেস্ট ডেলিভার করার জন্য একটি প্রধান সার্ভলেট, ব্যবহারকারীর পছন্দের আইটেম ম্যানেজ করার জন্য একটি পছন্দ সংক্রান্ত সার্ভলেট, টেস্ট টেবিল পপুলেট করার জন্য একটি ফলাফল সংক্রান্ত সার্ভলেট, প্রোফাইলিং ডেটা প্রস্তুত করার জন্য একটি গ্রাফ সার্ভলেট এবং ক্লায়েন্টের জন্য কভারেজ ডেটা প্রস্তুত করার জন্য একটি কভারেজ সার্ভলেট।

প্রতিটি টেস্ট মডিউলের নিজস্ব Datastore পূর্বপুরুষের ট্রি থাকে এবং টেস্টের ফলাফল টেস্ট শুরু হওয়ার সময়ের Unix টাইমস্ট্যাম্পের সাথে ইন্ডেক্স করা হয়। ডেটাবেসে কভারেজ ডেটা টেস্টের ফলাফলের সাথে কাউন্টের ভেক্টর (অর্থাৎ, আসল সোর্স ফাইলের প্রতিটি লাইনের জন্য) হিসেবে সেভ করা হয় এবং সোর্স কোড সার্ভার থেকে সোর্স কোড ফেচ করার জন্য শনাক্তকারী তথ্য সেভ করা হয়।

বিজ্ঞপ্তি পরিষেবা টাস্ক কিউ ব্যবহার করে চলে, টেস্ট কেসের স্ট্যাটাসে পরিবর্তন শনাক্ত করে এবং সাবস্ক্রাইবারদের বিজ্ঞপ্তি পাঠায়। ডেটা ফ্রেশনেস ও আগে থেকে থাকা সমস্যা ট্র্যাক করার জন্য স্টেটফুল তথ্য স্ট্যাটাস টেবিলে স্টোর করা হয়। এর ফলে, বিজ্ঞপ্তি পরিষেবা, আলাদা আলাদা টেস্ট কেস ফেল করা ও ঠিক করা সংক্রান্ত বিস্তারিত তথ্য প্রদান করতে পারে।

কোড স্ট্রাকচার

VTS ড্যাশবোর্ডের প্রয়োজনীয় কম্পোনেন্টগুলির মধ্যে Java-তে ইমপ্লিমেন্ট করা সার্ভলেট, ফ্রন্ট-এন্ড JSP, CSS স্টাইলশিট ও কনফিগারেশন ফাইল অন্তর্ভুক্ত। নিচে দেওয়া তালিকায় এইসব কম্পোনেন্টের লোকেশন ও বিবরণ দেওয়া আছে (test/vts/web/dashboard-এর তুলনায় সব পাথ):

  • pom.xml
    সেটিংস ফাইল যেখানে এনভায়রনমেন্ট ভেরিয়েবেল ও নির্ভরতা নির্দিষ্ট করা আছে।
  • src/main/java/com/android/vts/api/
    REST-এর মাধ্যমে ডেটার সাথে ইন্টার‍্যাক্ট করার জন্য এন্ডপয়েন্ট থাকে।
  • src/main/java/com/android/vts/entity/
    Datastore এন্টিটির Java মডেল থাকে ।
  • src/main/java/com/android/vts/proto/
    Protobuf-এর জন্য Java ফাইল থাকে যার মধ্যে VtsReportMessage.java অন্তর্ভুক্ত, এটি হল Protobuf-এর Java ইমপ্লিমেন্টেশন যা VTS পরীক্ষার ফলাফল বর্ণনা করতে ব্যবহার করা হয়।
  • src/main/java/com/android/vts/servlet/
    সার্ভলেটের জন্য Java ফাইল আছে।
  • src/main/java/com/android/vts/util/
    সার্ভলেট দ্বারা ব্যবহৃত ইউটিলিটি ফাংশন ও ক্লাসের জন্য জাভা ফাইল থাকে।
  • src/test/java/com/android/vts/
    সার্ভলেট ও ইউটিলিটির জন্য UI পরীক্ষা করা হয়।
  • src/main/webapp/
    UI (JSP, CSS, XML) সম্পর্কিত ফাইল আছে:
    • js/. ওয়েবপেজ ব্যবহার করে এমন জাভাস্ক্রিপ্ট ফাইল থাকে।
    • WEB-INF/. কনফিগারেশন ও UI ফাইল থাকে।
    • jsp/. প্রতিটি ওয়েব পেজের জন্য JSP ফাইল থাকে।
  • appengine-web.xml
    সেটিংস ফাইল যেখানে এনভায়রনমেন্ট ভেরিয়েবেলগুলি ভেরিয়েবেলে লোড করা হয়।
  • web.xml
    সেটিংস ফাইল যেখানে সার্ভলেট ম্যাপিং এবং নিরাপত্তা সংক্রান্ত বিধিনিষেধ সংজ্ঞায়িত করা হয়।
  • cron.xml
    শিডিউল করা টাস্ক (যেমন, বিজ্ঞপ্তি পরিষেবা) নির্ধারণকারী সেটিংস ফাইল।

ড্যাশবোর্ড সেট-আপ করা

VTS ড্যাশবোর্ড সেট-আপ করতে:

  1. Google Cloud App Engine প্রোজেক্ট তৈরি করুন এবং এগুলি ইনস্টল করে ডিপ্লয়মেন্ট হোস্ট সেট-আপ করুন:
    • Java 8
    • Google App Engine SDK
    • Maven
  2. Google Cloud API ম্যানেজারে OAuth 2.0 ক্লায়েন্ট আইডি জেনারেট করুন।
  3. পরিষেবা অ্যাকাউন্ট তৈরি করুন এবং কীফাইল তৈরি করুন।
  4. App Engine Email API-এর অনুমোদিত প্রেরকদের তালিকায় একটি ইমেল আইডি যোগ করুন।
  5. Google Analytics অ্যাকাউন্ট সেট-আপ করুন।
  6. ড্যাশবোর্ড pom.xml-এ এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করুন:
    • OAuth 2.0 আইডির (ধাপ ২ থেকে) সাথে ক্লায়েন্ট আইডি সেট করুন।
    • কীফাইলে (থেকে ধাপ ৩) অন্তর্ভুক্ত শনাক্তকারী সহ পরিষেবা ক্লায়েন্ট আইডি সেট করুন।
    • সতর্কতার জন্য প্রেরকের ইমেল আইডি উল্লেখ করুন (ধাপ ৪ থেকে)।
    • এমন একটি ইমেল ডোমেন নির্দিষ্ট করুন যেখানে সব ইমেল পাঠানো হবে।
    • Gerrit REST সার্ভারের অ্যাড্রেস উল্লেখ করুন।
    • Gerrit REST সার্ভারের জন্য ব্যবহার করতে OAuth 2.0 স্কোপ উল্লেখ করুন।
    • Google Analytics আইডি (৫ম ধাপ থেকে) উল্লেখ করুন।
    • প্রোজেক্ট তৈরি ও ডিপ্লয় করুন।
  7. টার্মিনালে, mvn clean appengine:update চালান।

নিরাপত্তা সংক্রান্ত বিষয়

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

এই ঝুঁকি এড়াতে, কভারেজ তথ্যের সাথে সোর্স কোড পরিবেশন করার পরিবর্তে, ড্যাশবোর্ড সরাসরি একটি কভারেজ ভেক্টর পরিচালনা করে (অর্থাৎ, একটি সোর্স ফাইলের লাইনে এক্সিকিউশন কাউন্ট ম্যাপিংয়ের একটি ভেক্টর)। কভারেজ ভেক্টরের সাথে, ড্যাশবোর্ড একটি Git প্রোজেক্টের নাম এবং পাথ পায় যাতে ক্লায়েন্ট একটি বাহ্যিক সোর্স কোড API থেকে কোড আনতে পারে। ক্লায়েন্ট ব্রাউজার এই তথ্য পায় এবং আসল সোর্স কোডের জন্য সোর্স কোড সার্ভার কোয়েরি করতে জাভাস্ক্রিপ্টে ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) ব্যবহার করে; এর ফলে পাওয়া কোড কভারেজ ভেক্টরের সাথে একত্রিত করে ডিসপ্লে তৈরি করা হয়।

এই সরাসরি পদ্ধতিটি অ্যাটাক সারফেসকে প্রসারিত করে না কারণ ড্যাশবোর্ড একটি বাইরের পরিষেবার সাথে প্রমাণীকরণ করতে ব্যবহারকারীর কুকি ব্যবহার করে (এর অর্থ হল, যে ব্যবহারকারী সরাসরি সোর্স কোড অ্যাক্সেস করতে পারে না, সে সংবেদনশীল তথ্য দেখার জন্য ড্যাশবোর্ডকে ব্যবহার করতে পারে না)।