Package com.linkedin.databus.core

Source Code of com.linkedin.databus.core.TestDbusPhysicalPartitionEventBuffer

package com.linkedin.databus.core;
/*
*
* Copyright 2013 LinkedIn Corp. All rights reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/


import java.io.IOException;

import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.json.JSONException;
import org.json.JSONObject;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import com.linkedin.databus.core.util.InvalidConfigException;
import com.linkedin.databus2.relay.config.LogicalSourceConfig;
import com.linkedin.databus2.relay.config.PhysicalSourceConfig;
import com.linkedin.databus2.relay.config.PhysicalSourceStaticConfig;


/*
* Physical partition configuration can have a event buffer configuration, this class checks if the event buffer configuration is
* being honored per physical partition
*/
public class TestDbusPhysicalPartitionEventBuffer  {

  PhysicalSourceConfig PhysicalSourcesConfigWithEBuffer;
  PhysicalSourceStaticConfig PhysicalSourcesStaticConfigWithEBuffer;

  PhysicalSourceConfig PhysicalSourcesConfigWithoutEBuffer;
  PhysicalSourceStaticConfig PhysicalSourcesStaticConfigWithoutEbuffer;

  DbusEventBuffer.StaticConfig GlobalDbusEbufferStaticConfig;

  private final static int eventBufferMaxSize = 141234991;
  private final static int scnIndexSize = 192412342;
  private final static int eventBufferReadBufferSize = 92931;
  private final static int globaleventBufferMaxSize = 123456;


  @BeforeClass
  public void setUp() throws InvalidConfigException {

    LogicalSourceConfig loConfig = new LogicalSourceConfig();
    loConfig.setId((short)0);
    loConfig.setName("testlogicalName");
    loConfig.setPartition((short) 0);
    loConfig.setUri("testuri");
    loConfig.setPartitionFunction("constant:1");

    //Physical sources config without event buffer
    PhysicalSourceConfig config = new PhysicalSourceConfig();
    config.setName("testname");
    config.setUri("testuri");
    config.setSource(0,loConfig);
    PhysicalSourcesStaticConfigWithoutEbuffer = config.build();
    PhysicalSourcesConfigWithoutEBuffer = config;

    //Physical sources config with event buffer
    PhysicalSourceConfig config2 = new PhysicalSourceConfig();
    config2.setName("testname");
    config2.setUri("testuri");
    config2.setSource(0,loConfig);
    config2.setName("testname");
    config2.setUri("testuri");
    config2.getDbusEventBuffer().setMaxSize(eventBufferMaxSize);
    config2.getDbusEventBuffer().setScnIndexSize(scnIndexSize);
    config2.getDbusEventBuffer().setAverageEventSize(eventBufferReadBufferSize);
    PhysicalSourcesStaticConfigWithEBuffer = config2.build();
    PhysicalSourcesConfigWithEBuffer = config2;

    //Global event buffer config
    DbusEventBuffer.Config ebufConfig = new DbusEventBuffer.Config();
    ebufConfig.setMaxSize(globaleventBufferMaxSize);
    GlobalDbusEbufferStaticConfig = ebufConfig.build();
  }

  @Test
  public void testBufferSize()
  {
    Assert.assertEquals(true, PhysicalSourcesStaticConfigWithEBuffer.isDbusEventBufferSet());
    Assert.assertEquals(PhysicalSourcesStaticConfigWithEBuffer.getDbusEventBuffer().getMaxSize(), eventBufferMaxSize);
  }

