Package com.kurento.kmf.test.services

Source Code of com.kurento.kmf.test.services.KurentoServicesTestHelper

package com.kurento.kmf.test.services;

import static com.kurento.kmf.common.PropertiesManager.getProperty;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getRabbitMqAddress;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getThriftKmfAddress;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getThriftKmsAddress;

import java.io.File;

import org.apache.catalina.LifecycleException;

import com.kurento.kmf.common.PropertiesManager;
import com.kurento.kmf.connector.MediaConnectorManager;
import com.kurento.kmf.jsonrpcconnector.client.JsonRpcClient;
import com.kurento.kmf.media.factory.KmfMediaApi;
import com.kurento.kmf.rabbitmq.server.RabbitMqConnectorManager;

public class KurentoServicesTestHelper {

  public static final String KMS_TRANSPORT_PROP = "kms.transport";
  public static final String KMS_TRANSPORT_THRIFT_VALUE = "thrift";
  public static final String KMS_TRANSPORT_RABBITMQ_VALUE = "rabbitmq";
  public static final String KMS_TRANSPORT_DEFAULT = KMS_TRANSPORT_THRIFT_VALUE;

  public static final String KMS_PRINT_LOG_PROP = "kms.print.log";
  public static final String KMS_PRINT_LOG_DEFAULT = "true";

  public static final String AUTOSTART_FALSE_VALUE = "false";
  public static final String AUTOSTART_TEST_VALUE = "test";
  public static final String AUTOSTART_TEST_SUITE_VALUE = "testsuite";

  public static final String KMS_AUTOSTART_PROP = "kms.autostart";
  public static final String KMS_AUTOSTART_DEFAULT = AUTOSTART_TEST_VALUE;

  public static final String KMC_AUTOSTART_PROP = "kmc.autostart";
  public static final String KMC_AUTOSTART_DEFAULT = AUTOSTART_FALSE_VALUE;

  public static final String KRC_AUTOSTART_PROP = "krc.autostart";
  public static final String KRC_AUTOSTART_DEFAULT = AUTOSTART_FALSE_VALUE;

  public static final String KMS_HTTP_PORT_PROP = "kms.http.port";
  public static final int KMS_HTTP_PORT_DEFAULT = 9091;

  public static final String APP_HTTP_PORT_PROP = "app.http.port";
  public static final int APP_HTTP_PORT_DEFAULT = 7779;

  public static final String KMC_HTTP_PORT_PROP = "kmc.http.port";
  public static final int KMC_HTTP_PORT_DEFAULT = 7788;

  public static final String MEDIA_CONNECTOR_PREFIX = "kmc";
  public static final String RABBITMQ_CONNECTOR_PREFIX = "krc";

  public static final String KURENTO_TESTFILES_PROP = "kurento.test.files";
  public static final String KURENTO_TESTFILES_DEFAULT = "/var/lib/jenkins/test-files";

  private static HttpServer httpServer;
  private static KurentoMediaServerManager kms;
  private static RabbitMqConnectorManager rabbitMqConnector;
  private static MediaConnectorManager mediaConnector;

  private static String testCaseName;
  private static String testName;
  private static String testDir;
  private static String kmsAutostart = KMS_AUTOSTART_DEFAULT;
  private static String krcAutostart = KRC_AUTOSTART_DEFAULT;
  private static String kmcAutostart = KMS_AUTOSTART_DEFAULT;
  private static String kmsPrintLog;
  private static File logFile;

  public static void startKurentoServicesIfNeccessary() {

    startKurentoMediaServerIfNecessary();
    startRabbitMqConnectorIfNecessary();
    startMediaConnectorIfNecessary();
  }

  private static void startMediaConnectorIfNecessary() {

    kmcAutostart = getProperty(KMC_AUTOSTART_PROP, KMC_AUTOSTART_DEFAULT);

    switch (kmcAutostart) {
    case AUTOSTART_FALSE_VALUE:
      break;
    case AUTOSTART_TEST_VALUE:
      startMediaConnector();
      break;
    case AUTOSTART_TEST_SUITE_VALUE:
      if (mediaConnector == null) {
        startMediaConnector();
      }
      break;
    default:
      throw new IllegalArgumentException("The value '" + kmcAutostart
          + "' is not valid for property " + KMC_AUTOSTART_PROP);
    }
  }

  private static void startRabbitMqConnectorIfNecessary() {
    krcAutostart = getProperty(KRC_AUTOSTART_PROP, KRC_AUTOSTART_DEFAULT);

    switch (krcAutostart) {
    case AUTOSTART_FALSE_VALUE:
      break;
    case AUTOSTART_TEST_VALUE:
      startRabbitMqConnector();
      break;
    case AUTOSTART_TEST_SUITE_VALUE:
      if (mediaConnector == null) {
        startRabbitMqConnector();
      }
      break;
    default:
      throw new IllegalArgumentException("The value '" + krcAutostart
          + "' is not valid for property " + KRC_AUTOSTART_PROP);
    }
  }

