Package com.senseidb.gateway.test

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

/**
* 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.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.message.Message;
import kafka.producer.ProducerConfig;
import kafka.server.KafkaConfig;
import kafka.server.KafkaServer;
import kafka.utils.SystemTime$;

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

import proj.zoie.impl.indexing.StreamDataProvider;

import com.senseidb.gateway.SenseiGateway;
import com.senseidb.gateway.kafka.DefaultJsonDataSourceFilter;
import com.senseidb.indexing.DataSourceFilter;
import com.senseidb.plugin.SenseiPluginRegistry;


public class TestKafkaGateway
{
  static SenseiGateway kafkaGateway;

  static SenseiPluginRegistry pluginRegistry;

  static Configuration config = null;

  static KafkaServer kafkaServer = null;

  static File kafkaLogFile = null;

  static TestZkServer zkServer = new TestZkServer();

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

    File confFile = new File(TestKafkaGateway.class.getClassLoader().getResource("configs/kafka-gateway.properties").toURI());
    config = new PropertiesConfiguration(confFile);
    pluginRegistry = SenseiPluginRegistry.build(config);
    pluginRegistry.start();

    Properties kafkaProps = new Properties();
    File kafkaServerFile = new File(TestKafkaGateway.class.getClassLoader().getResource("configs/kafka-server.properties").toURI());
    kafkaProps.load(new FileReader(kafkaServerFile));

    kafkaLogFile = new File(kafkaProps.getProperty("log.dir"));
    FileUtils.deleteDirectory(kafkaLogFile);

    KafkaConfig kafkaConfig = new KafkaConfig(kafkaProps);
    kafkaServer = new KafkaServer(kafkaConfig, SystemTime$.MODULE$);

    kafkaServer.startup();

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

    Properties props = new Properties();
    props.put("metadata.broker.list", "localhost:" + kafkaProps.getProperty("port"));
    props.put("serializer.class", "kafka.serializer.StringEncoder");

    ProducerConfig producerConfig = new ProducerConfig(props);
    Producer<String, String> kafkaProducer = new Producer<String, String>(producerConfig);
    String topic = config.getString("sensei.gateway.kafka.topic");
    List<KeyedMessage<String, String>> msgList = new ArrayList<KeyedMessage<String, String>>();
    for (JSONObject jsonObj : BaseGatewayTestUtil.readDataFile())
    {
      KeyedMessage<String, String> msg = new KeyedMessage<String, String>(topic, jsonObj.toString());
      msgList.add(msg);
    }
    kafkaProducer.send(msgList);
  }

  @AfterClass
  public static void shutdown()
  {
    kafkaGateway.stop();
    pluginRegistry.stop();

    try
    {
      if (kafkaServer != null)
      {
        kafkaServer.shutdown();
        kafkaServer.awaitShutdown();
      }
    }
    finally
    {
      try
      {
        FileUtils.deleteDirectory(kafkaLogFile);
      }
      catch (IOException e)
      {
        e.printStackTrace();
      }
    }

    zkServer.stop();
  }

  @Ignore
  @Test
  public void testSimpleKafka()
      throws Exception
  {
    final StreamDataProvider<JSONObject> dataProvider = kafkaGateway.buildDataProvider((DataSourceFilter) null,
                                                                                       "0",
                                                                                       null,
                                                                                       null);
    BaseGatewayTestUtil.doTest(dataProvider);
  }
}
TOP

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

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.