package org.opennaas.extensions.roadm.wonesys.commandsets.test;
import java.util.HashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.opennaas.core.protocols.sessionmanager.ProtocolManager;
import org.opennaas.core.protocols.sessionmanager.ProtocolSessionManager;
import org.opennaas.core.resources.action.ActionException;
import org.opennaas.core.resources.action.ActionResponse;
import org.opennaas.core.resources.action.ActionResponse.STATUS;
import org.opennaas.core.resources.command.Response;
import org.opennaas.core.resources.command.Response.Status;
import org.opennaas.core.resources.protocol.ProtocolException;
import org.opennaas.core.resources.protocol.ProtocolSessionContext;
import org.opennaas.extensions.roadm.wonesys.actionsets.actions.queue.ConfirmAction;
import org.opennaas.extensions.roadm.wonesys.actionsets.actions.queue.PrepareAction;
import org.opennaas.extensions.roadm.wonesys.actionsets.actions.queue.RestoreAction;
import org.opennaas.extensions.roadm.wonesys.commandsets.test.mock.MockProtocolSessionManager;
import org.opennaas.extensions.roadm.wonesys.protocols.WonesysProtocolSession;
import org.opennaas.extensions.roadm.wonesys.protocols.WonesysProtocolSessionFactory;
import org.opennaas.extensions.router.model.opticalSwitch.dwdm.proteus.ProteusOpticalSwitch;
public class LockAndUnlockActionTest {
Log log = LogFactory.getLog(LockAndUnlockActionTest.class);
WonesysProtocolSession session;
// //
private static PrepareAction prepareAction;
private static ConfirmAction confirmAction;
private static RestoreAction restoreAction;
private String resourceId = "pedrosa";
// static ActionTestHelper helper;
// static ProtocolSessionManager protocolsessionmanager;
@Before
public void init() {
ProteusOpticalSwitch opticalSwitch1 = new ProteusOpticalSwitch();
opticalSwitch1.setName(resourceId);
/* prepare action */
prepareAction = new PrepareAction();
prepareAction.setModelToUpdate(opticalSwitch1);
/* confirm action */
confirmAction = new ConfirmAction();
confirmAction.setModelToUpdate(opticalSwitch1);
/* restore action */
restoreAction = new RestoreAction();
restoreAction.setModelToUpdate(opticalSwitch1);
log.info("init test");
}
@Test
public void testPrepareActionMockExecute() {
log.info("Testing Action with mock connection");
try {
ActionResponse response = prepareAction.execute(getMockProtocolSessionManager());
Assert.assertTrue(response.getStatus().equals(STATUS.OK));
for (Response resp : response.getResponses()) {
Assert.assertTrue(resp.getStatus().equals(Status.OK));
}
// ProteusOpticalSwitch opticalSwitch = (ProteusOpticalSwitch) action.getModelToUpdate();
// checkModelIsRefreshed(opticalSwitch);
} catch (ActionException e) {
e.printStackTrace();
Assert.fail();
}
}
@Test
public void testConfirmActionMockExecute() {
log.info("Testing Action with mock connection");
try {
ProtocolSessionManager protocolSessionManager = getMockProtocolSessionManager();
/**
* BUG to do an unlock, before it is necessary to do an lock
*/
prepareAction.execute(protocolSessionManager);
ActionResponse response = confirmAction.execute(protocolSessionManager);
Assert.assertTrue(response.getStatus().equals(STATUS.OK));
for (Response resp : response.getResponses()) {
Assert.assertTrue(resp.getStatus().equals(Status.OK));
}
// ProteusOpticalSwitch opticalSwitch = (ProteusOpticalSwitch) action.getModelToUpdate();
// checkModelIsRefreshed(opticalSwitch);
} catch (ActionException e) {
e.printStackTrace();
Assert.fail();
}
}
@Test
public void testRestoreActionMockExecute() {
log.info("Testing Action with mock connection");
ProtocolSessionManager protocolSessionManager = getMockProtocolSessionManager();
try {
/**
* BUG to do an unlock, before it is necessary to do an lock
*/
prepareAction.execute(protocolSessionManager);
ActionResponse response = restoreAction.execute(protocolSessionManager);
Assert.assertTrue(response.getStatus().equals(STATUS.ERROR));
for (Response resp : response.getResponses()) {
Assert.assertTrue(resp.getStatus().equals(Status.OK));
}
// ProteusOpticalSwitch opticalSwitch = (ProteusOpticalSwitch) action.getModelToUpdate();
// checkModelIsRefreshed(opticalSwitch);
} catch (ActionException e) {
e.printStackTrace();
Assert.fail();
}
}
public ProtocolSessionManager getMockProtocolSessionManager() {
ProtocolSessionManager protocolSessionManager = new MockProtocolSessionManager(resourceId);
return protocolSessionManager;
}
public ProtocolSessionManager getProtocolSessionManager() throws ProtocolException {
ProtocolManager protocolManager = new ProtocolManager();
ProtocolSessionManager protocolSessionManager = null;
protocolSessionManager = (ProtocolSessionManager) protocolManager.getProtocolSessionManager(resourceId);
ProtocolSessionContext wonesysContext = newSessionContextWonesys();
protocolManager.sessionFactoryAdded(new WonesysProtocolSessionFactory(), new HashMap<String, String>() {
{
put(ProtocolSessionContext.PROTOCOL, "wonesys");
}
});
protocolSessionManager.registerContext(wonesysContext);
return protocolSessionManager;
}
/**
* Configure the protocol to connect
*/
private ProtocolSessionContext newSessionContextWonesys() {
String hostIpAddress = "10.10.80.11";
String hostPort = "27773";
ProtocolSessionContext protocolSessionContext = new ProtocolSessionContext();
protocolSessionContext.addParameter(ProtocolSessionContext.PROTOCOL,
"wonesys");
protocolSessionContext.addParameter(ProtocolSessionContext.PROTOCOL_URI, "wonesys://" + hostIpAddress + ":" + hostPort);
return protocolSessionContext;
}
}