গুয়াভা (Guava) লাইব্রেরির Cache এবং EventBus কম্পোনেন্টগুলোর জন্য সঠিকভাবে টেস্টিং করা গুরুত্বপূর্ণ। এটির মাধ্যমে নিশ্চিত করা যায় যে এই ফিচারগুলো প্রত্যাশিতভাবে কাজ করছে এবং সঠিক পারফরম্যান্স নিশ্চিত করছে।
Guava Cache-এর জন্য Testing
Guava Cache একটি ইন-মেমোরি ক্যাশ সমাধান। এর কার্যকারিতা যাচাই করার জন্য নিচের ধাপগুলো অনুসরণ করা যেতে পারে।
1. Cache Data Loading Test
- নিশ্চিত করুন যে ক্যাশে কোনো ডেটা না থাকলে এটি সঠিকভাবে ডেটা লোড করছে।
উদাহরণ:
@Test public void testCacheLoading() throws ExecutionException { LoadingCache<String, String> cache = CacheBuilder.newBuilder() .maximumSize(100) .build(new CacheLoader<String, String>() { @Override public String load(String key) { return "Value for " + key; } }); assertEquals("Value for key1", cache.get("key1")); assertEquals("Value for key2", cache.get("key2")); }
2. Eviction Test
ক্যাশ থেকে এন্ট্রি মুছে ফেলার ফিচারটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করুন।
@Test public void testCacheEviction() throws InterruptedException { Cache<String, String> cache = CacheBuilder.newBuilder() .expireAfterWrite(2, TimeUnit.SECONDS) .build(); cache.put("key1", "value1"); Thread.sleep(3000); // Wait for eviction assertNull(cache.getIfPresent("key1")); }
3. Maximum Size Constraint Test
নিশ্চিত করুন ক্যাশে নির্দিষ্ট সাইজের বেশি এন্ট্রি না থাকে।
@Test public void testCacheMaximumSize() { Cache<String, String> cache = CacheBuilder.newBuilder() .maximumSize(2) .build(); cache.put("key1", "value1"); cache.put("key2", "value2"); cache.put("key3", "value3"); assertNull(cache.getIfPresent("key1")); // Oldest entry should be evicted assertNotNull(cache.getIfPresent("key2")); assertNotNull(cache.getIfPresent("key3")); }
4. Cache Statistics Test
ক্যাশ স্ট্যাটিস্টিক্স মনিটর করুন।
@Test public void testCacheStatistics() throws ExecutionException { Cache<String, String> cache = CacheBuilder.newBuilder() .recordStats() .build(); cache.put("key1", "value1"); cache.getIfPresent("key1"); cache.getIfPresent("key2"); // Cache miss CacheStats stats = cache.stats(); assertEquals(1, stats.hitCount()); assertEquals(1, stats.missCount()); }
EventBus-এর জন্য Testing
Guava-এর EventBus কম্পোনেন্ট একটি ইভেন্ট ডেলিভারি সিস্টেম। এটি ইভেন্ট সাবস্ক্রাইবারদের কাছে সঠিকভাবে ইভেন্ট পৌঁছাচ্ছে কিনা তা টেস্ট করা গুরুত্বপূর্ণ।
1. Event Delivery Test
ইভেন্ট সাবস্ক্রাইবারকে সঠিকভাবে পৌঁছানো হচ্ছে কিনা তা যাচাই করুন।
public class EventReceiver { private String message; @Subscribe public void receiveEvent(String event) { this.message = event; } public String getMessage() { return message; } } @Test public void testEventDelivery() { EventBus eventBus = new EventBus(); EventReceiver receiver = new EventReceiver(); eventBus.register(receiver); eventBus.post("Hello, EventBus!"); assertEquals("Hello, EventBus!", receiver.getMessage()); }
2. Multiple Subscriber Test
একাধিক সাবস্ক্রাইবার সঠিকভাবে কাজ করছে কিনা তা যাচাই করুন।
public class ReceiverA { private String message; @Subscribe public void handleEvent(String event) { this.message = "ReceiverA: " + event; } public String getMessage() { return message; } } public class ReceiverB { private String message; @Subscribe public void handleEvent(String event) { this.message = "ReceiverB: " + event; } public String getMessage() { return message; } } @Test public void testMultipleSubscribers() { EventBus eventBus = new EventBus(); ReceiverA receiverA = new ReceiverA(); ReceiverB receiverB = new ReceiverB(); eventBus.register(receiverA); eventBus.register(receiverB); eventBus.post("Event for all"); assertEquals("ReceiverA: Event for all", receiverA.getMessage()); assertEquals("ReceiverB: Event for all", receiverB.getMessage()); }
3. Exception Handling Test
সাবস্ক্রাইবারে কোনো এক্সেপশন ঘটলে ইভেন্ট বাসের কার্যকারিতা ক্ষতিগ্রস্ত হচ্ছে কিনা তা যাচাই করুন।
public class FaultySubscriber { @Subscribe public void handleEvent(String event) { throw new RuntimeException("Error in subscriber"); } } @Test public void testExceptionHandling() { EventBus eventBus = new EventBus(); FaultySubscriber subscriber = new FaultySubscriber(); eventBus.register(subscriber); try { eventBus.post("Test event"); } catch (Exception e) { fail("EventBus should not throw an exception"); } }
Guava Cache এবং EventBus-এর জন্য সঠিকভাবে টেস্টিং করলে অ্যাপ্লিকেশনের স্থায়িত্ব এবং পারফরম্যান্স উন্নত হয়। উপরের টেস্ট কেসগুলো ডেভেলপমেন্ট প্রক্রিয়ায় অন্তর্ভুক্ত করে সহজেই বাগ এবং অনাকাঙ্ক্ষিত আচরণ এড়ানো সম্ভব।
Read more