Package com.openshift.internal.client

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

/*******************************************************************************
* 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 org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

import org.junit.Before;
import org.junit.Test;

import com.openshift.client.IHttpClient;
import com.openshift.client.IOpenShiftConnection;
import com.openshift.client.OpenShiftException;
import com.openshift.client.cartridge.EmbeddableCartridge;
import com.openshift.client.cartridge.ICartridge;
import com.openshift.client.cartridge.IEmbeddableCartridge;
import com.openshift.client.cartridge.IEmbeddedCartridge;
import com.openshift.client.cartridge.IStandaloneCartridge;
import com.openshift.client.cartridge.StandaloneCartridge;
import com.openshift.client.cartridge.query.CartridgeNameQuery;
import com.openshift.client.cartridge.query.CartridgeNameRegexQuery;
import com.openshift.client.cartridge.query.LatestEmbeddableCartridge;
import com.openshift.client.cartridge.query.LatestVersionOf;
import com.openshift.client.cartridge.query.LatestVersionQuery;
import com.openshift.client.cartridge.query.StringPropertyQuery;
import com.openshift.client.utils.CartridgeAssert;
import com.openshift.client.utils.CartridgeTestUtils;
import com.openshift.client.utils.Samples;
import com.openshift.client.utils.TestConnectionBuilder;

/**
* @author Andre Dietisheim
*/
public class CartridgeQueryTest extends TestTimer {

  private IOpenShiftConnection connection;

  @Before
  public void setUp() throws OpenShiftException, FileNotFoundException, IOException {
    IHttpClient client = new HttpClientMockDirector()
        .mockGetCartridges(Samples.GET_CARTRIDGES)
        .client();
    this.connection = new TestConnectionBuilder().defaultCredentials().create(client);
  }

  @Test
  public void shouldEqualsOtherCartridgeConstraint() {
    // pre-conditions
    // operation
    // verification
    assertEquals(
        new LatestVersionQuery("redhat"),
        new LatestVersionQuery("redhat"));
    assertFalse(new LatestVersionQuery("redhat").equals(
        new LatestVersionQuery("jboss")));
  }

  @Test
  public void shouldMatchEmbeddableCartridge() {
    // pre-conditions
    LatestVersionQuery redhatSelector = new LatestVersionQuery("redhat");
    LatestVersionQuery jbossSelector = new LatestVersionQuery("jboss");
    IEmbeddableCartridge redhat10 = new EmbeddableCartridge("redhat-1.0");
    IEmbeddableCartridge redhat30 = new EmbeddableCartridge("redhat-3.0");
    IEmbeddableCartridge jboss10 = new EmbeddableCartridge("jboss-1.0");
    LatestVersionQuery closedSourceSelector = new LatestVersionQuery("closedsource");
    // operation
    // verification
    assertTrue(redhatSelector.matches(redhat10));
    assertTrue(redhatSelector.matches(redhat30));
    assertFalse(redhatSelector.matches(jboss10));
    assertTrue(jbossSelector.matches(jboss10));
    assertFalse(closedSourceSelector.matches(jboss10));
  }

  @Test
  public void shouldReturnEmptyListOnNoCartridges() {
    // pre-conditions
    List<IEmbeddedCartridge> embeddedCartridges = Collections.emptyList();

    LatestVersionQuery selector = new LatestVersionQuery("mysql");

    // operation
    IEmbeddedCartridge matchingCartridge = selector.get(embeddedCartridges);

    // verification
    assertThat(matchingCartridge).isNull();
  }

  @Test
  public void shouldReturnEmptyListOnNoMatchingCartridge() {
    // pre-conditions
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(
        "eclipsecon-2013", "community");

    LatestVersionQuery selector = new LatestVersionQuery("fun");

    // operation
    IEmbeddedCartridge matchingCartridge = selector.get(embeddedCartridges);

    // verification
    assertThat(matchingCartridge).isNull();
  }

