当前位置: 首页>>代码示例>>Java>>正文


Java ExternalView.setState方法代码示例

本文整理汇总了Java中org.apache.helix.model.ExternalView.setState方法的典型用法代码示例。如果您正苦于以下问题:Java ExternalView.setState方法的具体用法?Java ExternalView.setState怎么用?Java ExternalView.setState使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.helix.model.ExternalView的用法示例。


在下文中一共展示了ExternalView.setState方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: createExternalView

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
private ExternalView createExternalView(String tableName, int segmentCount, int replicationFactor,
    int instanceCount) {
  ExternalView externalView = new ExternalView(tableName);

  String[] instanceNames = new String[instanceCount];
  for (int i = 0; i < instanceCount; i++) {
    instanceNames[i] = buildInstanceName(i);
  }

  int assignmentCount = 0;
  for (int i = 0; i < segmentCount; i++) {
    String segmentName = tableName + "_" + i;
    for (int j = 0; j < replicationFactor; j++) {
      externalView.setState(segmentName, instanceNames[assignmentCount % instanceCount], "ONLINE");
      ++assignmentCount;
    }
  }

  return externalView;
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:21,代码来源:LargeClusterRoutingTableBuilderTest.java

示例2: isRandom

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void isRandom() {
  // Build dummy external view
  BalancedRandomRoutingTableBuilder routingTableBuilder = new BalancedRandomRoutingTableBuilder();
  List<InstanceConfig> instanceConfigList = new ArrayList<>();
  ExternalView externalView = new ExternalView("dummy");
  externalView.setState("segment_1", "Server_1.2.3.4_1234", "ONLINE");
  externalView.setState("segment_1", "Server_1.2.3.5_2345", "ONLINE");
  externalView.setState("segment_1", "Server_1.2.3.6_3456", "ONLINE");
  externalView.setState("segment_2", "Server_1.2.3.4_1234", "ONLINE");
  externalView.setState("segment_2", "Server_1.2.3.5_2345", "ONLINE");
  externalView.setState("segment_2", "Server_1.2.3.6_3456", "ONLINE");
  externalView.setState("segment_3", "Server_1.2.3.4_1234", "ONLINE");
  externalView.setState("segment_3", "Server_1.2.3.5_2345", "ONLINE");
  externalView.setState("segment_3", "Server_1.2.3.6_3456", "ONLINE");

  // Build routing table
  List<ServerToSegmentSetMap> routingTable =
      routingTableBuilder.computeRoutingTableFromExternalView("dummy", externalView, instanceConfigList);

  // Check that at least two routing tables are different
  Iterator<ServerToSegmentSetMap> routingTableIterator = routingTable.iterator();
  ServerToSegmentSetMap previous = routingTableIterator.next();
  while (routingTableIterator.hasNext()) {
    ServerToSegmentSetMap current = routingTableIterator.next();
    System.out.println("current = " + current);
    System.out.println("previous = " + previous);
    if (!current.equals(previous)) {
      // Routing tables differ, test is successful
      return;
    }
  }

  Assert.fail("All routing tables are equal!");
}
 
开发者ID:Hanmourang,项目名称:Pinot,代码行数:36,代码来源:BalancedRandomRoutingTableBuilderTest.java

示例3: constructExternalView

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
private ExternalView constructExternalView(String tableName) {
  ExternalView externalView = new ExternalView(tableName);
  List<OfflineSegmentZKMetadata> offlineResourceZKMetadataListForResource =
      ZKMetadataProvider.getOfflineSegmentZKMetadataListForTable(_propertyStore, tableName);
  for (OfflineSegmentZKMetadata segmentMetadata : offlineResourceZKMetadataListForResource) {
    externalView.setState(segmentMetadata.getSegmentName(), "localhost", "ONLINE");
  }
  return externalView;
}
 
开发者ID:Hanmourang,项目名称:Pinot,代码行数:10,代码来源:TimeBoundaryServiceTest.java

示例4: testHelixExternalViewBasedRoutingTable

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void testHelixExternalViewBasedRoutingTable() {
  RoutingTableBuilder routingStrategy = new RandomRoutingTableBuilder(100);
  HelixExternalViewBasedRouting routingTable = new HelixExternalViewBasedRouting(routingStrategy, null, null, null);
  ExternalView externalView = new ExternalView("testResource0_OFFLINE");
  externalView.setState("segment0", "dataServer_instance_0", "ONLINE");
  externalView.setState("segment0", "dataServer_instance_1", "ONLINE");
  externalView.setState("segment1", "dataServer_instance_1", "ONLINE");
  externalView.setState("segment1", "dataServer_instance_2", "ONLINE");
  externalView.setState("segment2", "dataServer_instance_2", "ONLINE");
  externalView.setState("segment2", "dataServer_instance_0", "ONLINE");
  routingTable.markDataResourceOnline("testResource0_OFFLINE", externalView, new ArrayList<InstanceConfig>());
  ExternalView externalView1 = new ExternalView("testResource1_OFFLINE");
  externalView1.setState("segment10", "dataServer_instance_0", "ONLINE");
  externalView1.setState("segment11", "dataServer_instance_1", "ONLINE");
  externalView1.setState("segment12", "dataServer_instance_2", "ONLINE");
  routingTable.markDataResourceOnline("testResource1_OFFLINE", externalView1, new ArrayList<InstanceConfig>());
  ExternalView externalView2 = new ExternalView("testResource2_OFFLINE");
  externalView2.setState("segment20", "dataServer_instance_0", "ONLINE");
  externalView2.setState("segment21", "dataServer_instance_0", "ONLINE");
  externalView2.setState("segment22", "dataServer_instance_0", "ONLINE");
  externalView2.setState("segment20", "dataServer_instance_1", "ONLINE");
  externalView2.setState("segment21", "dataServer_instance_1", "ONLINE");
  externalView2.setState("segment22", "dataServer_instance_1", "ONLINE");
  externalView2.setState("segment20", "dataServer_instance_2", "ONLINE");
  externalView2.setState("segment21", "dataServer_instance_2", "ONLINE");
  externalView2.setState("segment22", "dataServer_instance_2", "ONLINE");
  routingTable.markDataResourceOnline("testResource2_OFFLINE", externalView2, new ArrayList<InstanceConfig>());

  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource0_OFFLINE", "[segment0, segment1, segment2]", 3);
  }
  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource1_OFFLINE", "[segment10, segment11, segment12]", 3);
  }
  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource2_OFFLINE", "[segment20, segment21, segment22]", 3);
  }
}
 
