package org.ow2.choreos.ee.nodes.cm;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.ow2.choreos.ee.config.QoSManagementConfiguration;
import org.ow2.choreos.nodes.datamodel.CloudNode;
import org.ow2.choreos.utils.SshCommandFailed;
import org.ow2.choreos.utils.SshNotConnected;
import org.ow2.choreos.utils.SshUtil;
import org.ow2.choreos.utils.SshWaiter;
import com.jcraft.jsch.JSchException;
public class NodePreparerTest {
private CloudNode node;
private SshUtil ssh;
private SshWaiter waiter;
private final String INSTANCE_ID = "123456";
@Before
public void setUp() throws Exception {
QoSManagementConfiguration.set(QoSManagementConfiguration.QOS_MGMT, "False");
setNode();
setSsh();
}
private void setNode() {
node = new CloudNode();
node.setIp("192.168.56.101");
node.setUser("ubuntu");
node.setPrivateKey("ubuntu.pem");
}
private void setSsh() throws SshNotConnected, JSchException, SshCommandFailed {
ssh = mock(SshUtil.class);
when(ssh.runCommand(anyString())).thenReturn(INSTANCE_ID);
waiter = mock(SshWaiter.class);
when(waiter.waitSsh(anyString(), anyString(), anyString(), anyInt())).thenReturn(ssh);
}
@Test
public void shouldRunPrepareScript() throws Exception {
final String packageUri = "http://choreos.eu/airline.jar";
final String cookbookTemplateName = "jar";
final String expectedCommand = ". chef-solo/prepare_deployment.sh " + packageUri + " " + cookbookTemplateName
+ " no-qos";
NodePreparer preparer = new NodePreparer(node);
preparer.sshWaiter = waiter;
String instanceId = preparer.prepareNodeForDeployment(packageUri, cookbookTemplateName);
assertEquals(INSTANCE_ID, instanceId);
verify(ssh).runCommand(expectedCommand);
}
@Test
public void shouldRunUndeploymentPrepareScript() throws Exception {
final String instanceId = "1111111111-11111111-111111111-11111111";
final String expectedCommand = ". chef-solo/prepare_undeployment.sh " + instanceId;
NodePreparer preparer = new NodePreparer(node);
preparer.sshWaiter = waiter;
preparer.prepareNodeForUndeployment(instanceId);
verify(ssh).runCommand(expectedCommand);
}
}