  @Test
  public void shouldMatchMysql() {
    // pre-conditions
    List<IEmbeddedCartridge> embeddedCartridges =
        CartridgeTestUtils.createEmbeddedCartridgeMocks(CartridgeTestUtils.MYSQL_51_NAME);
    LatestVersionQuery cartridgeConstraint = new LatestVersionQuery("mysql");

    // operation
    IEmbeddedCartridge matchingCartridge = cartridgeConstraint.get(embeddedCartridges);

    // verification
    assertThat(matchingCartridge).isNotNull();
    assertThat(matchingCartridge.getName()).isEqualTo(CartridgeTestUtils.MYSQL_51_NAME);
  }

  @Test
  public void shouldMatchLatestMysql() {
    // pre-conditions
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(
        CartridgeTestUtils.MYSQL_51_NAME, "mysql-5.0");

    LatestVersionQuery cartridgeSelector = new LatestVersionQuery("mysql");

    // operation
    IEmbeddedCartridge latestMysql = cartridgeSelector.get(embeddedCartridges);

    // verification
    assertThat(latestMysql).isNotNull();
    assertThat(latestMysql.getName()).isEqualTo(CartridgeTestUtils.MYSQL_51_NAME);
  }

  @Test
  public void shouldMatchMajorVersionedCartridge() {
    // pre-conditions
    String cartridgeName = "vertx-2";
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(cartridgeName, "mysql");
    LatestEmbeddableCartridge constraint = new LatestEmbeddableCartridge("vertx");

    // operation
    IEmbeddedCartridge cartridge = constraint.get(embeddedCartridges);

    // verification
    assertThat(cartridge).isNotNull();
    assertThat(cartridge.getName()).isEqualTo(cartridgeName);
  }

  @Test
  public void shouldMatchLaterMajorVersion() {
    // pre-conditions
    String mysql6Name = "mysql-6";
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(mysql6Name, "mysql-5.0");

    LatestVersionQuery cartridgeSelector = new LatestVersionQuery("mysql");

    // operation
    IEmbeddedCartridge latestMysql = cartridgeSelector.get(embeddedCartridges);

    // verification
    assertThat(latestMysql).isNotNull();
    assertThat(latestMysql.getName()).isEqualTo(mysql6Name);
  }

  @Test
  public void shouldMatchAlphanumericVersionedCartridge() {
    // pre-conditions
    String cartridgeName = "somecartridge-7b";
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(
        cartridgeName, "mysql-5.0");
    LatestVersionQuery constraint = new LatestVersionQuery("somecartridge");

    // operation
    IEmbeddedCartridge cartridge = constraint.get(embeddedCartridges);

    // verification
    assertThat(cartridge).isNotNull();
    assertThat(cartridge.getName()).isEqualTo(cartridgeName);
  }

  @Test
  public void shouldMatchCartridgeNameWithDash() {
    // pre-conditions
    String jenkins2 = "jenkins-client-2.0";
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(
        jenkins2, "jenkins-client-1.4");
    LatestVersionQuery constraint = new LatestVersionQuery("jenkins-client");

    // operation
    IEmbeddedCartridge cartridge = constraint.get(embeddedCartridges);

    // verification
    assertThat(cartridge).isNotNull();
    assertThat(cartridge.getName()).isEqualTo(jenkins2);
  }

  @Test
  public void shouldMatchingCartridgeName() {
    // pre-conditions
    List<IEmbeddedCartridge> embeddedCartridges = CartridgeTestUtils.createEmbeddedCartridgeMocks(
        "Timberlake", "TimAndStrupi");

    StringPropertyQuery selector = new StringPropertyQuery("Tim.*") {

      @Override
      protected <C extends ICartridge> String getProperty(C cartridge) {
        return cartridge.getName();
      }

    };

    // operation
    IEmbeddedCartridge matchingCartridge = selector.get(embeddedCartridges);
    Collection<IEmbeddedCartridge> matchingCartridges = selector.getAll(embeddedCartridges);

    // verification
    assertThat(matchingCartridge).isNotNull();
    assertThat(matchingCartridge.getName()).isEqualTo("Timberlake");
    assertThat(matchingCartridges).onProperty("name").containsOnly("Timberlake", "TimAndStrupi");
  }