开发者ID:Hanmourang,项目名称:Pinot,代码行数:40,代码来源:RoutingTableTest.java

示例5: buildExternalView

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
private ExternalView buildExternalView(String tableName, FakePropertyStore propertyStore,
    Map<Integer, List<String>> partitionToServerMapping, List<String> segmentList) throws Exception {

  // Create External View
  ExternalView externalView = new ExternalView(tableName);
  for (String segmentName: segmentList) {
    LLCSegmentName llcSegmentName = new LLCSegmentName(segmentName);
    int partitionId = llcSegmentName.getPartitionId();
    for (String server: partitionToServerMapping.get(partitionId)) {
      externalView.setState(segmentName, server, "ONLINE");
    }
  }
  return externalView;
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:15,代码来源:PartitionAwareRealtimeRoutingTableBuilderTest.java

示例6: isRandom

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void isRandom() {
  // Build dummy external view
  BalancedRandomRoutingTableBuilder routingTableBuilder = new BalancedRandomRoutingTableBuilder();
  List<InstanceConfig> instanceConfigList = new ArrayList<>();
  ExternalView externalView = new ExternalView("dummy");
  externalView.setState("segment_1", "Server_1.2.3.4_1234", "ONLINE");
  externalView.setState("segment_1", "Server_1.2.3.5_2345", "ONLINE");
  externalView.setState("segment_1", "Server_1.2.3.6_3456", "ONLINE");
  externalView.setState("segment_2", "Server_1.2.3.4_1234", "ONLINE");
  externalView.setState("segment_2", "Server_1.2.3.5_2345", "ONLINE");
  externalView.setState("segment_2", "Server_1.2.3.6_3456", "ONLINE");
  externalView.setState("segment_3", "Server_1.2.3.4_1234", "ONLINE");
  externalView.setState("segment_3", "Server_1.2.3.5_2345", "ONLINE");
  externalView.setState("segment_3", "Server_1.2.3.6_3456", "ONLINE");

  // Create configs for above instances.
  instanceConfigList.add(new InstanceConfig("Server_1.2.3.4_1234"));
  instanceConfigList.add(new InstanceConfig("Server_1.2.3.5_2345"));
  instanceConfigList.add(new InstanceConfig("Server_1.2.3.6_3456"));

  // Build routing table

  routingTableBuilder.computeRoutingTableFromExternalView("dummy", externalView, instanceConfigList);

  List<Map<String, List<String>>> routingTables = routingTableBuilder.getRoutingTables();
  // Check that at least two routing tables are different
  Iterator<Map<String, List<String>>> routingTableIterator = routingTables.iterator();
  Map<String, List<String>> previous = routingTableIterator.next();
  while (routingTableIterator.hasNext()) {
    Map<String, List<String>> current = routingTableIterator.next();
    if (!current.equals(previous)) {
      return;
    }
  }

  Assert.fail("All routing tables are equal!");
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:39,代码来源:BalancedRandomRoutingTableBuilderTest.java

示例7: buildExternalView

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
private ExternalView buildExternalView(String tableName, FakePropertyStore propertyStore,
    Map<Integer, List<String>> replicaGroupServers) throws Exception {

  // Create External View
  ExternalView externalView = new ExternalView(tableName);
  for (int i = 0; i < NUM_SEGMENTS; i++) {
    String segmentName = "segment" + i;
    int serverIndex = i % (NUM_SERVERS / NUM_REPLICA);
    for (List<String> serversInReplicaGroup: replicaGroupServers.values()) {
      externalView.setState(segmentName, serversInReplicaGroup.get(serverIndex), "ONLINE");
    }
  }
  return externalView;
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:15,代码来源:PartitionAwareOfflineRoutingTableBuilderTest.java

示例8: testKafkaHighLevelConsumerBasedRoutingTable

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void testKafkaHighLevelConsumerBasedRoutingTable() {
  RoutingTableBuilder routingStrategy = new KafkaHighLevelConsumerBasedRoutingTableBuilder();

  HelixExternalViewBasedRouting routingTable = new HelixExternalViewBasedRouting(null, routingStrategy, null, null);
  ExternalView externalView = new ExternalView("testResource0_REALTIME");
  externalView.setState(SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "0", "0", "0"),
      "dataServer_instance_0", "ONLINE");
  externalView.setState(SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "0", "1", "1"),
      "dataServer_instance_1", "ONLINE");
  externalView.setState(SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "1", "0", "2"),
      "dataServer_instance_2", "ONLINE");
  externalView.setState(SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "1", "1", "3"),
      "dataServer_instance_3", "ONLINE");
  externalView.setState(SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "2", "0", "4"),
      "dataServer_instance_4", "ONLINE");
  externalView.setState(SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "2", "1", "5"),
      "dataServer_instance_5", "ONLINE");
  routingTable.markDataResourceOnline("testResource0_REALTIME", externalView, new ArrayList<InstanceConfig>());
  ExternalView externalView1 = new ExternalView("testResource1_REALTIME");
  externalView1.setState(SegmentNameBuilder.Realtime.build("testResource1_REALTIME", "instance", "0", "0", "10"),
      "dataServer_instance_10", "ONLINE");
  externalView1.setState(SegmentNameBuilder.Realtime.build("testResource1_REALTIME", "instance", "0", "1", "11"),
      "dataServer_instance_11", "ONLINE");
  externalView1.setState(SegmentNameBuilder.Realtime.build("testResource1_REALTIME", "instance", "0", "2", "12"),
      "dataServer_instance_12", "ONLINE");
  routingTable.markDataResourceOnline("testResource1_REALTIME", externalView1, new ArrayList<InstanceConfig>());
  ExternalView externalView2 = new ExternalView("testResource2_REALTIME");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "0", "0", "20"),
      "dataServer_instance_20", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "0", "1", "21"),
      "dataServer_instance_21", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "0", "2", "22"),
      "dataServer_instance_22", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "1", "0", "23"),
      "dataServer_instance_23", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "1", "1", "24"),
      "dataServer_instance_24", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "1", "2", "25"),
      "dataServer_instance_25", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "2", "0", "26"),
      "dataServer_instance_26", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "2", "1", "27"),
      "dataServer_instance_27", "ONLINE");
  externalView2.setState(SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "2", "2", "28"),
      "dataServer_instance_28", "ONLINE");
  routingTable.markDataResourceOnline("testResource2_REALTIME", externalView2, new ArrayList<InstanceConfig>());

  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(
        routingTable,
        "testResource0_REALTIME",
        new String[] { "[" + SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "0", "0", "0")
            + ", " + SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "0", "1", "1") + "]", "["
            + SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "1", "0", "2")
            + ", "
            + SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "1", "1", "3") + "]", "["
            + SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "2", "0", "4") + ", "
            + SegmentNameBuilder.Realtime.build("testResource0_REALTIME", "instance", "2", "1", "5") + "]" }, 2);
  }
  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource1_REALTIME",
        new String[] { "[" + SegmentNameBuilder.Realtime.build("testResource1_REALTIME", "instance", "0", "0", "10")
            + ", " + SegmentNameBuilder.Realtime.build("testResource1_REALTIME", "instance", "0", "1", "11") + ", "
            + SegmentNameBuilder.Realtime.build("testResource1_REALTIME", "instance", "0", "2", "12") + "]" }, 3);
  }
  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource2_REALTIME",
        new String[] { "[" + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "0", "0", "20")
            + ", " + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "0", "1", "21") + ", "
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "0", "2", "22") + "]", "["
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "1", "0", "23") + ", "
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "1", "1", "24") + ", "
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "1", "2", "25") + "]", "["
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "2", "0", "26") + ", "
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "2", "1", "27") + ", "
            + SegmentNameBuilder.Realtime.build("testResource2_REALTIME", "instance", "2", "2", "28") + "]" }, 3);
  }
}
 
