Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 539   Methods: 9
NCLOC: 411   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
EvictionInterceptorTest.java 100% 100% 100% 100%
coverage
 1    /*
 2    * JBoss, the OpenSource J2EE webOS
 3    *
 4    * Distributable under LGPL license.
 5    * See terms of license at gnu.org.
 6    */
 7    package org.jboss.cache.interceptors;
 8   
 9    import junit.framework.TestCase;
 10    import org.jboss.cache.CacheImpl;
 11    import org.jboss.cache.DefaultCacheFactory;
 12    import org.jboss.cache.Fqn;
 13    import org.jboss.cache.Node;
 14    import org.jboss.cache.Region;
 15    import org.jboss.cache.RegionManager;
 16    import org.jboss.cache.eviction.DummyEvictionConfiguration;
 17    import org.jboss.cache.eviction.EvictedEventNode;
 18    import org.jboss.cache.eviction.EvictionPolicyConfig;
 19    import org.jboss.cache.eviction.NodeEventType;
 20    import org.jboss.cache.lock.IsolationLevel;
 21    import org.jboss.cache.marshall.MethodCall;
 22    import org.jboss.cache.marshall.MethodCallFactory;
 23    import org.jboss.cache.marshall.MethodDeclarations;
 24   
 25    import java.util.HashMap;
 26    import java.util.Map;
 27   
 28    /**
 29    * @author Daniel Huang (dhuang@jboss.org)
 30    * @version $Revision: $
 31    */
 32    public class EvictionInterceptorTest extends TestCase
 33    {
 34    private static final String fqn1 = "/a/b/c";
 35    private static final String fqn2 = "/a/b";
 36    private static final String fqn3 = "/a/b/d";
 37   
 38    private static final String fqn4 = "/d/e/f";
 39   
 40    private CacheImpl cache;
 41    private Interceptor interceptor;
 42    private RegionManager regionManager;
 43   
 44  7 public void setUp() throws Exception
 45    {
 46  7 super.setUp();
 47  7 regionManager = new RegionManager();
 48  7 EvictionPolicyConfig config = new DummyEvictionConfiguration();
 49  7 regionManager.setUsingEvictions(true);
 50   
 51  7 regionManager.getRegion(RegionManager.DEFAULT_REGION, true).setEvictionPolicy(config);
 52   
 53  7 regionManager.getRegion("/a/b/c", true).setEvictionPolicy(config);
 54  7 regionManager.getRegion("/a/b/c/d", true).setEvictionPolicy(config);
 55  7 regionManager.getRegion("/a/b", true).setEvictionPolicy(config);
 56   
 57  7 regionManager.getRegion("/d/e/f", true).setEvictionPolicy(config);
 58  7 regionManager.getRegion("/d/e/g", true).setEvictionPolicy(config);
 59  7 regionManager.getRegion("/d/e", true).setEvictionPolicy(config);
 60   
 61  7 cache = (CacheImpl) DefaultCacheFactory.getInstance().createCache(false);
 62  7 cache.getConfiguration().setTransactionManagerLookupClass("org.jboss.cache.DummyTransactionManagerLookup");
 63  7 cache.getConfiguration().setIsolationLevel(IsolationLevel.SERIALIZABLE);
 64   
 65    // make the interceptor chain (separate from the CacheImpl object.
 66   
 67  7 interceptor = new CacheMgmtInterceptor();
 68  7 interceptor.setCache(cache);
 69   
 70  7 TxInterceptor ti = new TxInterceptor();
 71  7 ti.setCache(cache);
 72  7 interceptor.setNext(ti);
 73   
 74  7 UnlockInterceptor ui = new UnlockInterceptor();
 75  7 ui.setCache(cache);
 76  7 ti.setNext(ui);
 77   
 78  7 PessimisticLockInterceptor pli = new PessimisticLockInterceptor();
 79  7 pli.setCache(cache);
 80  7 ui.setNext(pli);
 81   
 82  7 EvictionInterceptor ei = new EvictionInterceptor();
 83  7 ei.setCache(cache);
 84  7 ei.setRegionManager(regionManager);
 85  7 pli.setNext(ei);
 86   
 87  7 CallInterceptor ci = new CallInterceptor();
 88  7 ci.setCache(cache);
 89  7 ci.setTreeCacheInstance(cache);
 90  7 ei.setNext(ci);
 91   
 92  7 cache.getConfiguration().setCacheMode("LOCAL");
 93  7 cache.start();
 94    }
 95   
 96  7 public void tearDown() throws Exception
 97    {
 98  7 super.tearDown();
 99  7 cache.remove("/");
 100  7 cache.stop();
 101    }
 102   
 103  1 public void testVisitNode() throws Throwable
 104    {
 105    // make sure node that doesn't exist does not result in a node visit event.
 106   
 107  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.getNodeMethodLocal,
 108    Fqn.fromString(fqn1));
 109  1 interceptor.invoke(mc);
 110  1 Region regionABC = regionManager.getRegion(fqn1, false);
 111  1 assertNull(regionABC.takeLastEventNode());
 112   
 113  1 cache.put(fqn1, "key", "value");
 114  1 assertEquals("value", cache.get(fqn1, "key"));
 115  1 Node node = cache.get(fqn1);
 116  1 assertNotNull(node);
 117  1 assertEquals("value", node.get("key"));
 118   
 119  1 cache.put(fqn3, "key", "value");
 120  1 assertEquals("value", cache.get(fqn3, "key"));
 121  1 node = cache.get(fqn3);
 122  1 assertNotNull(node);
 123  1 assertEquals("value", node.get("key"));
 124   
 125   
 126  1 mc = MethodCallFactory.create(MethodDeclarations.getNodeMethodLocal,
 127    Fqn.fromString(fqn1));
 128  1 interceptor.invoke(mc);
 129   
 130  1 regionABC = regionManager.getRegion(fqn1, false);
 131  1 EvictedEventNode event = regionABC.takeLastEventNode();
 132  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 133  1 assertEquals(fqn1, event.getFqn().toString());
 134  1 assertNull(regionABC.takeLastEventNode());
 135   
 136  1 mc = MethodCallFactory.create(MethodDeclarations.getNodeMethodLocal,
 137    Fqn.fromString(fqn2));
 138  1 interceptor.invoke(mc);
 139   
 140  1 Region regionAB = regionManager.getRegion(fqn2, false);
 141  1 event = regionAB.takeLastEventNode();
 142  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 143  1 assertEquals(fqn2, event.getFqn().toString());
 144  1 assertNull(regionAB.takeLastEventNode());
 145   
 146  1 mc = MethodCallFactory.create(MethodDeclarations.getDataMapMethodLocal, Fqn.fromString(fqn3));
 147  1 interceptor.invoke(mc);
 148  1 Region regionABD = regionManager.getRegion(fqn3, false);
 149  1 event = regionABD.takeLastEventNode();
 150  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 151  1 assertEquals(fqn3, event.getFqn().toString());
 152  1 assertNull(regionABD.takeLastEventNode());
 153   
 154  1 for (int i = 0; i < 10; i++)
 155    {
 156  10 Fqn fqn = Fqn.fromString(fqn3);
 157  10 mc = MethodCallFactory.create(MethodDeclarations.getNodeMethodLocal, fqn);
 158  10 interceptor.invoke(mc);
 159    }
 160   
 161  1 for (int i = 0; i < 10; i++)
 162    {
 163  10 Region region = regionManager.getRegion(fqn3, false);
 164  10 event = region.takeLastEventNode();
 165  10 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 166  10 assertEquals(fqn3, event.getFqn().toString());
 167    }
 168   
 169  1 assertNull(regionManager.getRegion(fqn3, false).takeLastEventNode());
 170   
 171    // check null handling.
 172  1 mc = MethodCallFactory.create(MethodDeclarations.getDataMapMethodLocal, new Object[]{null});
 173  1 interceptor.invoke(mc);
 174   
 175    }
 176   
 177  1 public void testVisitElement() throws Throwable
 178    {
 179    // make sure a get/visit on an empty node and empty element results in no cache events being added to event queue
 180    // aka MarshRegion.
 181  1 Fqn fqn = Fqn.fromString(fqn4);
 182  1 Object key = "key";
 183  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, false);
 184  1 interceptor.invoke(mc);
 185  1 Region region = regionManager.getRegion(fqn.toString(), false);
 186  1 assertNull(region.takeLastEventNode());
 187   
 188    // add the node but try to get on a null element should result in no cache events being added to MarshRegion.
 189  1 cache.put(fqn, "wrongkey", "");
 190  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, false);
 191  1 interceptor.invoke(mc);
 192  1 assertNull(region.takeLastEventNode());
 193   
 194    // now make sure if we try to get on the node/key we just created in cache, that this DOES add a EvictedEventNode to
 195    // the MarshRegion.
 196  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, "wrongkey", false);
 197  1 interceptor.invoke(mc);
 198  1 EvictedEventNode event = region.takeLastEventNode();
 199  1 assertEquals(fqn, event.getFqn());
 200  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 201   
 202  1 assertNull(region.takeLastEventNode());
 203   
 204  1 cache.put(fqn4, key, "value");
 205    // test on element granularity configured node.
 206  1 fqn = Fqn.fromString(fqn4);
 207  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, false);
 208  1 interceptor.invoke(mc);
 209   
 210  1 region = regionManager.getRegion(fqn.toString(), false);
 211  1 event = region.takeLastEventNode();
 212   
 213  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 214  1 assertEquals(fqn, event.getFqn());
 215   
 216  1 assertNull(region.takeLastEventNode());
 217   
 218  1 fqn = Fqn.fromString("/d/e/g");
 219  1 for (int i = 0; i < 1000; i++)
 220    {
 221  1000 key = i;
 222   
 223  1000 cache.put("/d/e/g", key, "");
 224   
 225  1000 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, true);
 226  1000 interceptor.invoke(mc);
 227    }
 228   
 229  1 region = regionManager.getRegion(fqn.toString(), false);
 230  1 for (int i = 0; i < 1000; i++)
 231    {
 232  1000 event = region.takeLastEventNode();
 233  1000 assertEquals(fqn, event.getFqn());
 234  1000 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 235    }
 236   
 237  1 cache.put("/a/b/c", key, "");
 238  1 fqn = Fqn.fromString("/a/b/c");
 239  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, false);
 240  1 interceptor.invoke(mc);
 241   
 242  1 region = regionManager.getRegion(fqn.toString(), false);
 243  1 event = region.takeLastEventNode();
 244   
 245  1 assertNull(region.takeLastEventNode());
 246  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 247  1 assertEquals(fqn, event.getFqn());
 248   
 249  1 for (int i = 0; i < 1000; i++)
 250    {
 251  1000 key = i;
 252   
 253  1000 cache.put(fqn.toString(), key, "");
 254   
 255  1000 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, true);
 256  1000 interceptor.invoke(mc);
 257    }
 258   
 259  1 for (int i = 0; i < 1000; i++)
 260    {
 261  1000 event = region.takeLastEventNode();
 262  1000 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 263  1000 assertEquals(fqn, event.getFqn());
 264    }
 265   
 266  1 assertNull(region.takeLastEventNode());
 267   
 268    // check null handling
 269  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, null, key, true);
 270  1 interceptor.invoke(mc);
 271  1 assertNull(region.takeLastEventNode());
 272   
 273  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, null, null, true);
 274  1 interceptor.invoke(mc);
 275  1 assertNull(region.takeLastEventNode());
 276   
 277  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, null, true);
 278  1 interceptor.invoke(mc);
 279  1 assertNull(region.takeLastEventNode());
 280    }
 281   
 282  1 public void testCreateNode() throws Throwable
 283    {
 284  1 Map data = new HashMap();
 285  1 for (int i = 0; i < 100; i++)
 286    {
 287  100 data.put(i, i);
 288    }
 289   
 290    // this region is node granularity
 291  1 Fqn fqn = Fqn.fromString("/a/b/c");
 292   
 293  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.putDataMethodLocal, null, fqn, data, false);
 294  1 interceptor.invoke(mc);
 295   
 296  1 Region region = regionManager.getRegion(fqn.toString(), false);
 297  1 EvictedEventNode event = region.takeLastEventNode();
 298   
 299  1 assertEquals(NodeEventType.ADD_NODE_EVENT, event.getEventType());
 300  1 assertEquals(fqn, event.getFqn());
 301  1 assertEquals(100, event.getElementDifference());
 302   
 303  1 Node node = cache.get(fqn.toString());
 304  1 assertNotNull(node);
 305   
 306  1 for (int i = 0; i < 100; i++)
 307    {
 308  100 assertTrue(node.getData().containsKey(i));
 309  100 assertEquals(i, node.get(i));
 310    }
 311   
 312  1 for (int i = 0; i < 100; i++)
 313    {
 314  100 mc = MethodCallFactory.create(MethodDeclarations.putKeyValMethodLocal, null, fqn, i,
 315    "value", false);
 316  100 interceptor.invoke(mc);
 317   
 318  100 assertEquals("value", cache.get(fqn.toString(), i));
 319    }
 320   
 321  1 for (int i = 0; i < 100; i++)
 322    {
 323  100 event = region.takeLastEventNode();
 324  100 assertNotNull(event);
 325  100 assertEquals(fqn, event.getFqn());
 326  100 assertEquals(NodeEventType.ADD_ELEMENT_EVENT, event.getEventType());
 327    }
 328   
 329  1 assertNull(region.takeLastEventNode());
 330   
 331  1 fqn = Fqn.fromString("/a/b");
 332  1 mc = MethodCallFactory.create(MethodDeclarations.putDataEraseMethodLocal, null, fqn, data, false, false);
 333  1 interceptor.invoke(mc);
 334  1 event = regionManager.getRegion(fqn.toString(), false).takeLastEventNode();
 335  1 assertFalse(event.isResetElementCount());
 336  1 assertEquals(NodeEventType.ADD_NODE_EVENT, event.getEventType());
 337  1 assertEquals(fqn, event.getFqn());
 338  1 assertEquals(100, event.getElementDifference());
 339  1 assertNull(regionManager.getRegion(fqn.toString(), false).takeLastEventNode());
 340  1 node = cache.get(fqn.toString());
 341  1 assertEquals(100, node.getData().size());
 342   
 343  1 assertNotNull(node);
 344   
 345  1 for (int i = 0; i < 100; i++)
 346    {
 347  100 assertTrue(node.getData().containsKey(i));
 348  100 assertEquals(i, node.get(i));
 349    }
 350   
 351  1 mc = MethodCallFactory.create(MethodDeclarations.putDataEraseMethodLocal, null, fqn, data, false, true);
 352  1 interceptor.invoke(mc);
 353  1 event = regionManager.getRegion(fqn.toString(), false).takeLastEventNode();
 354  1 assertEquals(NodeEventType.ADD_NODE_EVENT, event.getEventType());
 355  1 assertEquals(fqn, event.getFqn());
 356  1 assertEquals(100, event.getElementDifference());
 357  1 assertTrue(event.isResetElementCount());
 358  1 assertNull(regionManager.getRegion(fqn.toString(), false).takeLastEventNode());
 359   
 360   
 361  1 node = cache.get(fqn.toString());
 362  1 assertEquals(100, node.getData().size());
 363  1 assertNotNull(node);
 364   
 365  1 for (int i = 0; i < 100; i++)
 366    {
 367  100 assertTrue(node.getData().containsKey(i));
 368  100 assertEquals(i, node.get(i));
 369    }
 370   
 371    }
 372   
 373  1 public void testCreateElement() throws Throwable
 374    {
 375  1 Fqn fqn = Fqn.fromString("/d/e/f");
 376  1 Region region = regionManager.getRegion(fqn.toString(), false);
 377  1 Object key = "key";
 378  1 Object value = "value";
 379   
 380  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.putKeyValMethodLocal,
 381    null, fqn, key, value, false);
 382  1 interceptor.invoke(mc);
 383  1 assertEquals("value", cache.get(fqn, key));
 384  1 EvictedEventNode event = region.takeLastEventNode();
 385  1 assertEquals(NodeEventType.ADD_ELEMENT_EVENT, event.getEventType());
 386  1 assertEquals(1, event.getElementDifference());
 387  1 assertEquals(fqn, event.getFqn());
 388  1 assertEquals("value", cache.get(fqn, key));
 389  1 assertNull(region.takeLastEventNode());
 390   
 391  1 mc = MethodCallFactory.create(MethodDeclarations.putKeyValMethodLocal,
 392    null, fqn, key, value, false);
 393  1 interceptor.invoke(mc);
 394  1 assertEquals("value", cache.get(fqn, key));
 395  1 event = region.takeLastEventNode();
 396  1 assertEquals(NodeEventType.ADD_ELEMENT_EVENT, event.getEventType());
 397  1 assertEquals(1, event.getElementDifference());
 398  1 assertEquals(fqn, event.getFqn());
 399  1 assertEquals("value", cache.get(fqn, key));
 400  1 assertNull(region.takeLastEventNode());
 401   
 402    }
 403   
 404  1 public void testRemoveNode() throws Throwable
 405    {
 406  1 Fqn fqn = Fqn.fromString("/a/b/c");
 407  1 cache.put(fqn, "a", "b");
 408  1 cache.put(fqn, "b", "c");
 409   
 410  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.removeDataMethodLocal, null, fqn, false);
 411  1 interceptor.invoke(mc);
 412   
 413  1 assertEquals(0, cache.get(fqn).getData().size());
 414  1 Region region = regionManager.getRegion(fqn.toString(), false);
 415  1 EvictedEventNode event = region.takeLastEventNode();
 416  1 assertEquals(NodeEventType.REMOVE_NODE_EVENT, event.getEventType());
 417  1 assertEquals(fqn, event.getFqn());
 418  1 assertNull(region.takeLastEventNode());
 419   
 420  1 mc = MethodCallFactory.create(MethodDeclarations.removeNodeMethodLocal, null, fqn, false);
 421  1 interceptor.invoke(mc);
 422   
 423  1 assertNull(cache.get(fqn));
 424  1 event = region.takeLastEventNode();
 425  1 assertEquals(NodeEventType.REMOVE_NODE_EVENT, event.getEventType());
 426  1 assertEquals(fqn, event.getFqn());
 427  1 assertNull(region.takeLastEventNode());
 428    }
 429   
 430  1 public void testRemoveElement() throws Throwable
 431    {
 432  1 Fqn fqn = Fqn.fromString("/a/b/c");
 433  1 cache.put(fqn, "a", "b");
 434  1 cache.put(fqn, "b", "c");
 435   
 436  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.removeKeyMethodLocal,
 437    null, fqn, "a", false);
 438  1 interceptor.invoke(mc);
 439   
 440  1 assertNull(cache.get(fqn, "a"));
 441  1 Region region = regionManager.getRegion(fqn.toString(), false);
 442  1 EvictedEventNode event = region.takeLastEventNode();
 443  1 assertEquals(NodeEventType.REMOVE_ELEMENT_EVENT, event.getEventType());
 444  1 assertEquals(fqn, event.getFqn());
 445  1 assertEquals(1, event.getElementDifference());
 446  1 assertNull(region.takeLastEventNode());
 447   
 448  1 mc = MethodCallFactory.create(MethodDeclarations.removeKeyMethodLocal,
 449    null, fqn, "b", false);
 450  1 interceptor.invoke(mc);
 451   
 452  1 assertNull(cache.get(fqn, "b"));
 453  1 event = region.takeLastEventNode();
 454  1 assertEquals(NodeEventType.REMOVE_ELEMENT_EVENT, event.getEventType());
 455  1 assertEquals(fqn, event.getFqn());
 456  1 assertEquals(1, event.getElementDifference());
 457  1 assertNull(region.takeLastEventNode());
 458   
 459  1 mc = MethodCallFactory.create(MethodDeclarations.removeKeyMethodLocal,
 460    null, fqn, "b", false);
 461  1 interceptor.invoke(mc);
 462   
 463  1 event = region.takeLastEventNode();
 464  1 assertNull(event);
 465    }
 466   
 467  1 public void testMixedEvent() throws Throwable
 468    {
 469  1 Map data = new HashMap();
 470  1 for (int i = 0; i < 100; i++)
 471    {
 472  100 data.put(i, i);
 473    }
 474   
 475    // this region is node granularity
 476  1 Fqn fqn = Fqn.fromString("/a/b/c");
 477   
 478  1 MethodCall mc = MethodCallFactory.create(MethodDeclarations.putDataMethodLocal, null, fqn, data, false);
 479  1 interceptor.invoke(mc);
 480   
 481  1 Region region = regionManager.getRegion(fqn.toString(), false);
 482  1 EvictedEventNode event = region.takeLastEventNode();
 483   
 484  1 assertEquals(NodeEventType.ADD_NODE_EVENT, event.getEventType());
 485  1 assertEquals(fqn, event.getFqn());
 486  1 assertEquals(100, event.getElementDifference());
 487  1 assertNull(region.takeLastEventNode());
 488   
 489  1 mc = MethodCallFactory.create(MethodDeclarations.getNodeMethodLocal,
 490    fqn);
 491  1 interceptor.invoke(mc);
 492  1 event = region.takeLastEventNode();
 493  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 494  1 assertEquals(fqn, event.getFqn());
 495  1 assertNull(region.takeLastEventNode());
 496   
 497  1 mc = MethodCallFactory.create(MethodDeclarations.removeNodeMethodLocal, null, fqn, false);
 498  1 interceptor.invoke(mc);
 499  1 assertNull(cache.get(fqn));
 500  1 event = region.takeLastEventNode();
 501  1 assertEquals(NodeEventType.REMOVE_NODE_EVENT, event.getEventType());
 502  1 assertEquals(fqn, event.getFqn());
 503  1 assertNull(region.takeLastEventNode());
 504   
 505  1 Object key = "key";
 506  1 Object value = "value";
 507  1 mc = MethodCallFactory.create(MethodDeclarations.putKeyValMethodLocal,
 508    null, fqn, key, value, false);
 509  1 interceptor.invoke(mc);
 510  1 assertEquals("value", cache.get(fqn, key));
 511  1 event = region.takeLastEventNode();
 512  1 assertEquals(NodeEventType.ADD_ELEMENT_EVENT, event.getEventType());
 513  1 assertEquals(1, event.getElementDifference());
 514  1 assertEquals(fqn, event.getFqn());
 515  1 assertEquals("value", cache.get(fqn, key));
 516  1 assertNull(region.takeLastEventNode());
 517   
 518  1 mc = MethodCallFactory.create(MethodDeclarations.getKeyValueMethodLocal, fqn, key, false);
 519  1 interceptor.invoke(mc);
 520  1 region = regionManager.getRegion(fqn.toString(), false);
 521  1 event = region.takeLastEventNode();
 522  1 assertEquals(NodeEventType.VISIT_NODE_EVENT, event.getEventType());
 523  1 assertEquals(fqn, event.getFqn());
 524  1 assertNull(region.takeLastEventNode());
 525   
 526  1 mc = MethodCallFactory.create(MethodDeclarations.removeKeyMethodLocal,
 527    null, fqn, key, false);
 528  1 interceptor.invoke(mc);
 529   
 530  1 assertNull(cache.get(fqn, key));
 531  1 event = region.takeLastEventNode();
 532  1 assertEquals(NodeEventType.REMOVE_ELEMENT_EVENT, event.getEventType());
 533  1 assertEquals(fqn, event.getFqn());
 534  1 assertEquals(1, event.getElementDifference());
 535  1 assertNull(region.takeLastEventNode());
 536   
 537    }
 538   
 539    }