  private static void startKurentoMediaServerIfNecessary() {
    kmsAutostart = getProperty(KMS_AUTOSTART_PROP, KMS_AUTOSTART_DEFAULT);
    kmsPrintLog = getProperty(KMS_PRINT_LOG_PROP, KMS_PRINT_LOG_DEFAULT);

    switch (kmsAutostart) {
    case AUTOSTART_FALSE_VALUE:
      break;
    case AUTOSTART_TEST_VALUE:
      startKurentoMediaServer();
      break;
    case AUTOSTART_TEST_SUITE_VALUE:
      if (mediaConnector == null) {
        startKurentoMediaServer();
      }
      break;
    default:
      throw new IllegalArgumentException("The value '" + kmsAutostart
          + "' is not valid for property " + KMS_AUTOSTART_PROP);
    }
  }

  private static void startRabbitMqConnector() {

    rabbitMqConnector = new RabbitMqConnectorManager(
        getThriftKmsAddress(RABBITMQ_CONNECTOR_PREFIX),
        getThriftKmfAddress(RABBITMQ_CONNECTOR_PREFIX),
        getRabbitMqAddress(RABBITMQ_CONNECTOR_PREFIX));
  }

  private static void startMediaConnector() {

    JsonRpcClient client = KmfMediaApi
        .createJsonRpcClientFromSystemProperties(MEDIA_CONNECTOR_PREFIX);

    mediaConnector = new MediaConnectorManager(client, getKmcHttpPort());
  }

  public static void startKurentoMediaServer() {

    String transport = PropertiesManager.getProperty(KMS_TRANSPORT_PROP,
        KMS_TRANSPORT_DEFAULT);

    int httpPort = getKmsHttpPort();

    switch (transport) {
    case KMS_TRANSPORT_THRIFT_VALUE:

      kms = KurentoMediaServerManager.createWithThriftTransport(
          getThriftKmsAddress(), httpPort);
      break;
    case KMS_TRANSPORT_RABBITMQ_VALUE:

      kms = KurentoMediaServerManager.createWithRabbitMqTransport(
          getRabbitMqAddress(), httpPort);
      break;

    default:
      throw new IllegalArgumentException("The value " + transport
          + " is not valid for property " + KMS_TRANSPORT_PROP);
    }

    kms.setTestClassName(testCaseName);
    kms.setTestMethodName(testName);
    kms.start();
  }

  public static void startHttpServer() {
    try {
      httpServer = new HttpServer(getAppHttpPort());
      httpServer.start();
    } catch (Exception e) {
      throw new RuntimeException("Exception starting http server", e);
    }
  }

  public static void teardownServices() {

    teardownHttpServer();
    teardownMediaServer();
    teardownMediaConnector();
    teardownRabbitMediaConnector();
  }

  private static void teardownMediaConnector() {
    if (mediaConnector != null && kmcAutostart.equals(AUTOSTART_TEST_VALUE)) {
      mediaConnector.destroy();
      mediaConnector = null;
    }
  }

  private static void teardownRabbitMediaConnector() {
    if (rabbitMqConnector != null
        && krcAutostart.equals(AUTOSTART_TEST_VALUE)) {
      rabbitMqConnector.destroy();
      rabbitMqConnector = null;
    }
  }

  private static void teardownMediaServer() {
    if (kms != null && kmsAutostart.equals(AUTOSTART_TEST_VALUE)) {
      kms.stop();
      kms = null;
    }
  }

  public static void teardownHttpServer() {
    if (httpServer != null) {
      try {
        httpServer.destroy();
      } catch (LifecycleException e) {
        e.printStackTrace();
      }
    }
  }

  public static void setTestName(String testName) {
    KurentoServicesTestHelper.testName = testName;
  }

  public static String getTestName() {
    return KurentoServicesTestHelper.testName;
  }

  public static void setTestCaseName(String testCaseName) {
    KurentoServicesTestHelper.testCaseName = testCaseName;
  }

  public static String getTestCaseName() {
    return KurentoServicesTestHelper.testCaseName;
  }

  public static void setTestDir(String testDir) {
    KurentoServicesTestHelper.testDir = testDir;
  }

  public static String getTestDir() {
    return KurentoServicesTestHelper.testDir;
  }

  public static boolean printKmsLog() {
    return Boolean.parseBoolean(kmsPrintLog);
  }

  public static int getKmsHttpPort() {
    return PropertiesManager.getProperty(KMS_HTTP_PORT_PROP,
        KMS_HTTP_PORT_DEFAULT);
  }

  public static int getAppHttpPort() {
    return PropertiesManager.getProperty(APP_HTTP_PORT_PROP,
        APP_HTTP_PORT_DEFAULT);
  }

  public static int getKmcHttpPort() {
    return PropertiesManager.getProperty(KMC_HTTP_PORT_PROP,
        KMC_HTTP_PORT_DEFAULT);
  }

  public static String getTestFilesPath() {
    return PropertiesManager.getProperty(KURENTO_TESTFILES_PROP,
        KURENTO_TESTFILES_DEFAULT);
  }

  public static void setServerLogFilePath(File logFile) {
    KurentoServicesTestHelper.logFile = logFile;
  }

  public static File getServerLogFile() {
    return logFile;
  }
}
TOP

Related Classes of com.kurento.kmf.test.services.KurentoServicesTestHelper

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.