apache / helix

Mirror of Apache Helix
Apache License 2.0
461 stars 224 forks source link

fix flaky test TestTaskAssignmentCalculator.testMultipleJobAssignment #1407

Closed kaisun2000 closed 3 years ago

kaisun2000 commented 3 years ago

LOG 1555

2020-09-25T11:26:38.3127303Z [ERROR] Tests run: 1205, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 4,566.22 s <<< FAILURE! - in TestSuite 2020-09-25T11:26:38.3141328Z [ERROR] testMultipleJobAssignment(org.apache.helix.integration.task.TestTaskAssignmentCalculator) Time elapsed: 1.082 s <<< FAILURE! 2020-09-25T11:26:38.3147511Z java.lang.AssertionError: expected:<5> but was:<4> 2020-09-25T11:26:38.3159938Z at org.apache.helix.integration.task.TestTaskAssignmentCalculator.testMultipleJobAssignment(TestTaskAssignmentCalculator.java:147) 2020-09-25T11:26:38.3163867Z 2020-09-25T11:26:38.7538794Z [ERROR] Failures: 2020-09-25T11:26:38.7543668Z [ERROR] TestTaskAssignmentCalculator.testMultipleJobAssignment:147 expected:<5> but was:<4> 2020-09-25T11:26:38.7548487Z [ERROR] Tests run: 1205, Failures: 1, Errors: 0, Skipped: 1

kaisun2000 commented 3 years ago
  /**
   * This test does NOT allow multiple jobs being assigned to an instance.
   * @throws InterruptedException
   */
  @Test
  public void testMultipleJobAssignment() throws InterruptedException {
    _runCounts.clear();
    failTask = false;
    String workflowName = TestHelper.getTestMethodName();
    Workflow.Builder workflowBuilder = new Workflow.Builder(workflowName);

    for (int i = 0; i < 20; i++) {
      List<TaskConfig> taskConfigs = Lists.newArrayListWithCapacity(1);
      taskConfigs.add(new TaskConfig("TaskOne", new HashMap<>()));
      JobConfig.Builder jobBuilder = new JobConfig.Builder().setCommand("DummyCommand")
          .addTaskConfigs(taskConfigs).setJobCommandConfigMap(_jobCommandMap);
      workflowBuilder.addJob("JOB" + i, jobBuilder);
    }

    _driver.start(workflowBuilder.build());
    _driver.pollForWorkflowState(workflowName, TaskState.COMPLETED);

    Assert.assertEquals(_runCounts.size(), 5);
  }
kaisun2000 commented 3 years ago

20 job over 5 instances, but is it possible that not all instance get job assigned?

kaisun2000 commented 3 years ago

Put a delay in task run; add dependency

jiajunwang commented 3 years ago

Close test unstable tickets since we have an automatic tracking mechanism https://github.com/apache/helix/pull/1757 now for tracking the most recent test issues.