开发者ID:Hanmourang,项目名称:Pinot,代码行数:80,代码来源:RoutingTableTest.java

示例9: offlineBasicTest

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void offlineBasicTest() throws Exception {
  final String tableName = "myTable_OFFLINE";
  List<String> allTableNames = new ArrayList<String>();
  allTableNames.add(tableName);
  IdealState idealState = new IdealState(tableName);
  idealState.setPartitionState("myTable_0", "pinot1", "ONLINE");
  idealState.setPartitionState("myTable_0", "pinot2", "ONLINE");
  idealState.setPartitionState("myTable_0", "pinot3", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot1", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot2", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot3", "ONLINE");
  idealState.setPartitionState("myTable_2", "pinot3", "OFFLINE");
  idealState.setReplicas("2");
  idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);

  ExternalView externalView = new ExternalView(tableName);
  externalView.setState("myTable_0","pinot1","ONLINE");
  externalView.setState("myTable_0","pinot2","ONLINE");
  externalView.setState("myTable_1","pinot1","ERROR");
  externalView.setState("myTable_1","pinot2","ONLINE");

  HelixAdmin helixAdmin;
  {
    helixAdmin = mock(HelixAdmin.class);
    when(helixAdmin.getResourceIdealState("StatusChecker",tableName)).thenReturn(idealState);
    when(helixAdmin.getResourceExternalView("StatusChecker",tableName)).thenReturn(externalView);
  }
  {
    helixResourceManager = mock(PinotHelixResourceManager.class);
    when(helixResourceManager.isLeader()).thenReturn(true);
    when(helixResourceManager.getAllTables()).thenReturn(allTableNames);
    when(helixResourceManager.getHelixClusterName()).thenReturn("StatusChecker");
    when(helixResourceManager.getHelixAdmin()).thenReturn(helixAdmin);
  }
  {
    config = mock(ControllerConf.class);
    when(config.getStatusCheckerFrequencyInSeconds()).thenReturn(300);
    when(config.getStatusCheckerWaitForPushTimeInSeconds()).thenReturn(300);
  }
  metricsRegistry = new MetricsRegistry();
  controllerMetrics = new ControllerMetrics(metricsRegistry);
  segmentStatusChecker = new SegmentStatusChecker(helixResourceManager, config);
  segmentStatusChecker.setMetricsRegistry(controllerMetrics);
  segmentStatusChecker.runSegmentMetrics();
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.SEGMENTS_IN_ERROR_STATE), 1);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.NUMBER_OF_REPLICAS), 1);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_OF_REPLICAS), 33);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_SEGMENTS_AVAILABLE), 100);
  segmentStatusChecker.stop();
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:56,代码来源:SegmentStatusCheckerTest.java