  @Test
  public void addNewBufferTestPhysicalSourceConfig() throws InvalidConfigException
  {
    PhysicalSourceStaticConfig[] physicalSourcesConfig = new PhysicalSourceStaticConfig[1];
    physicalSourcesConfig[0] = PhysicalSourcesStaticConfigWithEBuffer;
    DbusEventBufferMult multBuf = new DbusEventBufferMult(physicalSourcesConfig,
                                                          GlobalDbusEbufferStaticConfig,
                                                          new DbusEventV2Factory());

    //Verify if it addNewBuffer has honored the physicalSourcesConfig event buffer
    DbusEventBuffer buffer = multBuf.getOneBuffer(PhysicalSourcesStaticConfigWithEBuffer.getPhysicalPartition());
    Assert.assertEquals(PhysicalSourcesStaticConfigWithEBuffer.isDbusEventBufferSet(),true);
    Assert.assertEquals(PhysicalSourcesStaticConfigWithEBuffer.getDbusEventBuffer().getMaxSize(), eventBufferMaxSize);
    Assert.assertEquals(buffer.getAllocatedSize(), eventBufferMaxSize);
  }

  @Test
  public void addNewBufferTestGlobalEventBufferConfig() throws InvalidConfigException
  {
    PhysicalSourceStaticConfig[] physicalSourcesConfig = new PhysicalSourceStaticConfig[1];
    physicalSourcesConfig[0] = PhysicalSourcesStaticConfigWithoutEbuffer;
    DbusEventBufferMult multBuf = new DbusEventBufferMult(physicalSourcesConfig,
                                                          GlobalDbusEbufferStaticConfig,
                                                          new DbusEventV2Factory());

    //Verify if it addNewBuffer has honored the globaleventbuffer config
    DbusEventBuffer buffer = multBuf.getOneBuffer(PhysicalSourcesStaticConfigWithoutEbuffer.getPhysicalPartition());
    Assert.assertEquals(PhysicalSourcesStaticConfigWithoutEbuffer.isDbusEventBufferSet(),false);
    Assert.assertEquals(buffer.getAllocatedSize(), globaleventBufferMaxSize);
  }

  /*
   *  The toString method of the physical sources config has been overriden to avoid calling getDbusEventBuffer, this
   *  method will verify if the serialization still works
   */
  @Test
  public void serializePhysicalSourceConfigWithNullEBuffer() throws JSONException
  {
      JSONObject jsonObject = new JSONObject(PhysicalSourcesConfigWithoutEBuffer.toString());
      //System.out.println(PhysicalSourcesConfigWithoutEBuffer.toString());
      Assert.assertEquals(jsonObject.get("dbusEventBuffer"), JSONObject.NULL);
  }

  @Test
  public void serializePhysicalSourceConfig() throws JSONException
  {
    JSONObject jsonObject = new JSONObject(PhysicalSourcesConfigWithEBuffer.toString());
    Assert.assertNotEquals(jsonObject.get("dbusEventBuffer"), null);
  }


  @Test
  public void deserializePhysicalSourceConfigWithEbuffer() throws JSONException, JsonParseException, JsonMappingException, IOException
  {
    JSONObject jsonObject = new JSONObject(PhysicalSourcesConfigWithEBuffer.toString());
    Assert.assertNotEquals(jsonObject.get("dbusEventBuffer"), JSONObject.NULL);
    ObjectMapper mapper = new ObjectMapper();
    PhysicalSourceConfig config = mapper.readValue(jsonObject.toString(), PhysicalSourceConfig.class);
    //System.out.println(config.toString());
    Assert.assertEquals(config.isDbusEventBufferSet(), true);
  }

  @Test
  public void deserializePhysicalSourceConfigWithoutEbuffer() throws JSONException, JsonParseException, JsonMappingException, IOException
  {
    JSONObject jsonObject = new JSONObject(PhysicalSourcesConfigWithoutEBuffer.toString());
    Assert.assertEquals(jsonObject.get("dbusEventBuffer"), JSONObject.NULL);
    ObjectMapper mapper = new ObjectMapper();
    PhysicalSourceConfig config = mapper.readValue(jsonObject.toString(), PhysicalSourceConfig.class);
    Assert.assertEquals(config.isDbusEventBufferSet(), false);
  }
}
TOP

Related Classes of com.linkedin.databus.core.TestDbusPhysicalPartitionEventBuffer

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.