public void testBase64IdLengths() { for (RandomBase64Generator generator : generators) for (int i = 0; i < 100; i++) assertEquals(i, generator.next(i).length()); }
public void testBase64CharacterSpreadInLongId() { final int chars = 40000; final double variance = 0.2; // % difference for (RandomBase64Generator generator : generators) { int[] histogram = new int[256]; String id = generator.next(chars); for (byte b : id.getBytes()) histogram[b + 128]++; verifyBase64Spread(histogram, id.length(), variance); } }
public void testBase64CharacterSpreadInLongId() { final int chars = 40000; final double variance = 0.2; // % difference for (RandomBase64Generator generator : generators) { int[] histogram = new int[256]; String id = generator.next(chars); for (byte b : id.getBytes()) histogram[b + 128]++; verifyBase64Spread(histogram, id.length(), variance); } }
public void testBase64IdLengths() { for (RandomBase64Generator generator : generators) for (int i = 0; i < 100; i++) assertEquals(i, generator.next(i).length()); }
public void testBase64IdCharacterSpreadAtFixedCharPosition() { final int count = 40000; final double variance = 0.3; // % difference // Pick a fixed id length (in quads) and a fixed char position therein. final int chars = 4 + (int) (Math.random() * 10); // between 4 and 14 characters final int index = (int) (Math.random() * chars); // index into id strings for (RandomBase64Generator generator : generators) { int[] histogram = new int[256]; for (int i = 0; i < count; i++) { String id = generator.next(chars); byte b = id.getBytes()[index]; // char at fixed position histogram[b + 128]++; } verifyBase64Spread(histogram, count, variance); } }
public void testBase64IdCharacterSpreadAtFixedCharPosition() { final int count = 40000; final double variance = 0.3; // % difference // Pick a fixed id length (in quads) and a fixed char position therein. final int chars = 4 + (int) (Math.random() * 10); // between 4 and 14 characters final int index = (int) (Math.random() * chars); // index into id strings for (RandomBase64Generator generator : generators) { int[] histogram = new int[256]; for (int i = 0; i < count; i++) { String id = generator.next(chars); byte b = id.getBytes()[index]; // char at fixed position histogram[b + 128]++; } verifyBase64Spread(histogram, count, variance); } }
private JSONObject getSessionJson(HttpSession session) { try { ParticipantId user = sessionManager.getLoggedInUser(session); String address = (user != null) ? user.getAddress() : null; // TODO(zdwang): Figure out a proper session id rather than generating a // random number String sessionId = (new RandomBase64Generator()).next(10); return new JSONObject() .put(SessionConstants.DOMAIN, domain) .putOpt(SessionConstants.ADDRESS, address) .putOpt(SessionConstants.ID_SEED, sessionId); } catch (JSONException e) { LOG.severe("Failed to create session JSON"); return new JSONObject(); } } }
public void testUniqueness() { for (RandomBase64Generator generator : generators) { HashSet<String> set = new HashSet<String>(); // Len starts at 4 because collisions in really small strings are // actually likely. for (int len = 4; len < 10; len++) { // Expect at most 1 collision among (2^i)+1 pseudo-random strings // of length i set.clear(); int collisions = 0; for (int j = 0; j < (1 << len) + 1; j++) { if (!set.add(generator.next(len))) collisions++; } assertTrue("improbable " + collisions + " collisions in set of " + set.size(), collisions <= 1); } } }
public void testUniqueness() { for (RandomBase64Generator generator : generators) { HashSet<String> set = new HashSet<String>(); // Len starts at 4 because collisions in really small strings are // actually likely. for (int len = 4; len < 10; len++) { // Expect at most 1 collision among (2^i)+1 pseudo-random strings // of length i set.clear(); int collisions = 0; for (int j = 0; j < (1 << len) + 1; j++) { if (!set.add(generator.next(len))) collisions++; } assertTrue("improbable " + collisions + " collisions in set of " + set.size(), collisions <= 1); } } }