package org.ourgrid.acceptance.util;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.easymock.classextension.EasyMock;
import org.ourgrid.common.interfaces.status.PeerStatusProviderClient;
import org.ourgrid.common.statistics.beans.aggregator.AG_Attribute;
import org.ourgrid.common.statistics.beans.aggregator.AG_Login;
import org.ourgrid.common.statistics.beans.aggregator.AG_Peer;
import org.ourgrid.common.statistics.beans.aggregator.AG_User;
import org.ourgrid.common.statistics.beans.aggregator.AG_Worker;
import org.ourgrid.common.statistics.beans.aggregator.monitor.AG_WorkerStatusChange;
import org.ourgrid.matchers.PeerCompleteHistoryStatusMatcher;
import org.ourgrid.peer.PeerComponent;
import org.ourgrid.peer.communication.receiver.PeerComponentReceiver;
import org.ourgrid.peer.status.PeerCompleteHistoryStatus;
import br.edu.ufcg.lsd.commune.context.ModuleContext;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class PeerDBTestUtil {
private PeerAcceptanceUtil util;
private boolean active;
public PeerDBTestUtil(ModuleContext context) {
this(context, true);
}
public PeerDBTestUtil(ModuleContext context, boolean active) {
util = new PeerAcceptanceUtil(context);
this.active = active;
}
public void verifyPeerAdrees(PeerComponent component, long time, List<String> expectedAddresses) {
if (!active) {
return;
}
PeerStatusProviderClient client = EasyMock.createMock(PeerStatusProviderClient.class);
PeerCompleteHistoryStatus completeStatus = new PeerCompleteHistoryStatus(0, "");
List<AG_Peer> peers = new LinkedList<AG_Peer>();
for (String expectedAddress : expectedAddresses) {
AG_Peer peerInfo = new AG_Peer();
peerInfo.setAddress(expectedAddress);
peers.add(peerInfo);
}
completeStatus.setPeerInfo(peers);
client.hereIsCompleteHistoryStatus((ServiceID) EasyMock.notNull(), PeerCompleteHistoryStatusMatcher.eqMatcher(completeStatus), EasyMock.anyLong());
EasyMock.replay(client);
PeerComponentReceiver pcc = (PeerComponentReceiver) util.getPeerControl();
pcc.getCompleteHistoryStatus(client, time);
EasyMock.verify(client);
}
public void verifyWorkers(PeerComponent component, long time, List<AG_Worker> workers) {
if (!active) {
return;
}
PeerStatusProviderClient client = EasyMock.createMock(PeerStatusProviderClient.class);
PeerCompleteHistoryStatus completeStatus = new PeerCompleteHistoryStatus(0, "");
AG_Peer peerTemp = new AG_Peer();
peerTemp.setWorkers(workers);
List<AG_Peer> peers = new ArrayList<AG_Peer>();
peers.add(peerTemp);
completeStatus.setPeerInfo(peers);
client.hereIsCompleteHistoryStatus((ServiceID) EasyMock.notNull(), PeerCompleteHistoryStatusMatcher.eqMatcher(completeStatus), EasyMock.anyLong());
EasyMock.replay(client);
PeerComponentReceiver pcc = (PeerComponentReceiver) util.getPeerControl();
pcc.getCompleteHistoryStatus(client, time);
EasyMock.verify(client);
}
public void verifyUsers(PeerComponent component, long time, List<AG_User> users) {
if (!active) {
return;
}
PeerStatusProviderClient client = EasyMock.createMock(PeerStatusProviderClient.class);
PeerCompleteHistoryStatus completeStatus = new PeerCompleteHistoryStatus(0, "");
AG_Peer peerTemp = new AG_Peer();
peerTemp.setUsers(users);
List<AG_Peer> peers = new ArrayList<AG_Peer>();
peers.add(peerTemp);
completeStatus.setPeerInfo(peers);
client.hereIsCompleteHistoryStatus((ServiceID) EasyMock.notNull(), PeerCompleteHistoryStatusMatcher.eqMatcher(completeStatus), EasyMock.anyLong());
EasyMock.replay(client);
PeerComponentReceiver pcc = (PeerComponentReceiver) util.getPeerControl();
pcc.getCompleteHistoryStatus(client, time);
EasyMock.verify(client);
}
public void verifyLogin(PeerComponent component, long time, List<AG_Login> loginInfo) {
if (!active) {
return;
}
PeerStatusProviderClient client = EasyMock.createMock(PeerStatusProviderClient.class);
PeerCompleteHistoryStatus completeStatus = new PeerCompleteHistoryStatus(0, "");
AG_Peer peerTemp = new AG_Peer();
AG_User userTemp = new AG_User();
userTemp.setLogins(loginInfo);
List<AG_User> users = new ArrayList<AG_User>();
users.add(userTemp);
peerTemp.setUsers(users);
List<AG_Peer> peers = new ArrayList<AG_Peer>();
peers.add(peerTemp);
completeStatus.setPeerInfo(peers);
client.hereIsCompleteHistoryStatus((ServiceID) EasyMock.notNull(), PeerCompleteHistoryStatusMatcher.eqMatcher(completeStatus), EasyMock.anyLong());
EasyMock.replay(client);
PeerComponentReceiver pcc = (PeerComponentReceiver) util.getPeerControl();
pcc.getCompleteHistoryStatus(client, time);
EasyMock.verify(client);
}
public void verifyWorkerStatusChange(PeerComponent component, long time, List<AG_WorkerStatusChange> statusChange) {
if (!active) {
return;
}
PeerStatusProviderClient client = EasyMock.createMock(PeerStatusProviderClient.class);
PeerCompleteHistoryStatus completeStatus = new PeerCompleteHistoryStatus(0, "");
completeStatus.setWorkerStatusChangeInfo(statusChange);
client.hereIsCompleteHistoryStatus((ServiceID) EasyMock.notNull(), PeerCompleteHistoryStatusMatcher.eqMatcher(completeStatus), EasyMock.anyLong());
EasyMock.replay(client);
PeerComponentReceiver pcc = (PeerComponentReceiver) util.getPeerControl();
pcc.getCompleteHistoryStatus(client, time);
EasyMock.verify(client);
}
public static AG_Worker createWorkerInfo(String userName, String serverName, String mem, String peerAddress) {
AG_Worker workerInfo = new AG_Worker();
List<AG_Attribute> attributes = new ArrayList<AG_Attribute>();
workerInfo.setAddress(userName + "@" + serverName);
AG_Attribute workerServerName = new AG_Attribute();
workerServerName.setProperty("servername");
workerServerName.setValue(serverName);
attributes.add(workerServerName);
AG_Attribute workerUserName = new AG_Attribute();
workerUserName.setProperty("username");
workerUserName.setValue(userName);
attributes.add(workerUserName);
AG_Attribute workerMem = new AG_Attribute();
workerMem.setProperty("mem");
workerMem.setValue(mem);
attributes.add(workerMem);
AG_Peer peer = new AG_Peer();
peer.setAddress(peerAddress);
workerInfo.setPeer(peer);
workerInfo.setAttributes(attributes);
return workerInfo;
}
public static AG_Worker createClassAdWorkerInfo(String userName, String serverName, String mem, String peerAddress) {
AG_Worker workerInfo = new AG_Worker();
List<AG_Attribute> attributes = new ArrayList<AG_Attribute>();
workerInfo.setAddress(userName + "@" + serverName);
AG_Attribute workerServerName = new AG_Attribute();
workerServerName.setProperty("servername");
workerServerName.setValue(serverName);
attributes.add(workerServerName);
AG_Attribute workerUserName = new AG_Attribute();
workerUserName.setProperty("username");
workerUserName.setValue(userName);
attributes.add(workerUserName);
AG_Attribute workerMem = new AG_Attribute();
workerMem.setProperty("mainMemory");
workerMem.setValue(mem);
attributes.add(workerMem);
AG_Peer peer = new AG_Peer();
peer.setAddress(peerAddress);
workerInfo.setPeer(peer);
workerInfo.setAttributes(attributes);
return workerInfo;
}
public static AG_User createUserInfo(String address, String peer, String password, String publicKey) {
AG_User userInfo = new AG_User();
userInfo.setAddress(address);
AG_Peer peerInfo = new AG_Peer();
peerInfo.setAddress(peer);
userInfo.setPeer(peerInfo);
userInfo.setPublicKey(publicKey);
return userInfo;
}
}