@Override public void run() { Region region = getCache().getRegion(OFF_HEAP_REGION_NAME); assertNotNull(region); } });
/** * Performs a destroy operation. * @param key the region entry to destroy. * @param regionName a region name. */ protected void doDestroy(Object key, String regionName) { Region region = getCache().getRegion(regionName); assertNotNull(region); region.destroy(key); }
/** * Consumes off off-heap memory until the allocation size cannot be satisfied. * @param allocationSize the number of bytes for each allocation * @return the number of successful puts */ protected int doConsumeOffHeapMemory(int allocationSize) { // TODO:KIRK: change this to handle new OutOfOffHeapMemoryException OffHeapMemoryStats stats = ((GemFireCacheImpl) getCache()).getOffHeapStore().getStats(); int i = 0; // Loop until we fail try { while(true) { doPut("KEY" + (i++),new byte[allocationSize],OFF_HEAP_REGION_NAME, false); } } catch (OutOfOffHeapMemoryException e) { } return i; }
/** * Performs a put operation. * @param key region entry key. * @param value region entry value. * @param regionName a region name. */ protected void doPut(Object key, Object value, String regionName,boolean expectException) { Region region = getCache().getRegion(regionName); assertNotNull(region); try { region.put(key, value); } catch (OutOfOffHeapMemoryException e) { if(!expectException) throw e; } }
/** * Creates an off-heap region. * @param name a region name. * @param dataPolicy a data policy. * @return the newly created region. */ protected Region createOffHeapRegion(String name,DataPolicy dataPolicy) { return getCache().createRegionFactory().setEnableOffHeapMemory(true).setDataPolicy(dataPolicy).create(name); }
/** * Sets the distributed system properties. * @param management starts the ManagementService when true. * @param props distributed system properties. */ protected void setSystemProperties(boolean management, Properties props) { getSystem(props); ManagementService service = ManagementService.getManagementService(getCache()); if (management) { if (!service.isManager()) { service.startManager(); } } }
/** * Removes off-heap region and disconnects. */ protected void cleanup() { Region region = getCache().getRegion(OFF_HEAP_REGION_NAME); if(null != region) { region.destroyRegion(); } Set<ObjectInstance> set; try { set = mbeanServer.queryMBeans(new ObjectName("monitors:type=Gauge,attr=*"), null); for (ObjectInstance obj : set) { mbeanServer.unregisterMBean(obj.getObjectName()); } } catch (MalformedObjectNameException e) { fail(e.getMessage()); } catch (NullPointerException e) { fail(e.getMessage()); } catch (MBeanRegistrationException e) { fail(e.getMessage()); } catch (InstanceNotFoundException e) { fail(e.getMessage()); } disconnectFromDS(); }
/** * Performs some destroys to free off-heap allocations. * @param numAllocations the number of previous off-heap allocations * @param numDestroys the number of destroys to perform */ protected void doFreeOffHeapMemory(int numAllocations,int numDestroys) { assertTrue(numDestroys <= numAllocations); Region region = getCache().getRegion(OFF_HEAP_REGION_NAME); assertNotNull(region); assertTrue(numDestroys <= region.size()); String key = "KEY0"; Object value = key; int destroyed = 0; while(destroyed < numDestroys) { key = "KEY" + ((int) (Math.random() * numAllocations)); value = region.get(key); if(null != value) { region.destroy(key); ++destroyed; } } }
/** * Adds an off-heap notification listener to the MemberMXBean. */ protected void addOffHeapNotificationListener() { ManagementService service = ManagementService.getExistingManagementService(getCache()); assertNotNull(service); assertTrue(service.isManager()); MemberMXBean memberBean = service.getMemberMXBean(); assertNotNull(memberBean); assertTrue(memberBean instanceof MemberMBean); ((MemberMBean) memberBean).addNotificationListener(notificationListener, null, null); }
/** * Asserts that the off heap region data is available and enabled. */ protected void assertOffHeapRegionAttributes() { ManagementService service = ManagementService.getExistingManagementService(getCache()); assertNotNull(service); assertTrue(service.isManager()); RegionMXBean regionBean = service.getLocalRegionMBean(OFF_HEAP_REGION_PATH); assertNotNull(regionBean); RegionAttributesData regionData = regionBean.listRegionAttributes(); assertNotNull(regionData); assertTrue(regionData.getEnableOffHeapMemory()); }
/** * Asserts that the fragmentation stat is available and satisfies an assert operation. * @param fragmentation a fragmentation percentage * @param op an assertion operation */ protected void assertFragmentationStat(int fragmentation,ASSERT_OP op) { ManagementService service = ManagementService.getExistingManagementService(getCache()); assertNotNull(service); assertTrue(service.isManager()); MemberMXBean memberBean = service.getMemberMXBean(); assertNotNull(memberBean); switch(op) { case EQUAL: assertEquals(fragmentation,memberBean.getOffHeapFragmentation()); break; case GREATER_THAN: assertTrue(fragmentation < memberBean.getOffHeapFragmentation()); break; case LESS_THAN: assertTrue(fragmentation > memberBean.getOffHeapFragmentation()); break; } }
/** * Asserts that OffHeapMetrics match input parameters. * @param freeMemory total off-heap free memory in bytes. * @param allocatedMemory allocated (or used) off-heap memory in bytes. * @param objects number of objects stored in off-heap memory. * @param fragmentation the fragmentation percentage. */ protected void assertOffHeapMetrics(long freeMemory,long allocatedMemory,long objects, int fragmentation) { ManagementService service = ManagementService.getExistingManagementService(getCache()); assertNotNull(service); assertTrue(service.isManager()); MemberMXBean memberBean = service.getMemberMXBean(); assertNotNull(memberBean); assertEquals(freeMemory,memberBean.getOffHeapFreeMemory()); assertEquals(allocatedMemory,memberBean.getOffHeapUsedMemory()); assertEquals(objects,memberBean.getOffHeapObjects()); assertEquals(fragmentation,memberBean.getOffHeapFragmentation()); }
/** * Asserts that the compactionTime stat is available and satisfies an assert operation. * @param compactionTime total off heap compaction time. * @param op an assert operation. */ protected void assertCompactionTimeStat(long compactionTime,ASSERT_OP op) { ManagementService service = ManagementService.getExistingManagementService(getCache()); assertNotNull(service); assertTrue(service.isManager()); MemberMXBean memberBean = service.getMemberMXBean(); assertNotNull(memberBean); switch(op) { case EQUAL: assertEquals(compactionTime,memberBean.getOffHeapCompactionTime()); break; case GREATER_THAN: assertTrue(compactionTime < memberBean.getOffHeapCompactionTime()); break; case GREATER_THAN_OR_EQUAL: assertTrue(compactionTime <= memberBean.getOffHeapCompactionTime()); break; case LESS_THAN: assertTrue(compactionTime > memberBean.getOffHeapCompactionTime()); break; } }