meerkat-java/voter-registry/src/test/java/SimpleRegistryTest.java

303 lines
12 KiB
Java
Raw Normal View History

import com.google.protobuf.InvalidProtocolBufferException;
import junit.framework.TestCase;
import meerkat.RegistryMessages;
import meerkat.SimpleRegistry;
import meerkat.VoterRegistry;
import meerkat.VoterRegistryMessage;
import meerkat.bulletinboard.BulletinBoardClient;
import meerkat.bulletinboard.ThreadedBulletinBoardClient;
import meerkat.crypto.concrete.ECDSASignature;
import meerkat.protobuf.BulletinBoardAPI;
import meerkat.protobuf.Voting;
import meerkat.Registry.CollectionMessagesUtils;
import meerkat.Registry.RegistryTags;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Semaphore;
import static meerkat.Registry.CollectionMessagesUtils.ConvertToVoterRegistryMessages;
/**
* TODO: add logs prints for the tests to be clear what they are
*/
/**
* Created by Vladimir Eliezer Tokarev on 1/16/2016.
* Tests the Simple meerkat.Registry contents
* NOTE: for most of this tests to pass there should run BulletinBoardServer
* that should be reachable on BULLETIN_BOARD_SERVER_ADDRESS
*/
public class SimpleRegistryTest extends TestCase {
private ECDSASignature signer;
private BulletinBoardClient bulletinBoardClient;
private SecureRandom random = new SecureRandom();
public static String KEYFILE_EXAMPLE = "/certs/enduser-certs/user1-key-with-password-secret.p12";
public static String KEYFILE_PASSWORD = "secret";
Semaphore jobSemaphore;
class DummyRegistryCallBackHandler<T> implements VoterRegistry.RegistryCallBack<T>{
public int counter;
public T data;
public DummyRegistryCallBackHandler()
{
counter=0;
}
@Override
public void HandleResult(T result) {
counter++;
data = result;
jobSemaphore.release();
}
}
public class DummyBulletinBoardCallBackHandler implements BulletinBoardClient.ClientCallback<List<BulletinBoardAPI.BulletinBoardMessage>> {
public List<BulletinBoardAPI.BulletinBoardMessage> messages;
@Override
public void handleCallback(List<BulletinBoardAPI.BulletinBoardMessage> msg)
{
messages = msg;
jobSemaphore.release();
}
@Override
public void handleFailure(Throwable t){
messages = null;
jobSemaphore.release();
}
}
/**
* Creates the communication object (the bulletinBoardClient)
*/
private void CommunicatorSetup() {
bulletinBoardClient = new ThreadedBulletinBoardClient();
String BULLETIN_BOARD_SERVER_ADDRESS = "http://localhost:8081";
bulletinBoardClient.init(Voting.BulletinBoardClientParams.newBuilder()
.addBulletinBoardAddress(BULLETIN_BOARD_SERVER_ADDRESS)
.setMinRedundancy((float) 1.0)
.build());
}
/**
* Creates the signer object which is the ECDSASignature
*/
private void SetSigner(){
try {
signer = new ECDSASignature();
InputStream keyStream = getClass().getResourceAsStream(KEYFILE_EXAMPLE);
char[] password = KEYFILE_PASSWORD.toCharArray();
KeyStore.Builder keyStore = signer.getPKCS12KeyStoreBuilder(keyStream, password);
signer.loadSigningCertificate(keyStore);
keyStream.close();
}
catch (Exception e){
assert false : "The signer creation failed ";
}
}
/**
* Initialize SimpleRegistry object
*/
public void setUp() {
SetSigner();
CommunicatorSetup();
jobSemaphore = new Semaphore(0);
}
/**
* Checks if the creation of the registry have been successful
*/
public void testSimpleRegistryCreation() {
try {
new SimpleRegistry(signer, bulletinBoardClient);
} catch (Exception e) {
assert false : "While creating the SimpleRegistry exception have been thrown " + e;
}
}
/**
* Counts the amount of messages from messages that have all the wanted tags inside
* @param messages List<VoterRegistryMessage>
* @param tags List<RegistryTags>
* @return integer that represent the amount of messages with wanted tags
*/
private int countMessagesWithTags(List<VoterRegistryMessage> messages, List<String> tags)
{
int counter = 0 ;
for (VoterRegistryMessage message :messages) {
int wantedTagsCounter = 0;
for (String tag : tags) {
if(message.GetWantedTagFromBasicMessage(tag)!=null){
wantedTagsCounter++;
}
}
if(wantedTagsCounter == tags.size())
{
counter++;
}
}
return counter;
}
/**
* Test that add voter creates new correct bulletin board message and adds the voter
*/
public void testAddVoter() throws InvalidProtocolBufferException, InterruptedException {
DummyRegistryCallBackHandler<Boolean> handler = new DummyRegistryCallBackHandler<>();
String id = new BigInteger(130, random).toString(32);
String data = new BigInteger(130, random).toString(32);
RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder().
setId(RegistryMessages.VoterID.newBuilder().setId(id)).setInfo(data).build();
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
registry.AddVoter(voterInfo, handler);
jobSemaphore.acquire();
assertEquals(1, handler.counter );
List<String> tags = new ArrayList<String>(){{ add(RegistryTags.VOTER_ENTRY_TAG.toString());}};
BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags);
DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler();
bulletinBoardClient.readMessages(filters, bulletinHandler);
jobSemaphore.acquire();
tags.add(id);
int counter = countMessagesWithTags(ConvertToVoterRegistryMessages(bulletinHandler.messages), tags);
assert counter == 1 : "The server don't have the new user data.";
}
/**
* Test that set voted posts creates correct bulletin board message and sets that the user have been voted
*/
public void testSetVoted() throws InvalidProtocolBufferException, InterruptedException {
DummyRegistryCallBackHandler<Boolean> handler = new DummyRegistryCallBackHandler<>();
String id = new BigInteger(130, random).toString(32);
RegistryMessages.VoterID voterInfo = RegistryMessages.VoterID.newBuilder().setId(id).build();
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
registry.SetVoted(voterInfo, handler);
jobSemaphore.acquire();
assertEquals(1, handler.counter );
List<String> tags = new ArrayList<String>(){{ add(RegistryTags.VOTE_ACTION_TAG.toString());}};
BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags);
DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler();
bulletinBoardClient.readMessages(filters, bulletinHandler);
jobSemaphore.acquire();
tags.add(id);
int counter = countMessagesWithTags(ConvertToVoterRegistryMessages(bulletinHandler.messages), tags);
assert counter == 1 : "The server don't have the new user id.";
}
/**
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
* Test that get groups retrieves the right groups the user are in
*/
public void testAddToGroup() throws InvalidProtocolBufferException, InterruptedException {
DummyRegistryCallBackHandler<Boolean> handler = new DummyRegistryCallBackHandler<>();
String voterId = new BigInteger(130, random).toString(32);
String groupId = new BigInteger(130, random).toString(32);
RegistryMessages.VoterGroup voterInfo = RegistryMessages.VoterGroup.newBuilder()
.setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId))
.setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build();
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
registry.AddToGroup(voterInfo, handler);
jobSemaphore.acquire();
assertEquals(1, handler.counter);
List<String> tags = new ArrayList<String>(){{ add(RegistryTags.GROUP_ACTION_TAG .toString()
+ RegistryTags.ADD_TO_GROUP_TAG.toString());}};
BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags);
DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler();
bulletinBoardClient.readMessages(filters, bulletinHandler);
jobSemaphore.acquire();
tags.add(voterId);
tags.add(groupId);
int counter = countMessagesWithTags(ConvertToVoterRegistryMessages(bulletinHandler.messages), tags);
assert counter == 1 : "The server don't have the new user added to group.";
}
/**
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
* Test that remove from group creates correct bulletin board message and removes the user from a group
*/
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
public void testGetGroups() throws InvalidProtocolBufferException, InterruptedException {
DummyRegistryCallBackHandler<List<BulletinBoardAPI.BulletinBoardMessage>> handler =
new DummyRegistryCallBackHandler<>();
String voterId = new BigInteger(130, random).toString(32);
String groupId = new BigInteger(130, random).toString(32);
RegistryMessages.VoterGroup voterInfo = RegistryMessages.VoterGroup.newBuilder()
.setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId))
.setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build();
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
registry.AddToGroup(voterInfo, handler);
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
jobSemaphore.acquire();
assertEquals(1, handler.counter );
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
DummyRegistryCallBackHandler<List<String>> groupsHandler = new DummyRegistryCallBackHandler<>();
registry.GetGroups(RegistryMessages.GroupID.newBuilder().setId(groupId).build(), groupsHandler);
jobSemaphore.acquire();
List<String> userGroups = groupsHandler.data;
assert userGroups.contains(RegistryTags.GROUP_ID_TAG + groupId) :
"The simple voter registry object does not retrieved right user groups";
}
/**
* Test that the personal data outputted about the user is right
*/
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
public void testGetPersonalIDDetails() throws InvalidProtocolBufferException, InterruptedException {
DummyRegistryCallBackHandler<List<BulletinBoardAPI.BulletinBoardMessage>> handler =
new DummyRegistryCallBackHandler<>();
String id = new BigInteger(130, random).toString(32);
String data = new BigInteger(130, random).toString(32);
RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder().
setId(RegistryMessages.VoterID.newBuilder().setId(id)).setInfo(data).build();
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
registry.AddVoter(voterInfo, handler);
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
jobSemaphore.acquire();
assertEquals(1, handler.counter );
Added The protobufs file and its java representation Those protobufs are representing the messages that the registry will use when communicating with the bulletin-board Summary: D:/Work/Wombat Working/voter-registry/comment-info.txt Changed the location of the protobufs file The location have been changed to create order in the packages Changed the location of the ProtobufsMessages file so that the Registry file could use it freely Changed the location of the Protobufs file and added the Registry class The protobufs files location was changed for the right location of the packages for Registry class be able to use the protobufs files Changed the location of the ProtobufsMessages file for creating more organized project Created the SimpleRegistry file SimpleRegistry expose the ability of manging voters information (their groups, and personal data) Created RegistryTagTypes file this file have the different tags for registry messages Changed the SimpleRegistry file started to implement the different methods of this class (such as created basic messages) Changed the ProtobufMessages file now using only the basic registry messages Changed the SimpleRegistry file Managed to create the signatory and add empty builder Added the AccurateTimestamp file This file converts string timestamp to timestamp and the other way , its used for the SimpleRegistry tags Moved the AccurateTimeStamp and the RegistryTagTypes to package called util This way the project files are more organized Add the MessagesUtil file This file contain helpfull methods for working with messages (such as basicMessage and BulletinBoardMessage) Created VoterRegistryMessage VoterRegistryMessage extending the abilities of the basic message also changed the name of MessagesUtils to CollectionMessagesUtils because its suits more this class destination Changed the simpleRegistry file Edited the GetPersonIDDetails method , and refactored the basic methods of upload data to BulletinBoardServer Added the SimpleRegistryTest This object tests the simple registry functionality Added the SimpleRegistryTest This object tests the simple registry functionality Changed the RegistryTagsType to RegistryTags The Name RegistryTags more indicative Added The Wombat Code And Documentation This file describes the conventions of the wombat project Changed the SimpleRegistry and VoterRegistryMessage Documentation The documentation was partial in part of the methods Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the SimpleRegistry to work with UnsignedBulletinBoardMessage The basicMessage is not needed Changed the VoterRegistryMessage to wrap UnsignedBulletinBoardMessage there is no need to wrap unused basic message when using UnsignedBulletinBoardMessage Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 Re-organized the voter-registry Since there no need for basicMessage i have removed it, and changed few methods to be in language level 7 added the RegistryInstance interface Which gives the basic registry functionality (because there going to be at least two registries) Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Changed the SimpleRegistry The new Simple Registry works according to the RegistryInstance interface Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Added testing to the SimpleRegistryTest class The Test checking that SetVoter AddVoter AddToGroup RemoveFromGroup methods working. Test Plan: The idea is to create number of BulletinBoardMessage's that and post them, then ask from the server for message with relevant filter and check that all the messages that have been posted there. Reviewers: arbel.peled Differential Revision: https://proj-cs.idc.ac.il/D1
2016-01-30 12:19:25 -05:00
DummyRegistryCallBackHandler<VoterRegistryMessage> personalHandler = new DummyRegistryCallBackHandler<>();
registry.GetPersonIDDetails(RegistryMessages.VoterID.newBuilder().setId(id).build(), personalHandler);
jobSemaphore.acquire();
assertEquals(RegistryTags.ID_TAG + id,
personalHandler.data.GetWantedTagFromBasicMessage(RegistryTags.ID_TAG.toString()));
assertEquals(data,personalHandler.data.base.getData().toStringUtf8());
}
}