Package com.cloudera.flume.master.flow

Source Code of com.cloudera.flume.master.flow.TestFlowConfigManager

/**
* Licensed to Cloudera, Inc. under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  Cloudera, Inc. licenses this file
* to you 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.
*/
package com.cloudera.flume.master.flow;

import static org.junit.Assert.assertEquals;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import com.cloudera.flume.conf.FlumeSpecException;
import com.cloudera.flume.conf.FlumeConfigData;
import com.cloudera.flume.master.ConfigManager;
import com.cloudera.flume.master.ConfigurationManager;
import com.cloudera.flume.master.flows.FlowConfigManager;

/**
* This tests the flow config manager through some simple canned situations and
*/
public class TestFlowConfigManager {

  /**
   * Create simple non translating FlowConfigManager
   */
  FlowConfigManager createSimple() {
    return new FlowConfigManager(new ConfigManager()) {
      @Override
      public ConfigurationManager createConfigMan() {
        return new ConfigManager();
      }
    };
  }

  @Test
  public void testFlowIsolation() throws IOException, FlumeSpecException {
    FlowConfigManager fcm = createSimple();

    fcm.setConfig("node1", "flow1", "null", "null");
    fcm.setConfig("node21", "flow2", "null", "null");
    fcm.setConfig("node22", "flow2", "null", "null");
    fcm.setConfig("node31", "flow3", "null", "null");
    fcm.setConfig("node32", "flow3", "null", "null");
    fcm.setConfig("node33", "flow3", "null", "null");

    assertEquals(1, fcm.getConfigManForFlow("flow1").getAllConfigs().size());
    assertEquals(2, fcm.getConfigManForFlow("flow2").getAllConfigs().size());
    assertEquals(3, fcm.getConfigManForFlow("flow3").getAllConfigs().size());
    assertEquals(6, fcm.getAllConfigs().size());
    assertEquals(6, fcm.getTranslatedConfigs().size());

    assertEquals("flow1", fcm.getFlowId("node1"));
    assertEquals("flow2", fcm.getFlowId("node21"));
    assertEquals("flow2", fcm.getFlowId("node22"));
    assertEquals("flow3", fcm.getFlowId("node31"));
    assertEquals("flow3", fcm.getFlowId("node32"));
    assertEquals("flow3", fcm.getFlowId("node33"));
  }

  // bulk set
  @SuppressWarnings("serial")
  @Test
  public void testBulkSet() throws IOException {
    FlowConfigManager fcm = createSimple();

    Map<String, FlumeConfigData> configs = new HashMap<String, FlumeConfigData>() {
      {
        put("node1", new FlumeConfigData(1, "null", "null", 1, 1, "flow1"));
        put("node21", new FlumeConfigData(1, "null", "null", 1, 1, "flow2"));
        put("node22", new FlumeConfigData(1, "null", "null", 1, 1, "flow2"));
        put("node31", new FlumeConfigData(1, "null", "null", 1, 1, "flow3"));
        put("node32", new FlumeConfigData(1, "null", "null", 1, 1, "flow3"));
        put("node33", new FlumeConfigData(1, "null", "null", 1, 1, "flow3"));
      }
    };

    fcm.setBulkConfig(configs);

    assertEquals(1, fcm.getConfigManForFlow("flow1").getAllConfigs().size());
    assertEquals(2, fcm.getConfigManForFlow("flow2").getAllConfigs().size());
    assertEquals(3, fcm.getConfigManForFlow("flow3").getAllConfigs().size());
    assertEquals(6, fcm.getAllConfigs().size());
    assertEquals(6, fcm.getTranslatedConfigs().size());

    assertEquals("flow1", fcm.getFlowId("node1"));
    assertEquals("flow2", fcm.getFlowId("node21"));
    assertEquals("flow2", fcm.getFlowId("node22"));
    assertEquals("flow3", fcm.getFlowId("node31"));
    assertEquals("flow3", fcm.getFlowId("node32"));
    assertEquals("flow3", fcm.getFlowId("node33"));
  }

  @Test
  public void testFlowMove() throws IOException, FlumeSpecException {
    FlowConfigManager fcm = createSimple();

    fcm.setConfig("node1", "flow1", "null", "null");
    fcm.setConfig("node2", "flow2", "null", "null");

    assertEquals(1, fcm.getConfigManForFlow("flow1").getAllConfigs().size());
    assertEquals(1, fcm.getConfigManForFlow("flow2").getAllConfigs().size());
    assertEquals(2, fcm.getAllConfigs().size());
    assertEquals(2, fcm.getTranslatedConfigs().size());

    // move a node from one flow to another.
    fcm.setConfig("node1", "flow2", "null", "null");
    assertEquals(0, fcm.getConfigManForFlow("flow1").getAllConfigs().size());
    assertEquals(2, fcm.getConfigManForFlow("flow2").getAllConfigs().size());
    assertEquals(2, fcm.getAllConfigs().size());
    assertEquals(2, fcm.getTranslatedConfigs().size());
  }

  @Test
  public void testFlowRemove() throws IOException, FlumeSpecException {
    FlowConfigManager fcm = createSimple();

    fcm.setConfig("node1", "flow1", "null", "null");
    fcm.setConfig("node2", "flow2", "null", "null");

    assertEquals(1, fcm.getConfigManForFlow("flow1").getAllConfigs().size());
    assertEquals(1, fcm.getConfigManForFlow("flow2").getAllConfigs().size());
    assertEquals(2, fcm.getAllConfigs().size());
    assertEquals(2, fcm.getTranslatedConfigs().size());

    // move a node from one flow to another.
    fcm.removeLogicalNode("node1");
    assertEquals(0, fcm.getConfigManForFlow("flow1").getAllConfigs().size());
    assertEquals(1, fcm.getConfigManForFlow("flow2").getAllConfigs().size());
    assertEquals(1, fcm.getAllConfigs().size());
    assertEquals(1, fcm.getTranslatedConfigs().size());
  }
}
TOP

Related Classes of com.cloudera.flume.master.flow.TestFlowConfigManager

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.