Map<String, PublicKey> publicKeys = new HashMap<String, PublicKey>();
for (int i = 0; i < random.nextInt(5); i++) {
String userId = NetworkTestUtil.randomString();
KeyPair key = EncryptionUtil.generateRSAKeyPair(H2HConstants.KEYLENGTH_USER_KEYS);
UserPublicKey userPublicKey = new UserPublicKey(key.getPublic());
Parameters parameters = new Parameters().setLocationKey(userId)
.setContentKey(H2HConstants.USER_PUBLIC_KEY).setData(userPublicKey);
network.get(random.nextInt(networkSize)).getDataManager().putUnblocked(parameters)
.awaitUninterruptibly();
publicKeys.put(userId, key.getPublic());
}
for (String userId : publicKeys.keySet()) {
assertEquals(publicKeys.get(userId), publicKeyManager.getPublicKey(userId));
// remove the public keys from network, the manager shouldn't do any get request
Parameters parameters = new Parameters().setLocationKey(userId).setContentKey(
H2HConstants.USER_PUBLIC_KEY);
network.get(random.nextInt(networkSize)).getDataManager().removeUnblocked(parameters)
.awaitUninterruptibly();
// the public key manager should use his cache