示例10: realtimeBasicTest

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void realtimeBasicTest() throws Exception {
  final String tableName = "myTable_REALTIME";
  final String rawTableName = TableNameBuilder.extractRawTableName(tableName);
  List<String> allTableNames = new ArrayList<String>();
  allTableNames.add(tableName);
  final LLCSegmentName seg1 = new LLCSegmentName(rawTableName, 1, 0, System.currentTimeMillis());
  final LLCSegmentName seg2 = new LLCSegmentName(rawTableName, 1, 1, System.currentTimeMillis());
  final LLCSegmentName seg3 = new LLCSegmentName(rawTableName, 2, 1, System.currentTimeMillis());
  IdealState idealState = new IdealState(tableName);
  idealState.setPartitionState(seg1.getSegmentName(), "pinot1", "ONLINE");
  idealState.setPartitionState(seg1.getSegmentName(), "pinot2", "ONLINE");
  idealState.setPartitionState(seg1.getSegmentName(), "pinot3", "ONLINE");
  idealState.setPartitionState(seg2.getSegmentName(), "pinot1", "ONLINE");
  idealState.setPartitionState(seg2.getSegmentName(), "pinot2", "ONLINE");
  idealState.setPartitionState(seg2.getSegmentName(), "pinot3", "ONLINE");
  idealState.setPartitionState(seg3.getSegmentName(), "pinot1", "CONSUMING");
  idealState.setPartitionState(seg3.getSegmentName(), "pinot2", "CONSUMING");
  idealState.setPartitionState(seg3.getSegmentName(), "pinot3", "OFFLINE");
  idealState.setReplicas("3");
  idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);

  ExternalView externalView = new ExternalView(tableName);
  externalView.setState(seg1.getSegmentName(),"pinot1","ONLINE");
  externalView.setState(seg1.getSegmentName(), "pinot2","ONLINE");
  externalView.setState(seg1.getSegmentName(),"pinot3","ONLINE");
  externalView.setState(seg2.getSegmentName(),"pinot1","CONSUMING");
  externalView.setState(seg2.getSegmentName(),"pinot2","ONLINE");
  externalView.setState(seg2.getSegmentName(),"pinot3","CONSUMING");
  externalView.setState(seg3.getSegmentName(),"pinot1","CONSUMING");
  externalView.setState(seg3.getSegmentName(),"pinot2","CONSUMING");
  externalView.setState(seg3.getSegmentName(),"pinot3","OFFLINE");

  HelixAdmin helixAdmin;
  {
    helixAdmin = mock(HelixAdmin.class);
    when(helixAdmin.getResourceIdealState("StatusChecker",tableName)).thenReturn(idealState);
    when(helixAdmin.getResourceExternalView("StatusChecker",tableName)).thenReturn(externalView);
  }
  {
    helixResourceManager = mock(PinotHelixResourceManager.class);
    when(helixResourceManager.isLeader()).thenReturn(true);
    when(helixResourceManager.getAllTables()).thenReturn(allTableNames);
    when(helixResourceManager.getHelixClusterName()).thenReturn("StatusChecker");
    when(helixResourceManager.getHelixAdmin()).thenReturn(helixAdmin);
  }
  {
    config = mock(ControllerConf.class);
    when(config.getStatusCheckerFrequencyInSeconds()).thenReturn(300);
    when(config.getStatusCheckerWaitForPushTimeInSeconds()).thenReturn(300);
  }
  metricsRegistry = new MetricsRegistry();
  controllerMetrics = new ControllerMetrics(metricsRegistry);
  segmentStatusChecker = new SegmentStatusChecker(helixResourceManager, config);
  segmentStatusChecker.setMetricsRegistry(controllerMetrics);
  segmentStatusChecker.runSegmentMetrics();
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.SEGMENTS_IN_ERROR_STATE), 0);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.NUMBER_OF_REPLICAS), 3);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_OF_REPLICAS), 100);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_SEGMENTS_AVAILABLE), 100);
  segmentStatusChecker.stop();
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:67,代码来源:SegmentStatusCheckerTest.java