  @Test
  public void shouldSelectNodeJsByDescriptionRegex() {
    // pre-conditions
    List<StandaloneCartridge> standaloneCartridges = Arrays.asList(
        new StandaloneCartridge("bingobongo"),
        new StandaloneCartridge("bongomongo"),
        new StandaloneCartridge("nodejs-0.6", null,
            "Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, "
                + "scalable network applications. Node.js is perfect for data-intensive real-time "
                + "applications that run across distributed devices."
                , false)
        );
    StringPropertyQuery query = new StringPropertyQuery(".+platform built on Chrome's JavaScript runtime.+") {

      @Override
      protected <C extends ICartridge> String getProperty(C cartridge) {
        return cartridge.getDescription();
      }
    };
    // operation
    IStandaloneCartridge nodeJs = query.get(standaloneCartridges);

    // verification
    new CartridgeAssert<IStandaloneCartridge>(nodeJs)
        .hasName("nodejs-0.6");

  }

  @Test
  public void shouldSelectJBossAs() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_JBOSSAS, LatestVersionOf.jbossAs().get(connection));
  }

  @Test
  public void shouldSelectJBossEap() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_JBOSSEAP, LatestVersionOf.jbossEap().get(connection));
  }

  @Test
  public void shouldSelectJBossEws() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_JBOSSEWS, LatestVersionOf.jbossEws().get(connection));
  }

  @Test
  public void shouldSelectJenkins() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_JENKINS, LatestVersionOf.jenkins().get(connection));
  }

  @Test
  public void shouldSelectPerl() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_PERL, LatestVersionOf.perl().get(connection));
  }

  @Test
  public void shouldSelectPhp() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_PHP, LatestVersionOf.php().get(connection));
  }

  @Test
  public void shouldSelectPython() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_PYTHON, LatestVersionOf.python().get(connection));
  }

  @Test
  public void shouldSelectRuby() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_RUBY, LatestVersionOf.ruby().get(connection));
  }

  @Test
  public void shouldSelectZend() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IStandaloneCartridge.NAME_ZEND, LatestVersionOf.zend().get(connection));
  }

  @Test
  public void shouldSelectMmsAgent() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_10GEN_MMS_AGENT,
        LatestVersionOf.mmsAgent().get(connection));
  }

  @Test
  public void shouldSelectHaProxy() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_HAPROXY,
        LatestVersionOf.haProxy().get(connection));
  }

  @Test
  public void shouldSelectJenkinsClient() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_JENKINS_CLIENT,
        LatestVersionOf.jenkinsClient().get(connection));
  }

  @Test
  public void shouldSelectMongoDb() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_MONGODB,
        LatestVersionOf.mongoDB().get(connection));
  }

  @Test
  public void shouldSelectMySql() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_MYSQL,
        LatestVersionOf.mySQL().get(connection));
  }

  @Test
  public void shouldSelectPhpMyAdmin() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_PHPMYADMIN,
        LatestVersionOf.phpMyAdmin().get(connection));
  }

  @Test
  public void shouldSelectpostgreSql() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_POSTGRESQL,
        LatestVersionOf.postgreSQL().get(connection));
  }

  @Test
  public void shouldSelectRockmongo() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_ROCKMONGO,
        LatestVersionOf.rockMongo().get(connection));
  }

  @Test
  public void shouldSelectMongoByNameSubstring() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_MONGODB,
        new CartridgeNameQuery(IEmbeddedCartridge.NAME_MONGODB).get(connection.getEmbeddableCartridges()));
  }

  @Test
  public void shouldSelectRockmongoByNameRegex() {
    // pre-conditions
    // operation
    // verification
    assertCartridge(IEmbeddedCartridge.NAME_MONGODB,
        new CartridgeNameRegexQuery(IEmbeddedCartridge.NAME_MONGODB + ".*").get(connection.getEmbeddableCartridges()));
  }

  private void assertCartridge(String expectedName, ICartridge cartridge) {
    assertThat(cartridge).isNotNull();
    assertThat(cartridge.getName()).startsWith(expectedName);
  }
}
TOP

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

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.