From 1032fdc0a1870f78940161ca289975ed10ab00fb Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Thu, 15 Mar 2007 20:48:25 +0000
Subject: [PATCH] Add new interfaces that can be used to notify Directory Server components when an import, export, backup, or restore task is about to begin or has ended.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java
index fdf02c0..581aa4f 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestBackupAndRestore.java
@@ -30,11 +30,16 @@
 
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
+import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
+import org.opends.server.api.TestTaskListener;
 import org.opends.server.backends.task.TaskState;
+import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.*;
 import org.opends.server.TestCaseUtils;
 
+import static org.testng.Assert.*;
+
 import java.util.UUID;
 import java.io.File;
 
@@ -46,6 +51,13 @@
   @BeforeClass
   public final void setUp() throws Exception {
     TestCaseUtils.startServer();
+    TestTaskListener.registerListeners();
+  }
+
+
+  @AfterClass
+  public final void cleanUp() throws Exception {
+    TestTaskListener.deregisterListeners();
   }
 
 
@@ -229,7 +241,37 @@
   public void testBackups(Entry taskEntry, TaskState expectedState)
        throws Exception
   {
+    int backupBeginCount  = TestTaskListener.backupBeginCount.get();
+    int backupEndCount    = TestTaskListener.backupEndCount.get();
+    int restoreBeginCount = TestTaskListener.restoreBeginCount.get();
+    int restoreEndCount   = TestTaskListener.restoreEndCount.get();
+
+    ObjectClass backupClass =
+         DirectoryServer.getObjectClass("ds-task-backup", true);
+
     testTask(taskEntry, expectedState);
+    if ((expectedState == TaskState.COMPLETED_SUCCESSFULLY) ||
+        (expectedState == TaskState.COMPLETED_WITH_ERRORS))
+    {
+      if (taskEntry.hasObjectClass(backupClass))
+      {
+        // The backup task can back up multiple backends at the same time, so
+        // we the count may be incremented by more than one in those cases.
+        assertTrue(TestTaskListener.backupBeginCount.get() > backupBeginCount);
+        assertTrue(TestTaskListener.backupEndCount.get() > backupEndCount);
+        assertEquals(TestTaskListener.backupBeginCount.get(),
+                     TestTaskListener.backupEndCount.get());
+      }
+      else
+      {
+        assertEquals(TestTaskListener.restoreBeginCount.get(),
+                     (restoreBeginCount+1));
+        assertEquals(TestTaskListener.restoreEndCount.get(),
+                     (restoreEndCount+1));
+        assertEquals(TestTaskListener.restoreBeginCount.get(),
+                     TestTaskListener.restoreEndCount.get());
+      }
+    }
   }
 
 }

--
Gitblit v1.10.0