mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
09.33.2014 9e9b942291d9cc024bc693118838d9d4c73cf4db
Chasing random test.


TasksTestCase.java:
Reverted the code to not use SoftAssertions + added more info in case of failure.

TestBackupAndRestore.java:
Extracted methods backupTask() and restoreTask() to hide common data.
2 files modified
157 ■■■■■ changed files
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/tasks/TasksTestCase.java 15 ●●●● patch | view | raw | blame | history
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java 142 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/tasks/TasksTestCase.java
@@ -28,7 +28,6 @@
import java.util.Set;
import org.assertj.core.api.SoftAssertions;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.opends.server.DirectoryServerTestCase;
@@ -92,7 +91,8 @@
    }
    while (completionTime == null && timedOut);
    assertNotNull(completionTime, "The task had not completed after " + timeout + " seconds.");
    assertNotNull(completionTime, "The task had not completed after " + timeout + " seconds.\n"
        + "resultEntry=[" + resultEntry + "]");
    // Check that the task state is as expected.
    String stateString = parseAttribute(resultEntry, ATTR_TASK_STATE).asString();
@@ -102,11 +102,12 @@
    // Check that the task contains some log messages.
    Set<String> logMessages = parseAttribute(resultEntry, ATTR_TASK_LOG_MESSAGES).asSetOfString();
    final String msg = "No log messages were written to the task entry on a failed task";
    SoftAssertions softly = new SoftAssertions();
    softly.assertThat(taskState).as(msg).isNotEqualTo(TaskState.COMPLETED_SUCCESSFULLY);
    softly.assertThat(logMessages).as(msg).isNotEmpty();
    softly.assertAll();
    if (taskState != TaskState.COMPLETED_SUCCESSFULLY && logMessages.size() == 0)
    {
      fail("No log messages were written to the task entry on a failed task.\n"
          + "taskState=" + taskState
          + "logMessages size=" + logMessages.size() + " and content=[" + logMessages + "]");
    }
  }
  private AttributeParser parseAttribute(Entry resultEntry, String attrName)
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java
@@ -27,6 +27,8 @@
package org.opends.server.tasks;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.UUID;
import org.opends.server.TestCaseUtils;
@@ -72,149 +74,109 @@
    return new Object[][] {
         {
              // A valid backup task.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak",
                   "ds-task-backup-all: TRUE"
              ),
              TestCaseUtils.makeEntry(backupTask(
                  "ds-task-backup-all: TRUE")),
              TaskState.COMPLETED_SUCCESSFULLY
         },
         {
              // Incompatible settings of backup-directory-path and
              // incremental-base-id.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak",
                   "ds-task-backup-incremental: TRUE",
                   "ds-task-backup-incremental-base-id: monday",
                   "ds-task-backup-all: TRUE"),
              TestCaseUtils.makeEntry(backupTask(
                  "ds-task-backup-all: TRUE",
                  "ds-task-backup-incremental: TRUE",
                  "ds-task-backup-incremental-base-id: monday")),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Incompatible settings for backend-id and backup-all.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak",
                   "ds-task-backup-backend-id: example",
                   "ds-task-backup-all: TRUE"),
              TestCaseUtils.makeEntry(backupTask(
                  "ds-task-backup-all: TRUE",
                  "ds-task-backup-backend-id: example")),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Neither of backend-id or backup-all specified.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak"),
              TestCaseUtils.makeEntry(backupTask()),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Incompatible settings for incremental and incremental-base-id.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak",
              TestCaseUtils.makeEntry(backupTask(
                   "ds-task-backup-all: TRUE",
                   "ds-task-backup-incremental-base-id: monday",
                   "ds-task-backup-incremental: FALSE"),
                   "ds-task-backup-incremental: FALSE",
                   "ds-task-backup-incremental-base-id: monday")),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Incompatible settings for hash and sign-hash.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak",
              TestCaseUtils.makeEntry(backupTask(
                   "ds-task-backup-all: TRUE",
                   "ds-task-backup-hash: FALSE",
                   "ds-task-backup-sign-hash: TRUE"
                   ),
                   "ds-task-backup-sign-hash: TRUE")),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Specified backend does not support backup.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-backup",
                   "ds-task-class-name: org.opends.server.tasks.BackupTask",
                   "ds-backup-directory-path: bak",
                   "ds-task-backup-backend-id: monitor"),
              TestCaseUtils.makeEntry(backupTask(
                   "ds-task-backup-backend-id: monitor")),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // A valid restore task.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-restore",
                   "ds-task-class-name: org.opends.server.tasks.RestoreTask",
                   "ds-backup-directory-path: bak" + File.separator + "userRoot"
              ),
              TestCaseUtils.makeEntry(restoreTask(
                   "ds-backup-directory-path: bak" + File.separator + "userRoot")),
              TaskState.COMPLETED_SUCCESSFULLY
         },
         {
              // Non-existent restore directory-path.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-restore",
                   "ds-task-class-name: org.opends.server.tasks.RestoreTask",
              TestCaseUtils.makeEntry(restoreTask(
                   "ds-backup-directory-path: missing"
              ),
              )),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Invalid restore directory-path.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-restore",
                   "ds-task-class-name: org.opends.server.tasks.RestoreTask",
              TestCaseUtils.makeEntry(restoreTask(
                   "ds-backup-directory-path: bak"
              ),
              )),
              TaskState.STOPPED_BY_ERROR
         },
         {
              // Invalid restore backup-id.
              TestCaseUtils.makeEntry(
                   "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
                   "objectclass: top",
                   "objectclass: ds-task",
                   "objectclass: ds-task-restore",
                   "ds-task-class-name: org.opends.server.tasks.RestoreTask",
              TestCaseUtils.makeEntry(restoreTask(
                   "ds-backup-directory-path: bak" + File.separator + "userRoot",
                   "ds-backup-id: monday"
              ),
              )),
              TaskState.STOPPED_BY_ERROR
         },
    };
  }
  private String[] backupTask(String... additionalLdif)
  {
    final ArrayList<String> l = new ArrayList<String>(Arrays.asList(
        "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
        "objectclass: top",
        "objectclass: ds-task",
        "objectclass: ds-task-backup",
        "ds-task-class-name: org.opends.server.tasks.BackupTask",
        "ds-backup-directory-path: bak"));
    l.addAll(Arrays.asList(additionalLdif));
    return l.toArray(new String[0]);
  }
  private String[] restoreTask(String... additionalLdif)
  {
    final ArrayList<String> l = new ArrayList<String>(Arrays.asList(
        "dn: ds-task-id=" + UUID.randomUUID() + ",cn=Scheduled Tasks,cn=Tasks",
        "objectclass: top",
        "objectclass: ds-task",
        "objectclass: ds-task-restore",
        "ds-task-class-name: org.opends.server.tasks.RestoreTask"));
    l.addAll(Arrays.asList(additionalLdif));
    return l.toArray(new String[0]);
  }
  /**
   * Test that various backup and restore task definitions complete with the
   * expected state.