示例11: missingEVPartitionTest

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void missingEVPartitionTest() throws Exception {
  final String tableName = "myTable_OFFLINE";
  List<String> allTableNames = new ArrayList<String>();
  allTableNames.add(tableName);
  IdealState idealState = new IdealState(tableName);
  idealState.setPartitionState("myTable_0", "pinot1", "ONLINE");
  idealState.setPartitionState("myTable_0", "pinot2", "ONLINE");
  idealState.setPartitionState("myTable_0", "pinot3", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot1", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot2", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot3", "ONLINE");
  idealState.setPartitionState("myTable_2", "pinot3", "OFFLINE");
  idealState.setPartitionState("myTable_3", "pinot3", "ONLINE");
  idealState.setReplicas("2");
  idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);

  ExternalView externalView = new ExternalView(tableName);
  externalView.setState("myTable_0","pinot1","ONLINE");
  externalView.setState("myTable_0","pinot2","ONLINE");
  externalView.setState("myTable_1","pinot1","ERROR");
  externalView.setState("myTable_1","pinot2","ONLINE");

  ZNRecord znrecord =  new ZNRecord("myTable_0");
  znrecord.setSimpleField(CommonConstants.Segment.SEGMENT_NAME,"myTable_0");
  znrecord.setSimpleField(CommonConstants.Segment.TABLE_NAME, "myTable_OFFLINE");
  znrecord.setSimpleField(CommonConstants.Segment.INDEX_VERSION, "v1");
  znrecord.setEnumField(CommonConstants.Segment.SEGMENT_TYPE, CommonConstants.Segment.SegmentType.OFFLINE);
  znrecord.setLongField(CommonConstants.Segment.START_TIME, 1000);
  znrecord.setLongField(CommonConstants.Segment.END_TIME, 2000);
  znrecord.setSimpleField(CommonConstants.Segment.TIME_UNIT, TimeUnit.HOURS.toString());
  znrecord.setLongField(CommonConstants.Segment.TOTAL_DOCS, 10000);
  znrecord.setLongField(CommonConstants.Segment.CRC, 1234);
  znrecord.setLongField(CommonConstants.Segment.CREATION_TIME, 3000);
  znrecord.setSimpleField(CommonConstants.Segment.Offline.DOWNLOAD_URL, "http://localhost:8000/myTable_0");
  znrecord.setLongField(CommonConstants.Segment.Offline.PUSH_TIME, System.currentTimeMillis());
  znrecord.setLongField(CommonConstants.Segment.Offline.REFRESH_TIME,System.currentTimeMillis());

  ZkHelixPropertyStore<ZNRecord> propertyStore;
  {
    propertyStore = (ZkHelixPropertyStore<ZNRecord>) mock(ZkHelixPropertyStore.class);
    when(propertyStore.get("/SEGMENTS/myTable_OFFLINE/myTable_3",null, AccessOption.PERSISTENT)).thenReturn(znrecord);
  }

  HelixAdmin helixAdmin;
  {
    helixAdmin = mock(HelixAdmin.class);
    when(helixAdmin.getResourceIdealState("StatusChecker",tableName)).thenReturn(idealState);
    when(helixAdmin.getResourceExternalView("StatusChecker",tableName)).thenReturn(externalView);
  }
  {
    helixResourceManager = mock(PinotHelixResourceManager.class);
    when(helixResourceManager.isLeader()).thenReturn(true);
    when(helixResourceManager.getAllTables()).thenReturn(allTableNames);
    when(helixResourceManager.getHelixClusterName()).thenReturn("StatusChecker");
    when(helixResourceManager.getHelixAdmin()).thenReturn(helixAdmin);
    when(helixResourceManager.getPropertyStore()).thenReturn(propertyStore);
  }
  {
    config = mock(ControllerConf.class);
    when(config.getStatusCheckerFrequencyInSeconds()).thenReturn(300);
    when(config.getStatusCheckerWaitForPushTimeInSeconds()).thenReturn(0);
  }
  metricsRegistry = new MetricsRegistry();
  controllerMetrics = new ControllerMetrics(metricsRegistry);
  segmentStatusChecker = new SegmentStatusChecker(helixResourceManager, config);
  segmentStatusChecker.setMetricsRegistry(controllerMetrics);
  segmentStatusChecker.runSegmentMetrics();
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.SEGMENTS_IN_ERROR_STATE), 1);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.NUMBER_OF_REPLICAS), 0);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_SEGMENTS_AVAILABLE), 75);
  segmentStatusChecker.stop();
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:77,代码来源:SegmentStatusCheckerTest.java

