Package com.openshift.internal.client

Source Code of com.openshift.internal.client.ApplicationSSHSessionTest

/*******************************************************************************
* Copyright (c) 2012 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.internal.client;

import static com.openshift.client.utils.Samples.GET_DOMAINS;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_SPRINGEAP6_1EMBEDDED;
import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_SPRINGEAP6_CARTRIDGES_1EMBEDDED;
import static org.fest.assertions.Assertions.assertThat;

import java.io.ByteArrayInputStream;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.openshift.client.IApplication;
import com.openshift.client.IApplicationPortForwarding;
import com.openshift.client.IApplicationSSHSession;
import com.openshift.client.IDomain;

/**
* @author Corey Daley
*/
public class ApplicationSSHSessionTest extends TestTimer {

  private IDomain domain;
  private HttpClientMockDirector mockDirector;

  @Before
  public void setup() throws Throwable {
    this.mockDirector = new HttpClientMockDirector()
        .mockGetDomains(GET_DOMAINS)
        .mockGetApplications("foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_1EMBEDDED)
        .mockGetApplication("foobarz", "springeap6", GET_DOMAINS_FOOBARZ_APPLICATIONS_SPRINGEAP6_1EMBEDDED)
        .mockGetApplicationCartridges("foobarz", "springeap6",
            GET_DOMAINS_FOOBARZ_APPLICATIONS_SPRINGEAP6_CARTRIDGES_1EMBEDDED);
    this.domain = mockDirector.getDomain("foobarz");
    assertThat(domain).isNotNull();
  }

  @Test
  public void shouldGetForwardablePorts() throws Throwable {
    // pre-conditions
    final IApplication app = domain.getApplicationByName("springeap6");
    assertThat(app).isNotNull().isInstanceOf(ApplicationResource.class);
    String rhcListPortsOutput =
        "haproxy -> 127.7.233.2:8080\n"
            + " haproxy -> 127.7.233.3:8080\n"
            + " java -> 127.7.233.1:3528\n"
            + " java -> 127.7.233.1:4447\n"
            + " java -> 127.7.233.1:5445\n"
            + " java -> 127.7.233.1:5455\n"
            + " java -> 127.7.233.1:8080\n"
            + " java -> 127.7.233.1:9990\n"
            + " java -> 127.7.233.1:9999\n"
            + " mysql -> 5190d701500446506a0000e4-foobarz.rhcloud.com:56756";
    ApplicationResource spy = Mockito.spy(((ApplicationResource) app));
    final IApplicationSSHSession session =
        new ApplicationSSHSession(spy, new JSch().getSession("mockuser", "mockhost", 22));
    ApplicationSSHSession spyedSession = Mockito.spy(((ApplicationSSHSession) session));
    Mockito.doReturn(new ByteArrayInputStream(rhcListPortsOutput.getBytes()))
        .when(spyedSession)
        .execCommand(Mockito.anyString(), (ApplicationSSHSession.ChannelInputStreams) Mockito.any(),
            (Session) Mockito.any());
    Mockito.doReturn(true)
        .when(spyedSession)
        .isConnected();

    // operation
    List<IApplicationPortForwarding> forwardablePorts = spyedSession.getForwardablePorts();

    // verification
    assertThat(forwardablePorts).isNotEmpty().hasSize(10);
    assertThat(forwardablePorts)
        .onProperty("name")
        .containsExactly("haproxy", "haproxy", "java", "java", "java", "java", "java", "java", "java", "mysql");
    assertThat(forwardablePorts)
        .onProperty("remoteAddress").containsExactly(
            "127.7.233.2", "127.7.233.3", "127.7.233.1",
            "127.7.233.1", "127.7.233.1", "127.7.233.1", "127.7.233.1", "127.7.233.1", "127.7.233.1",
            "5190d701500446506a0000e4-foobarz.rhcloud.com");
    assertThat(forwardablePorts)
        .onProperty("remotePort").containsExactly(8080, 8080, 3528, 4447, 5445, 5455, 8080, 9990, 9999, 56756);
  }

  @Test
  public void shouldRefreshForwardablePorts() throws Throwable {
    // pre-conditions
    final IApplication app = domain.getApplicationByName("springeap6");
    assertThat(app).isNotNull().isInstanceOf(ApplicationResource.class);
    String rhcListPortsOutput =
        "haproxy -> 127.7.233.2:8080\n"
            + " haproxy -> 127.7.233.3:8080\n"
            + " java -> 127.7.233.1:3528\n"
            + " java -> 127.7.233.1:4447\n"
            + " java -> 127.7.233.1:5445\n"
            + " java -> 127.7.233.1:5455\n"
            + " java -> 127.7.233.1:8080\n"
            + " java -> 127.7.233.1:9990\n"
            + " java -> 127.7.233.1:9999\n"
            + " mysql -> 5190d701500446506a0000e4-foobarz.rhcloud.com:56756";
    ApplicationSSHSessionMockDirector mockDirector =
        new ApplicationSSHSessionMockDirector(app).mockGetForwardablePorts(rhcListPortsOutput);

    // operation
    ApplicationSSHSession applicationSession = mockDirector.getMock();
    List<IApplicationPortForwarding> forwardablePorts = applicationSession.getForwardablePorts();

    // verification
    assertThat(forwardablePorts).isNotEmpty().hasSize(10);
    assertThat(forwardablePorts)
        .onProperty("name").containsExactly(
            "haproxy", "haproxy", "java", "java", "java", "java", "java", "java", "java", "mysql");
    assertThat(forwardablePorts)
        .onProperty("remoteAddress").containsExactly(
            "127.7.233.2", "127.7.233.3", "127.7.233.1",
            "127.7.233.1", "127.7.233.1", "127.7.233.1", "127.7.233.1", "127.7.233.1", "127.7.233.1",
            "5190d701500446506a0000e4-foobarz.rhcloud.com");
    assertThat(forwardablePorts)
        .onProperty("remotePort")
        .containsExactly(8080, 8080, 3528, 4447, 5445, 5455, 8080, 9990, 9999, 56756);

    // pre-conditions
    String rhcListPortsOutputNew =
        "haproxy -> 127.7.233.2:8080\n" +
            " haproxy -> 127.7.233.3:8080\n" +
            " java -> 127.7.233.1:3528\n" +
            " java -> 127.7.233.1:4447\n" +
            " java -> 127.7.233.1:5445\n" +
            " mysql -> 5190d701500446506a0000e4-foobarz.rhcloud.com:56756";

    mockDirector.mockGetForwardablePorts(rhcListPortsOutputNew);

    // operation
    List<IApplicationPortForwarding> refreshedForwardablePorts = applicationSession.refreshForwardablePorts();

    // verification
    assertThat(refreshedForwardablePorts).isNotEmpty().hasSize(6);
    assertThat(refreshedForwardablePorts)
        .onProperty("name").containsExactly("haproxy", "haproxy", "java", "java", "java", "mysql");
    assertThat(refreshedForwardablePorts)
        .onProperty("remoteAddress")
        .containsExactly(
            "127.7.233.2", "127.7.233.3", "127.7.233.1", "127.7.233.1", "127.7.233.1",
            "5190d701500446506a0000e4-foobarz.rhcloud.com");
    assertThat(refreshedForwardablePorts)
        .onProperty("remotePort").containsExactly(8080, 8080, 3528, 4447, 5445, 56756);

  }

  @Test
  public void shouldGetEnvironmentProperties() throws Throwable {
    // pre-conditions
    final IApplication app = domain.getApplicationByName("springeap6");
    assertThat(app).isNotNull().isInstanceOf(ApplicationResource.class);
    String environmentProperties =
        "OPENSHIFT_TMP_DIR=/tmp/\n" +
            "HOSTNAME=ex-std-node360.prod.rhcloud.com\n" +
            "BASH=/bin/bash\n" +
            "OPENSHIFT_BROKER_HOST=openshift.redhat.com\n" +
            "OPENSHIFT_APP_NAME=springeap6";
    ApplicationSSHSession applicationSession =
        new ApplicationSSHSessionMockDirector(app).mockGetEnvironmentProperties(environmentProperties)
            .getMock();

    // operation
    List<String> environmentProperties2 = applicationSession.getEnvironmentProperties();

    // verification
    assertThat(environmentProperties2).isNotEmpty().hasSize(5);
    assertThat(environmentProperties2)
        .containsExactly(
            "OPENSHIFT_TMP_DIR=/tmp/",
            "HOSTNAME=ex-std-node360.prod.rhcloud.com",
            "BASH=/bin/bash",
            "OPENSHIFT_BROKER_HOST=openshift.redhat.com",
            "OPENSHIFT_APP_NAME=springeap6");
  }
}
TOP

Related Classes of com.openshift.internal.client.ApplicationSSHSessionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.