/* **************************************************************************** * testCache() **************************************************************************** */ /** * */ public void testCache() { Cache oCache = new Cache(1000); 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); 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); GCSAuthority oAuth = new GCSAuthority("@"); oCache.stuff(oAuth, oDesc); assertTrue("Initial cache incorrect", oCache.getNumNodes() == 1); oCache.stuff( (XRIAuthority) AuthorityPath.buildAuthorityPath("@!a!b!foo"), oDummy); assertTrue("Cache size incorrect", oCache.getNumNodes() == 4); oCache.stuff( (XRIAuthority) AuthorityPath.buildAuthorityPath("@!a!c!moo"), oDummy); assertTrue("Cache size incorrect", oCache.getNumNodes() == 6); oCache.stuff( (XRIAuthority) AuthorityPath.buildAuthorityPath("@!a!c!woo"), oDummy); assertTrue("Cache size incorrect", oCache.getNumNodes() == 7); Cache.CachedValue oVal = oCache.find( (XRIAuthority) AuthorityPath.buildAuthorityPath("@!a!c!woo"), false); assertTrue("Cached value not found", oVal != null); oVal = oCache.find( (XRIAuthority) AuthorityPath.buildAuthorityPath("@!a!b!woo"), false); assertTrue("Cached value should not have been found", oVal == null); oCache.dump(); }
/* **************************************************************************** * 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); }