Package org.infinispan.client.hotrod.event

Source Code of org.infinispan.client.hotrod.event.ClientEventsTest

package org.infinispan.client.hotrod.event;

import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.VersionedValue;
import org.infinispan.client.hotrod.test.RemoteCacheManagerCallable;
import org.infinispan.client.hotrod.test.SingleHotRodServerTest;
import org.testng.annotations.Test;

import java.io.Serializable;
import java.util.Set;

import static org.infinispan.client.hotrod.test.HotRodClientTestingUtil.withClientListener;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;

/**
* @author Galder Zamarreño
*/
@Test(groups = "functional", testName = "client.hotrod.event.ClientEventsTest")
public class ClientEventsTest extends SingleHotRodServerTest {

   public void testCreatedEvent() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.put(2, "two");
            eventListener.expectOnlyCreatedEvent(2, cache());
         }
      });
   }

   public void testModifiedEvent() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.put(1, "newone");
            eventListener.expectOnlyModifiedEvent(1, cache());
         }
      });
   }

   public void testRemovedEvent() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.remove(1);
            eventListener.expectOnlyRemovedEvent(1, cache());
         }
      });
   }

   public void testReplaceEvents() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.replace(1, "one");
            eventListener.expectNoEvents();
            cache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.replace(1, "newone");
            eventListener.expectOnlyModifiedEvent(1, cache());
         }
      });
   }

   public void testPutIfAbsentEvents() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.putIfAbsent(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.putIfAbsent(1, "newone");
            eventListener.expectNoEvents();
         }
      });
   }

   public void testReplaceIfUnmodifiedEvents() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.replaceWithVersion(1, "one", 0);
            eventListener.expectNoEvents();
            cache.putIfAbsent(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.replaceWithVersion(1, "one", 0);
            eventListener.expectNoEvents();
            VersionedValue<String> versioned = cache.getVersioned(1);
            cache.replaceWithVersion(1, "one", versioned.getVersion());
            eventListener.expectOnlyModifiedEvent(1, cache());
         }
      });
   }

   public void testRemoveIfUnmodifiedEvents() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.removeWithVersion(1, 0);
            eventListener.expectNoEvents();
            cache.putIfAbsent(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.removeWithVersion(1, 0);
            eventListener.expectNoEvents();
            VersionedValue<String> versioned = cache.getVersioned(1);
            cache.removeWithVersion(1, versioned.getVersion());
            eventListener.expectOnlyRemovedEvent(1, cache());
         }
      });
   }

   public void testClearEvents() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            cache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.put(2, "two");
            eventListener.expectOnlyCreatedEvent(2, cache());
            cache.put(3, "three");
            eventListener.expectOnlyCreatedEvent(3, cache());
            cache.clear();
            eventListener.expectUnorderedEvents(ClientEvent.Type.CLIENT_CACHE_ENTRY_REMOVED, 1, 2, 3);
         }
      });
   }

   public void testNoEventsBeforeAddingListener() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      RemoteCache<Integer, String> rcache = remoteCacheManager.getCache();
      rcache.put(1, "one");
      eventListener.expectNoEvents();
      rcache.put(1, "newone");
      eventListener.expectNoEvents();
      rcache.remove(1);
      eventListener.expectNoEvents();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<Integer, String> cache = rcm.getCache();
            cache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            cache.put(1, "newone");
            eventListener.expectOnlyModifiedEvent(1, cache());
            cache.remove(1);
            eventListener.expectOnlyRemovedEvent(1, cache());
         }
      });
   }

   public void testNoEventsAfterRemovingListener() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      final RemoteCache<Integer, String> rcache = remoteCacheManager.getCache();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            rcache.put(1, "one");
            eventListener.expectOnlyCreatedEvent(1, cache());
            rcache.put(1, "newone");
            eventListener.expectOnlyModifiedEvent(1, cache());
            rcache.remove(1);
            eventListener.expectOnlyRemovedEvent(1, cache());
         }
      });
      rcache.put(1, "one");
      eventListener.expectNoEvents();
      rcache.put(1, "newone");
      eventListener.expectNoEvents();
      rcache.remove(1);
      eventListener.expectNoEvents();
   }

   public void testSetListeners() {
      final EventLogListener eventListener1 = new EventLogListener();
      final RemoteCache<Integer, String> rcache = remoteCacheManager.getCache();
      withClientListener(eventListener1, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            Set<Object> listeners = rcache.getListeners();
            assertEquals(1, listeners.size());
            assertEquals(eventListener1, listeners.iterator().next());
            final EventLogListener eventListener2 = new EventLogListener();
            withClientListener(eventListener2, new RemoteCacheManagerCallable(remoteCacheManager) {
               @Override
               public void call() {
                  Set<Object> listeners = rcache.getListeners();
                  assertEquals(2, listeners.size());
                  assertTrue(listeners.contains(eventListener1));
                  assertTrue(listeners.contains(eventListener2));
               }
            });
         }
      });
      Set<Object> listeners = rcache.getListeners();
      assertEquals(0, listeners.size());
   }

   public void testCustomTypeEvents() {
      final EventLogListener<CustomKey> eventListener = new EventLogListener<>();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            RemoteCache<CustomKey, String> cache = rcm.getCache();
            eventListener.expectNoEvents();
            CustomKey key = new CustomKey(1);
            cache.put(key, "one");
            eventListener.expectOnlyCreatedEvent(key, cache());
            cache.replace(key, "newone");
            eventListener.expectOnlyModifiedEvent(key, cache());
            cache.remove(key);
            eventListener.expectOnlyRemovedEvent(key, cache());
         }
      });
   }

   public void testEventReplayAfterAddingListener() {
      final EventLogListener<Integer> eventListener = new EventLogListener<>();
      RemoteCache<Integer, String> cache = remoteCacheManager.getCache();
      cache.put(1, "one");
      cache.put(2, "two");
      eventListener.expectNoEvents();
      withClientListener(eventListener, new RemoteCacheManagerCallable(remoteCacheManager) {
         @Override
         public void call() {
            eventListener.expectUnorderedEvents(ClientEvent.Type.CLIENT_CACHE_ENTRY_CREATED, 1, 2);
         }
      });
   }

   static final class CustomKey implements Serializable {
      final int id;
      CustomKey(int id) {
         this.id = id;
      }

      @Override
      public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
         CustomKey customKey = (CustomKey) o;
         return id == customKey.id;
      }

      @Override
      public int hashCode() {
         return id;
      }
   }

}
TOP

Related Classes of org.infinispan.client.hotrod.event.ClientEventsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.