示例12: missingEVPartitionPushTest

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void missingEVPartitionPushTest() throws Exception {
  final String tableName = "myTable_OFFLINE";
  List<String> allTableNames = new ArrayList<String>();
  allTableNames.add(tableName);
  IdealState idealState = new IdealState(tableName);
  idealState.setPartitionState("myTable_0", "pinot1", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot1", "ONLINE");
  idealState.setPartitionState("myTable_1", "pinot2", "ONLINE");
  idealState.setReplicas("2");
  idealState.setRebalanceMode(IdealState.RebalanceMode.CUSTOMIZED);

  ExternalView externalView = new ExternalView(tableName);
  externalView.setState("myTable_1","pinot1","ONLINE");
  externalView.setState("myTable_1","pinot2","ONLINE");

  HelixAdmin helixAdmin;
  {
    helixAdmin = mock(HelixAdmin.class);
    when(helixAdmin.getResourceIdealState("StatusChecker","myTable_OFFLINE")).thenReturn(idealState);
    when(helixAdmin.getResourceExternalView("StatusChecker","myTable_OFFLINE")).thenReturn(externalView);
  }
  ZNRecord znrecord =  new ZNRecord("myTable_0");
  znrecord.setSimpleField(CommonConstants.Segment.SEGMENT_NAME,"myTable_0");
  znrecord.setSimpleField(CommonConstants.Segment.TABLE_NAME, "myTable_OFFLINE");
  znrecord.setSimpleField(CommonConstants.Segment.INDEX_VERSION, "v1");
  znrecord.setEnumField(CommonConstants.Segment.SEGMENT_TYPE, CommonConstants.Segment.SegmentType.OFFLINE);
  znrecord.setLongField(CommonConstants.Segment.START_TIME, 1000);
  znrecord.setLongField(CommonConstants.Segment.END_TIME, 2000);
  znrecord.setSimpleField(CommonConstants.Segment.TIME_UNIT, TimeUnit.HOURS.toString());
  znrecord.setLongField(CommonConstants.Segment.TOTAL_DOCS, 10000);
  znrecord.setLongField(CommonConstants.Segment.CRC, 1234);
  znrecord.setLongField(CommonConstants.Segment.CREATION_TIME, 3000);
  znrecord.setSimpleField(CommonConstants.Segment.Offline.DOWNLOAD_URL, "http://localhost:8000/myTable_0");
  znrecord.setLongField(CommonConstants.Segment.Offline.PUSH_TIME, System.currentTimeMillis());
  znrecord.setLongField(CommonConstants.Segment.Offline.REFRESH_TIME,System.currentTimeMillis());

  ZkHelixPropertyStore<ZNRecord> propertyStore;
  {
    propertyStore = (ZkHelixPropertyStore<ZNRecord>) mock(ZkHelixPropertyStore.class);
    when(propertyStore.get("/SEGMENTS/myTable_OFFLINE/myTable_0",null, AccessOption.PERSISTENT)).thenReturn(znrecord);
  }

  {
    helixResourceManager = mock(PinotHelixResourceManager.class);
    when(helixResourceManager.isLeader()).thenReturn(true);
    when(helixResourceManager.getAllTables()).thenReturn(allTableNames);
    when(helixResourceManager.getHelixClusterName()).thenReturn("StatusChecker");
    when(helixResourceManager.getHelixAdmin()).thenReturn(helixAdmin);
    when(helixResourceManager.getPropertyStore()).thenReturn(propertyStore);
  }
  {
    config = mock(ControllerConf.class);
    when(config.getStatusCheckerFrequencyInSeconds()).thenReturn(300);
    when(config.getStatusCheckerWaitForPushTimeInSeconds()).thenReturn(300);
  }
  metricsRegistry = new MetricsRegistry();
  controllerMetrics = new ControllerMetrics(metricsRegistry);
  segmentStatusChecker = new SegmentStatusChecker(helixResourceManager, config);
  segmentStatusChecker.setMetricsRegistry(controllerMetrics);
  segmentStatusChecker.runSegmentMetrics();
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.SEGMENTS_IN_ERROR_STATE), 0);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.NUMBER_OF_REPLICAS), 2);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_OF_REPLICAS), 100);
  Assert.assertEquals(controllerMetrics.getValueOfTableGauge(externalView.getId(),
      ControllerGauge.PERCENT_SEGMENTS_AVAILABLE), 100);
  segmentStatusChecker.stop();
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:72,代码来源:SegmentStatusCheckerTest.java

