Package com.senseidb.gateway.test

Source Code of com.senseidb.gateway.test.TestJDBCGateway

/**
* This software is licensed to you under the Apache License, Version 2.0 (the
* "Apache License").
*
* LinkedIn's contributions are made under the Apache License. If you contribute
* to the Software, the contributions will be deemed to have been made under the
* Apache License, unless you expressly indicate otherwise. Please do not make any
* contributions that would be inconsistent with the Apache License.
*
* You may obtain a copy of the Apache License at http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, this software
* distributed under the Apache License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache
* License for the specific language governing permissions and limitations for the
* software governed under the Apache License.
*
* © 2012 LinkedIn Corp. All Rights Reserved. 
*/

package com.senseidb.gateway.test;


import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.json.JSONObject;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import proj.zoie.impl.indexing.StreamDataProvider;

import com.senseidb.gateway.SenseiGateway;
import com.senseidb.gateway.test.jdbc.ResultSetJsonFilter;
import com.senseidb.plugin.SenseiPluginRegistry;


public class TestJDBCGateway
{

  static File confFile = new File("src/test/resources/configs/jdbc-gateway.properties");

  static SenseiGateway gateway;
  static SenseiPluginRegistry pluginRegistry;

  static Configuration config = null;

  static Connection conn = null;

  static String insertSql = "insert into test (json,version) values(?,?)";

  static String createTableSql = "create table test (json varchar(25600),version int)";

  static String dropTableSql = "drop table test";

  static TestZkServer zkServer = new TestZkServer();

  @BeforeClass
  public static void init()
      throws Exception
  {
    zkServer.start();

    config = new PropertiesConfiguration(new File(TestJDBCGateway.class.getClassLoader().getResource("configs/jdbc-gateway.properties").toURI()));
    String userName = config.getString("sensei.gateway.jdbc.username");
    String password = config.getString("sensei.gateway.jdbc.password", null);
    String url = config.getString("sensei.gateway.jdbc.url");
    Class.forName(config.getString("sensei.gateway.jdbc.driver"));
    conn = DriverManager.getConnection(url, userName, password);
    conn.setAutoCommit(false);
    System.out.println("Database connection established");

    try
    {
      PreparedStatement createDBStmt = conn.prepareStatement(createTableSql);
      createDBStmt.execute();
      conn.commit();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }

    // populate data
    for (JSONObject obj : BaseGatewayTestUtil.readDataFile())
    {
      try
      {
        PreparedStatement stmt = conn.prepareStatement(insertSql);
        stmt.setString(1, obj.toString());
        stmt.setInt(2, obj.getInt("id") + 1);
        stmt.executeUpdate();
      }
      catch (Exception e)
      {
        e.printStackTrace();
      }
    }

    conn.commit();

    pluginRegistry = SenseiPluginRegistry.build(config);
    pluginRegistry.start();

    gateway = pluginRegistry.getBeanByFullPrefix("sensei.gateway", SenseiGateway.class);
  }

  @AfterClass
  public static void shutdown()
  {
    gateway.stop();
    pluginRegistry.stop();
    if (conn != null)
    {
      try
      {
        try
        {
          PreparedStatement createDBStmt = conn.prepareStatement(dropTableSql);
          createDBStmt.execute();
          conn.commit();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        conn.close();
        System.out.println("Database connection terminated");
      }
      catch (Exception e)
      { /* ignore close errors */
      }
    }

    zkServer.stop();
  }

  @Test
  public void testHappyPath()
      throws Exception
  {
    final StreamDataProvider<JSONObject> dataProvider = gateway.buildDataProvider(new ResultSetJsonFilter(),
                                                                                  String.valueOf("0"),
                                                                                  null,
                                                                                  null);
    BaseGatewayTestUtil.doTest(dataProvider);
  }
}
TOP

Related Classes of com.senseidb.gateway.test.TestJDBCGateway

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.