Package com.kurento.kmf.test.sanity

Source Code of com.kurento.kmf.test.sanity.KwsBase

/*
* (C) Copyright 2014 Kurento (http://kurento.org/)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser General Public License
* (LGPL) version 2.1 which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-2.1.html
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
*/
package com.kurento.kmf.test.sanity;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;

import com.kurento.kmf.media.factory.KmfMediaApiProperties;
import com.kurento.kmf.test.base.GridBrowserMediaApiTest;
import com.kurento.kmf.test.services.KurentoServicesTestHelper;

import freemarker.template.Configuration;
import freemarker.template.Template;

/**
* Base for KWS sanity tests.
*
* @author Boni Garcia (bgarcia@gsyc.es)
* @since 4.2.5
*/
public class KwsBase {

  protected static final Logger log = LoggerFactory.getLogger(KwsBase.class);

  protected WebDriver driver;
  protected String serverAddress;
  protected int serverPort;
  protected String kwsUrl;
  protected String[] kwsLibs = { "kws-media-api", "kws-media-api.min",
      "kws-utils", "kws-utils.min" };

  protected static final String DEFAULT_KWS_URL = "http://builds.kurento.org/release/stable/";

  @Before
  public void setup() {
    driver = new FirefoxDriver();
    serverAddress = KmfMediaApiProperties.getThriftKmfAddress().getHost();
    serverPort = KurentoServicesTestHelper.getAppHttpPort();

    createHtmlPages();
    KurentoServicesTestHelper.startHttpServer();
  }

  private void createHtmlPages() {
    try {
      final String outputFolder = new ClassPathResource("static")
          .getFile().getAbsolutePath() + File.separator;

      Configuration cfg = new Configuration();
      cfg.setClassForTemplateLoading(GridBrowserMediaApiTest.class,
          "/templates/");
      Template template = cfg.getTemplate("kws-media-api.html.ftl");

      Map<String, Object> data = new HashMap<String, Object>();
      data.put("kwsUrl", kwsUrl);

      for (String lib : kwsLibs) {
        Writer writer = new FileWriter(new File(outputFolder + lib
            + ".html"));
        data.put("kwsLib", lib);

        if (lib.contains("utils")) {
          data.put("kwsObject", "kwsUtils");
        } else {
          data.put("kwsObject", "KwsMedia");
        }

        template.process(data, writer);
        writer.flush();
        writer.close();
      }
    } catch (Exception e) {
      Assert.fail("Exception creating templates: " + e.getMessage());
    }

  }

  public void doTest() {
    for (String lib : kwsLibs) {
      final String urlTest = "http://" + serverAddress + ":" + serverPort
          + "/" + lib + ".html";
      driver.get(urlTest);
      log.debug("Launching KWS sanity test against {}", urlTest);

      String status = driver.findElement(By.id("status")).getAttribute(
          "value");

      Assert.assertTrue("Sanity test for " + lib + " failed (" + status
          + ")", status.equals("Ok"));
    }
  }

  @After
  public void end() {
    driver.close();
    KurentoServicesTestHelper.teardownHttpServer();
  }

}
TOP

Related Classes of com.kurento.kmf.test.sanity.KwsBase

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.