Java Technologies Guava Cache এবং EventBus এর জন্য Testing গাইড ও নোট

332

গুয়াভা (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-এর জন্য সঠিকভাবে টেস্টিং করলে অ্যাপ্লিকেশনের স্থায়িত্ব এবং পারফরম্যান্স উন্নত হয়। উপরের টেস্ট কেসগুলো ডেভেলপমেন্ট প্রক্রিয়ায় অন্তর্ভুক্ত করে সহজেই বাগ এবং অনাকাঙ্ক্ষিত আচরণ এড়ানো সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...