示例13: testHelixExternalViewBasedRoutingTable

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void testHelixExternalViewBasedRoutingTable() throws Exception {
  HelixExternalViewBasedRouting routingTable = new HelixExternalViewBasedRouting(null, null, new BaseConfiguration());

  ExternalView externalView = new ExternalView("testResource0_OFFLINE");
  externalView.setState("segment0", "dataServer_instance_0", "ONLINE");
  externalView.setState("segment0", "dataServer_instance_1", "ONLINE");
  externalView.setState("segment1", "dataServer_instance_1", "ONLINE");
  externalView.setState("segment1", "dataServer_instance_2", "ONLINE");
  externalView.setState("segment2", "dataServer_instance_2", "ONLINE");
  externalView.setState("segment2", "dataServer_instance_0", "ONLINE");
  List<InstanceConfig> instanceConfigs = generateInstanceConfigs("dataServer_instance", 0, 2);
  TableConfig testResource0Config = generateTableConfig("testResource0_OFFLINE");
  routingTable.markDataResourceOnline(testResource0Config, externalView, instanceConfigs);
  ExternalView externalView1 = new ExternalView("testResource1_OFFLINE");
  externalView1.setState("segment10", "dataServer_instance_0", "ONLINE");
  externalView1.setState("segment11", "dataServer_instance_1", "ONLINE");
  externalView1.setState("segment12", "dataServer_instance_2", "ONLINE");

  TableConfig testResource1Config = generateTableConfig("testResource1_OFFLINE");
  routingTable.markDataResourceOnline(testResource1Config, externalView1, instanceConfigs);

  ExternalView externalView2 = new ExternalView("testResource2_OFFLINE");
  externalView2.setState("segment20", "dataServer_instance_0", "ONLINE");
  externalView2.setState("segment21", "dataServer_instance_0", "ONLINE");
  externalView2.setState("segment22", "dataServer_instance_0", "ONLINE");
  externalView2.setState("segment20", "dataServer_instance_1", "ONLINE");
  externalView2.setState("segment21", "dataServer_instance_1", "ONLINE");
  externalView2.setState("segment22", "dataServer_instance_1", "ONLINE");
  externalView2.setState("segment20", "dataServer_instance_2", "ONLINE");
  externalView2.setState("segment21", "dataServer_instance_2", "ONLINE");
  externalView2.setState("segment22", "dataServer_instance_2", "ONLINE");
  TableConfig testResource2Config = generateTableConfig("testResource2_OFFLINE");

  routingTable.markDataResourceOnline(testResource2Config, externalView2, instanceConfigs);

  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource0_OFFLINE", "[segment0, segment1, segment2]", 3);
  }
  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource1_OFFLINE", "[segment10, segment11, segment12]", 3);
  }
  for (int numRun = 0; numRun < 100; ++numRun) {
    assertResourceRequest(routingTable, "testResource2_OFFLINE", "[segment20, segment21, segment22]", 3);
  }
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:47,代码来源:RoutingTableTest.java

