/* ************************************************************************ * run() ************************************************************************ */ /** * */ public void run() { XRD oDummy = new XRD(); Service dummyService = new Service(); dummyService.addMediaType(Tags.CONTENT_TYPE_XRDS + ";trust=none"); dummyService.addType(Tags.SERVICE_AUTH_RES); dummyService.addURI("http://www.example.com/xri/resolve?id=1"); oDummy.addService(dummyService); String[] oCases = { "@!a1!b2!c3!d4", "@!x1!y2!z3", "@!a1!b2!c3", "@!a1!b2", "@!a1!b2!m3", "@!a1!o2!p3", "@!a1!o2!q3", "@!a1!b2!c3!d4!e5", "@!x1!y2" }; Cache oCache = new Cache(1000); for (int i = 0; i < 1000; i++) { int x = moRand.nextInt(oCases.length); bool bStuff = moRand.nextBoolean(); XRIAuthority oAuth = (XRIAuthority) AuthorityPath.buildAuthorityPath(oCases[x]); if (bStuff) { oCache.stuff(oAuth, oDummy); } else { oCache.prune(oAuth); } oCache.find(oAuth, true); } }
/* **************************************************************************** * testConcurrent() **************************************************************************** */ /** * */ public void testConcurrent() { Cache oCache = new Cache(1000); oCache.prune((XRIAuthority) AuthorityPath.buildAuthorityPath("@")); assertTrue("Initial cache not empty", oCache.getNumNodes() == 0); XRD oDesc = new XRD(); Service atAuthService = new Service(); atAuthService.addMediaType(Tags.CONTENT_TYPE_XRDS + ";trust=none"); atAuthService.addType(Tags.SERVICE_AUTH_RES); atAuthService.addURI("http://gcs.epok.net/xri/resolve?ns=at"); oDesc.addService(atAuthService); GCSAuthority oAuth = new GCSAuthority("@"); oCache.stuff(oAuth, oDesc); assertTrue("Initial cache incorrect", oCache.getNumNodes() == 1); oCache.setMaxSize(5); Random oRand = new Random(); try { Thread[] oThreads = new StuffPruneThread[100]; for (int i = 0; i < oThreads.length; i++) { oThreads[i] = new StuffPruneThread(oRand); } for (int i = 0; i < oThreads.length; i++) { oThreads[i].start(); } for (int i = 0; i < oThreads.length; i++) { oThreads[i].join(); } } catch (Exception e) { assertTrue("Unexpected exception" + e, false); } oCache.dump(); assertTrue( "Max cache size not honored", oCache.getNumNodes() <= oCache.getMaxSize()); Cache.CachedValue oVal = oCache.find( (XRIAuthority) AuthorityPath.buildAuthorityPath("@"), false); assertTrue("Cached value for @ not found", oVal != null); }