public void testHeadNotPopular() throws Exception { VersionCounts versionCounts = VersionCounts.make(); VoteBlock vb1 = makeVoteBlock("http://test.com/foo1"); byte[] hash1 = addVersion(vb1, "content 1 for foo1"); byte[] hash2 = addVersion(vb1, "content 2 for foo1"); VoteBlock vb2 = makeVoteBlock("http://test.com/foo1"); addVersion(vb2, "content 1 for foo1"); addVersion(vb2, "content 2 for foo1"); VoteBlock vb3 = makeVoteBlock("http://test.com/foo1"); addVersion(vb3, "content 3 for foo1"); addVersion(vb3, "content 2 for foo1"); versionCounts.vote(vb1, participant1); versionCounts.vote(vb2, participant2); versionCounts.vote(vb3, participant3); Map<ParticipantUserData, HashResult> repairCandidates; repairCandidates = versionCounts.getRepairCandidates(0); assertSameElements( SetUtil.set(participant1, participant2, participant3), repairCandidates.keySet()); repairCandidates = versionCounts.getRepairCandidates(1); assertSameElements( SetUtil.set(participant1, participant2, participant3), repairCandidates.keySet()); repairCandidates = versionCounts.getRepairCandidates(2); assertSameElements(SetUtil.set(participant1, participant2), repairCandidates.keySet()); repairCandidates = versionCounts.getRepairCandidates(3); assertEmpty(repairCandidates.keySet()); }
public void testMultipleIdenticalVersions() throws Exception { VersionCounts versionCounts = VersionCounts.make(); VoteBlock vb1 = makeVoteBlock("http://test.com/foo1"); byte[] hash1 = addVersion(vb1, "content 1 for foo1"); byte[] hash2 = addVersion(vb1, "content 2 for foo1"); VoteBlock vb2 = makeVoteBlock("http://test.com/foo1"); addVersion(vb2, "content 1 for foo1"); addVersion(vb2, "content 1 for foo1"); addVersion(vb2, "content 1 for foo1"); addVersion(vb2, "content 1 for foo1"); addVersion(vb2, "content 2 for foo1"); VoteBlock vb3 = makeVoteBlock("http://test.com/foo1"); addVersion(vb3, "content 1 for foo1"); addVersion(vb3, "content 2 for foo1"); addVersion(vb3, "content 2 for foo1"); addVersion(vb3, "content 2 for foo1"); addVersion(vb3, "content 2 for foo1"); versionCounts.vote(vb1, participant1); versionCounts.vote(vb2, participant2); versionCounts.vote(vb3, participant3); Map<ParticipantUserData, HashResult> repairCandidates; repairCandidates = versionCounts.getRepairCandidates(2); assertSameElements( SetUtil.set(participant1, participant2, participant3), repairCandidates.keySet()); // With only three candidates, no version should reach a threshold // of 4, unless counting multiples is wrong. repairCandidates = versionCounts.getRepairCandidates(4); assertEmpty(repairCandidates.keySet()); }
protected Properties convertProperties(Map<String, Object> m) { Properties res = null; { if (m != null) { res = new Properties(); Set<String> keys = m.keySet(); for (String key : keys) { String value = null; // Set 'value': { Object o = m.get(key); if (o != null) { value = o.toString(); } } res.setProperty(key, value); } } } return res; }
/** * Remove records telling what entity caps node a contact has. * * @param contact the contact */ public void removeContactCapsNode(Contact contact) { Caps caps = null; String lastRemovedJid = null; Iterator<String> iter = userCaps.keySet().iterator(); while (iter.hasNext()) { String jid = iter.next(); if (StringUtils.parseBareAddress(jid).equals(contact.getAddress())) { caps = userCaps.get(jid); lastRemovedJid = jid; iter.remove(); } } // fire only for the last one, at the end the event out // of the protocol will be one and for the contact if (caps != null) { UserCapsNodeListener[] listeners; synchronized (userCapsNodeListeners) { listeners = userCapsNodeListeners.toArray(NO_USER_CAPS_NODE_LISTENERS); } if (listeners.length != 0) { String nodeVer = caps.getNodeVer(); for (UserCapsNodeListener listener : listeners) listener.userCapsNodeRemoved(lastRemovedJid, nodeVer, false); } } }
/** * Handle authentication and Proxy'ing * * @param cb * @throws HTTPException */ protected synchronized void setAuthenticationAndProxy(HttpClientBuilder cb) throws HTTPException { // First, setup the ssl factory cb.setSSLSocketFactory(globalsslfactory); // Second, Construct a CredentialsProvider that is // the union of the Proxy credentials plus // either the global local credentials; local overrides global // Unfortunately, we cannot either clone or extract the contents // of the client supplied provider, so we are forced (for now) // to modify the client supplied provider. // Look in the local authcreds for best scope match AuthScope bestMatch = HTTPAuthUtil.bestmatch(scope, localcreds.keySet()); CredentialsProvider cp = null; if (bestMatch != null) { cp = localcreds.get(bestMatch); } else { bestMatch = HTTPAuthUtil.bestmatch(scope, globalcreds.keySet()); if (bestMatch != null) cp = globalcreds.get(bestMatch); } // Build the proxy credentials and AuthScope Credentials proxycreds = null; AuthScope proxyscope = null; if (proxyuser != null && (httpproxy != null || httpsproxy != null)) { if (httpproxy != null) proxyscope = HTTPAuthUtil.hostToAuthScope(httpproxy); else // httpsproxy != null proxyscope = HTTPAuthUtil.hostToAuthScope(httpsproxy); proxycreds = new UsernamePasswordCredentials(proxyuser, proxypwd); } if (cp == null && proxycreds != null && proxyscope != null) { // If client provider is null and proxycreds are not, // then use proxycreds alone cp = new BasicCredentialsProvider(); cp.setCredentials(proxyscope, proxycreds); } else if (cp != null && proxycreds != null && proxyscope != null) { // If client provider is not null and proxycreds are not, // then add proxycreds to the client provider cp.setCredentials(proxyscope, proxycreds); } if (cp != null) this.sessioncontext.setCredentialsProvider(cp); }
public void testHeadNotAllowed() throws Exception { VersionCounts versionCounts = VersionCounts.make(); VoteBlock vb1 = makeVoteBlock("http://test.com/foo1"); byte[] hash1 = addVersion(vb1, "content 1 for foo1"); byte[] hash2 = addVersion(vb1, "content 2 for foo1"); versionCounts.vote(vb1, participant1); Map<ParticipantUserData, HashResult> repairCandidates; repairCandidates = versionCounts.getRepairCandidates(0); assertSameElements(SetUtil.set(participant1), repairCandidates.keySet()); // Same, but with an excluded version that doesn't matter. repairCandidates = versionCounts.getRepairCandidates(0, SetUtil.set(HashResult.make(hash2))); assertSameElements(SetUtil.set(participant1), repairCandidates.keySet()); // Same, but with an excluded version that does matter repairCandidates = versionCounts.getRepairCandidates(0, SetUtil.set(HashResult.make(hash1))); assertEmpty(repairCandidates); }
static String[] getFontList() { init(); ArrayList fontNames = new ArrayList(); Iterator fonts = fontNameMap.keySet().iterator(); int dotidx; while (fonts.hasNext()) { String fontname = (String) fonts.next(); if ((dotidx = fontname.indexOf('.')) == -1) dotidx = fontname.length(); fontname = fontname.substring(0, dotidx); if (!fontNames.contains(fontname)) fontNames.add(fontname); } return (String[]) fontNames.toArray(new String[fontNames.size()]); }
public List<String> getSessionIds() throws IOException { List<String> res = null; { synchronized (lookupSessionById) { Set<String> keySet = lookupSessionById.keySet(); if (keySet != null) { res = new ArrayList<String>(); res.addAll(keySet); } } } return res; }
static String[] getFontList() { Vector fontNames = new Vector(); Iterator fonts = fontNameMap.keySet().iterator(); int dotidx; while (fonts.hasNext()) { String fontname = (String) fonts.next(); if ((dotidx = fontname.indexOf('.')) == -1) dotidx = fontname.length(); fontname = fontname.substring(0, dotidx); if (!fontNames.contains(fontname)) fontNames.add(fontname); } String[] tmpFontNames = new String[fontNames.size()]; System.arraycopy(fontNames.toArray(), 0, tmpFontNames, 0, tmpFontNames.length); return tmpFontNames; }
/** * Write the output file with a graph format. * * @param outputFileName the output file to write to * @param urlToImageFileMap the map of url's to image files * @param edgeList the list of sources and sinks to write */ public void writeDotFile( String outputFileName, Map<String, String> urlToImageFileMap, Map<String, Set<String>> edgeList) { try { File outputFile = new File(outputFileName); FileWriter fileWriter = new FileWriter(outputFile); fileWriter.write("digraph G {\n"); fileWriter.write(" node [shape=box];\n"); Set<String> urls = urlToImageFileMap.keySet(); for (String url : urls) { String hashedUrl = getHashCode(url); String imageFileName = urlToImageFileMap.get(url); fileWriter.write(" " + hashedUrl + "[label=\"\" image=\"" + imageFileName + "\"];\n"); } for (String url : urls) { Set<String> links = edgeList.get(url); if (links != null) { for (String link : links) { if (urls.contains(link)) { String hashUrlSource = getHashCode(url); String hashUrlSink = getHashCode(link); fileWriter.write(" " + hashUrlSource + " -> " + hashUrlSink + "\n"); } } } } fileWriter.write("}\n"); fileWriter.flush(); fileWriter.close(); System.out.println("Wrote results to [" + outputFileName + "]"); } catch (Exception e) { System.out.println("Exception writing the results to the output file: " + e); } }