Пример #1
0
 @Test
 public void assertRemoveFailoverInfo() {
   when(jobNodeStorage.getJobNodeChildrenKeys("execution"))
       .thenReturn(Arrays.asList("0", "1", "2"));
   failoverService.removeFailoverInfo();
   verify(jobNodeStorage).getJobNodeChildrenKeys("execution");
   verify(jobNodeStorage).removeJobNodeIfExisted("execution/0/failover");
   verify(jobNodeStorage).removeJobNodeIfExisted("execution/1/failover");
   verify(jobNodeStorage).removeJobNodeIfExisted("execution/2/failover");
 }
Пример #2
0
  private List<Integer> getAllItems() {
    return Lists.transform(
        jobNodeStorage.getJobNodeChildrenKeys(ExecutionNode.ROOT),
        new Function<String, Integer>() {

          @Override
          public Integer apply(final String input) {
            return Integer.parseInt(input);
          }
        });
  }
Пример #3
0
 @Test
 public void assertFailoverIfUnnecessaryWhenItemsRootNodeIsEmpty() {
   when(jobNodeStorage.isJobNodeExisted("leader/failover/items")).thenReturn(true);
   when(jobNodeStorage.getJobNodeChildrenKeys("leader/failover/items"))
       .thenReturn(Collections.<String>emptyList());
   failoverService.failoverIfNecessary();
   verify(jobNodeStorage).isJobNodeExisted("leader/failover/items");
   verify(jobNodeStorage).getJobNodeChildrenKeys("leader/failover/items");
   verify(jobNodeStorage, times(0))
       .executeInLeader(
           eq("leader/failover/latch"), Matchers.<FailoverLeaderExecutionCallback>any());
 }
Пример #4
0
 @Test
 public void assertFailoverIfNecessary() {
   when(jobNodeStorage.isJobNodeExisted("leader/failover/items")).thenReturn(true);
   when(jobNodeStorage.getJobNodeChildrenKeys("leader/failover/items"))
       .thenReturn(Arrays.asList("0", "1", "2"));
   when(serverService.isLocalhostServerReady()).thenReturn(true);
   failoverService.failoverIfNecessary();
   verify(jobNodeStorage).isJobNodeExisted("leader/failover/items");
   verify(jobNodeStorage).getJobNodeChildrenKeys("leader/failover/items");
   verify(serverService).isLocalhostServerReady();
   verify(jobNodeStorage)
       .executeInLeader(
           eq("leader/failover/latch"), Matchers.<FailoverLeaderExecutionCallback>any());
 }
Пример #5
0
 @Test
 public void assertFailoverLeaderExecutionCallbackIfNecessary() {
   when(jobNodeStorage.isJobNodeExisted("leader/failover/items")).thenReturn(true);
   when(jobNodeStorage.getJobNodeChildrenKeys("leader/failover/items"))
       .thenReturn(Arrays.asList("0", "1", "2"));
   when(serverService.isLocalhostServerReady()).thenReturn(true);
   JobRegistry.getInstance().addJobScheduleController("testJob", jobScheduleController);
   failoverService.new FailoverLeaderExecutionCallback().execute();
   verify(jobNodeStorage).isJobNodeExisted("leader/failover/items");
   verify(jobNodeStorage, times(2)).getJobNodeChildrenKeys("leader/failover/items");
   verify(serverService).isLocalhostServerReady();
   verify(jobNodeStorage).fillEphemeralJobNode("execution/0/failover", "mockedIP");
   verify(jobNodeStorage).removeJobNodeIfExisted("leader/failover/items/0");
   verify(jobScheduleController).triggerJob();
 }
 /**
  * 获取运行在本作业服务器的失效转移序列号.
  *
  * @return 运行在本作业服务器的失效转移序列号
  */
 public List<Integer> getLocalHostFailoverItems() {
   List<String> items = jobNodeStorage.getJobNodeChildrenKeys(ExecutionNode.ROOT);
   List<Integer> result = new ArrayList<>(items.size());
   String ip = localHostService.getIp();
   for (String each : items) {
     int item = Integer.parseInt(each);
     String node = FailoverNode.getExecutionFailoverNode(item);
     if (jobNodeStorage.isJobNodeExisted(node)
         && ip.equals(jobNodeStorage.getJobNodeDataDirectly(node))) {
       result.add(item);
     }
   }
   Collections.sort(result);
   return result;
 }
Пример #7
0
 @Test
 public void assertGetLocalHostFailoverItems() {
   when(jobNodeStorage.getJobNodeChildrenKeys("execution"))
       .thenReturn(Arrays.asList("0", "1", "2"));
   when(jobNodeStorage.isJobNodeExisted("execution/0/failover")).thenReturn(true);
   when(jobNodeStorage.isJobNodeExisted("execution/1/failover")).thenReturn(true);
   when(jobNodeStorage.isJobNodeExisted("execution/2/failover")).thenReturn(false);
   when(jobNodeStorage.getJobNodeDataDirectly("execution/0/failover")).thenReturn("mockedIP");
   when(jobNodeStorage.getJobNodeDataDirectly("execution/1/failover")).thenReturn("otherIP");
   assertThat(failoverService.getLocalHostFailoverItems(), is(Collections.singletonList(0)));
   verify(jobNodeStorage).getJobNodeChildrenKeys("execution");
   verify(localHostService).getIp();
   verify(jobNodeStorage).isJobNodeExisted("execution/0/failover");
   verify(jobNodeStorage).isJobNodeExisted("execution/1/failover");
   verify(jobNodeStorage).getJobNodeDataDirectly("execution/0/failover");
   verify(jobNodeStorage).getJobNodeDataDirectly("execution/1/failover");
 }
 private boolean needFailover() {
   return jobNodeStorage.isJobNodeExisted(FailoverNode.ITEMS_ROOT)
       && !jobNodeStorage.getJobNodeChildrenKeys(FailoverNode.ITEMS_ROOT).isEmpty()
       && serverService.isServerReady();
 }
 /** 删除作业失效转移信息. */
 public void removeFailoverInfo() {
   for (String each : jobNodeStorage.getJobNodeChildrenKeys(ExecutionNode.ROOT)) {
     jobNodeStorage.removeJobNodeIfExisted(
         FailoverNode.getExecutionFailoverNode(Integer.parseInt(each)));
   }
 }