示例14: testTimeBoundaryRegression

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void testTimeBoundaryRegression() throws Exception {
  final FakePropertyStore propertyStore = new FakePropertyStore();
  final OfflineSegmentZKMetadata offlineSegmentZKMetadata = new OfflineSegmentZKMetadata();
  offlineSegmentZKMetadata.setTimeUnit(TimeUnit.DAYS);
  offlineSegmentZKMetadata.setEndTime(1234L);

  propertyStore.setContents(ZKMetadataProvider.constructPropertyStorePathForSegment("myTable_OFFLINE",
      "someSegment_0"), offlineSegmentZKMetadata.toZNRecord());

  final ExternalView offlineExternalView = new ExternalView("myTable_OFFLINE");
  offlineExternalView.setState("someSegment_0", "Server_1.2.3.4_1234", "ONLINE");

  final MutableBoolean timeBoundaryUpdated = new MutableBoolean(false);

  HelixExternalViewBasedRouting routingTable =
      new HelixExternalViewBasedRouting(propertyStore, null, new BaseConfiguration()) {
    @Override
    protected ExternalView fetchExternalView(String table) {
      return offlineExternalView;
    }

    @Override
    protected void updateTimeBoundary(String tableName, ExternalView externalView) {
      if (tableName.equals("myTable_OFFLINE")) {
        timeBoundaryUpdated.setValue(true);
      }
    }
  };
  routingTable.setBrokerMetrics(new BrokerMetrics(new MetricsRegistry()));

  Assert.assertFalse(timeBoundaryUpdated.booleanValue());

  final ArrayList<InstanceConfig> instanceConfigList = new ArrayList<>();
  instanceConfigList.add(new InstanceConfig("Server_1.2.3.4_1234"));
  TableConfig myTableOfflineConfig = generateTableConfig("myTable_OFFLINE");
  TableConfig myTableRealtimeConfig = generateTableConfig("myTable_REALTIME");

  routingTable.markDataResourceOnline(myTableOfflineConfig, offlineExternalView, instanceConfigList);
  routingTable.markDataResourceOnline(myTableRealtimeConfig, new ExternalView("myTable_REALTIME"), new ArrayList<InstanceConfig>());

  Assert.assertTrue(timeBoundaryUpdated.booleanValue());
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:44,代码来源:RoutingTableTest.java

示例15: testMultipleConsumingSegments

import org.apache.helix.model.ExternalView; //导入方法依赖的package包/类
@Test
public void testMultipleConsumingSegments() throws Exception {
  NUM_PARTITION = 1;
  NUM_REPLICA = 1;
  NUM_SERVERS = 1;
  NUM_SEGMENTS = 10;
  int ONLINE_SEGMENTS = 8;

  // Create the fake property store
  FakePropertyStore fakePropertyStore = new FakePropertyStore();

  // Create the table config, partition mapping,
  TableConfig tableConfig = buildRealtimeTableConfig();

  Map<Integer, Integer> partitionSegmentCount = new HashMap<>();
  for (int i = 0; i < NUM_PARTITION; i++) {
    partitionSegmentCount.put(i, 0);
  }

  List<String> segmentList = updateZkMetadataAndBuildSegmentList(partitionSegmentCount, fakePropertyStore);

  // Create instance Configs
  List<InstanceConfig> instanceConfigs = new ArrayList<>();
  for (int serverId = 0; serverId <= NUM_SERVERS; serverId++) {
    String serverName = "Server_localhost_" + serverId;
    instanceConfigs.add(new InstanceConfig(serverName));
  }

  // Update replica group mapping zk metadata
  Map<Integer, List<String>> partitionToServerMapping =
      buildKafkaPartitionMapping(REALTIME_TABLE_NAME, fakePropertyStore, instanceConfigs);

  ExternalView externalView =
      buildExternalView(REALTIME_TABLE_NAME, fakePropertyStore, partitionToServerMapping, segmentList);

  LLCSegmentName consumingSegment = new LLCSegmentName(REALTIME_TABLE_NAME, 0, 9, 0);
  externalView.setState(consumingSegment.getSegmentName(), "Server_localhost_0", "CONSUMING");
  consumingSegment = new LLCSegmentName(REALTIME_TABLE_NAME, 0, 8, 0);
  externalView.setState(consumingSegment.getSegmentName(), "Server_localhost_0", "CONSUMING");

  // Create the partition aware realtime routing table builder.
  RoutingTableBuilder routingTableBuilder =
      buildPartitionAwareRealtimeRoutingTableBuilder(fakePropertyStore, tableConfig, externalView, instanceConfigs);

  // Check the query that requires to scan all segment.
  String countStarQuery = "select count(*) from myTable";
  Map<String, List<String>> routingTable =
      routingTableBuilder.getRoutingTable(buildRoutingTableLookupRequest(countStarQuery));

  // Check that all segments are covered exactly for once.
  Set<String> assignedSegments = new HashSet<>();
  for (List<String> segmentsForServer : routingTable.values()) {
    for (String segmentName: segmentsForServer) {
      Assert.assertFalse(assignedSegments.contains(segmentName));
      assignedSegments.add(segmentName);
    }
  }
  Assert.assertEquals(assignedSegments.size(), ONLINE_SEGMENTS + 1);

  // Check that only one consuming segment is assigned
  Assert.assertTrue(assignedSegments.contains(segmentList.get(ONLINE_SEGMENTS)));
  for (int i = ONLINE_SEGMENTS + 1; i < NUM_SEGMENTS; i++) {
    Assert.assertFalse(assignedSegments.contains(segmentList.get(i)));
  }
}
 
开发者ID:linkedin,项目名称:pinot,代码行数:66,代码来源:PartitionAwareRealtimeRoutingTableBuilderTest.java


注:本文中的org.apache.helix.model.ExternalView.setState方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。