InstrumentationProvider provider = providers.iterator().next();
assertEquals(provider.getClass(), JMXProvider.class);
Instrument inst = provider.getInstrumentByName("DataCache");
assertNotNull(inst);
assertTrue(inst instanceof DataCacheInstrument);
DataCacheInstrument dci = (DataCacheInstrument)inst;
assertEquals(dci.getCacheName(), "default");
OpenJPAEntityManagerSPI oem = oemf.createEntityManager();
CachedEntity ce = new CachedEntity();
int id = new Random().nextInt();
ce.setId(id);
oem.getTransaction().begin();
oem.persist(ce);
oem.getTransaction().commit();
oem.clear();
assertTrue(oemf.getCache().contains(CachedEntity.class, id));
ce = oem.find(CachedEntity.class, id);
assertTrue(dci.getHitCount() > 0);
assertTrue(dci.getHitCount(clsName) > 0);
assertTrue(dci.getWriteCount() > 0);
assertTrue(dci.getCacheStatistics().keySet().contains(clsName));
// Thread out to do out-of-band MBean-based validation. This could
// have been done on the same thread, but threading out makes for a
// more realistic test.
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<Boolean> result = executor.submit(new DCMBeanCallable());