From 8aa132ac904189ec1bce2da5e5eed0c768d8e5de Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Thu, 04 Nov 2010 21:51:38 +0000
Subject: [PATCH] Fix the testPartialDateNTimeMatchingRuleUsingSearch that was too sensitive to the time the tests were running (and occasionally failing). Also tidy up the tests and schema used in the test.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/schema/TimeBasedMatchingRuleTest.java |   67 ++++++++++++++++++++++++---------
 1 files changed, 48 insertions(+), 19 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/TimeBasedMatchingRuleTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/TimeBasedMatchingRuleTest.java
index 3a12bca..64acedb 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/TimeBasedMatchingRuleTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/TimeBasedMatchingRuleTest.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
+ *      Portions Copyright 2010 ForgeRock AS.
  */
 
 
@@ -73,8 +74,12 @@
 
   private DN user5;
 
+  private DN user6;
+  private DN user7;
+  private DN user8;
 
- private final static String TIME_ATTR = "test-time-attribute";
+ private final static String TIME_ATTR = "test-time";
+ private final static String DATE_ATTR = "test-date";
 
 
   /**
@@ -96,6 +101,9 @@
     user3 = DN.decode("cn=user3,dc=example,dc=com");
     user4 = DN.decode("cn=user4,dc=example,dc=com");
     user5 = DN.decode("cn=user5,dc=example,dc=com");
+    user6 = DN.decode("cn=user6,dc=example,dc=com");
+    user7 = DN.decode("cn=user7,dc=example,dc=com");
+    user8 = DN.decode("cn=user!,dc=example,dc=com");
 
     /**
     Extend the schema and add an attribute which is baseed on
@@ -106,11 +114,14 @@
     "dn: cn=schema",
     "changetype: modify",
     "add: attributeTypes",
-    "attributeTypes: ( test-time-oid NAME 'test-time-attribute' DESC 'Test time attribute'  EQUALITY   " +
+    "attributeTypes: ( test-time-oid NAME 'test-time' DESC 'Test time attribute'  EQUALITY   " +
+    "generalizedTimeMatch ORDERING  generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE )",
+    "attributeTypes: ( test-date-oid NAME 'test-date' DESC 'Test date attribute'  EQUALITY   " +
     "generalizedTimeMatch ORDERING  generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE )",
     "-",
     "add: objectclasses",
-    "objectclasses: ( oc-oid NAME 'testOC' SUP top AUXILIARY MUST test-time-attribute)"
+    "objectclasses: ( testoc-oid NAME 'testOC' SUP top AUXILIARY MUST test-time)",
+    "objectclasses: ( testoc2-oid NAME 'testOC2' SUP top AUXILIARY MUST test-date)"
     );
     assertTrue(resultCode == 0);
   }
@@ -278,8 +289,11 @@
 
 
    /**
-   * Test to search using the partial date and time matching rule for an assertion value.
-   */
+    * Test to search using the partial date and time matching rule
+    * for an assertion value.
+    * Dates for this test are hardcoded to avoid test failures depending
+    * on when the tests are launched.
+    */
   @Test()
   public void testPartialDateNTimeMatchingRuleUsingSearch() throws Exception
   {
@@ -288,13 +302,7 @@
       populateEntries();
       InternalClientConnection conn =
            InternalClientConnection.getRootConnection();
-      //Get the current time.
-      GregorianCalendar cal =
-              new GregorianCalendar(TimeZone.getTimeZone("UTC"));
-      cal.setLenient(false);
-      int month = cal.get(Calendar.MONTH)+1; //month starts from 0 in the Calendar.
-      String assertion = cal.get(Calendar.DATE)+"D"+month+"M";
-
+      String assertion = "01D11M";
       InternalSearchOperation searchOperation =
            new InternalSearchOperation(
                 conn,
@@ -307,13 +315,13 @@
                 Integer.MAX_VALUE,
                 Integer.MAX_VALUE,
                 false,
-                LDAPFilter.decode(TIME_ATTR+":"+EXT_PARTIAL_DATE_TIME_OID+":="+assertion),
+                LDAPFilter.decode(DATE_ATTR+":"+EXT_PARTIAL_DATE_TIME_OID+":="+assertion),
                 null,null);
 
       searchOperation.run();
       assertEquals(searchOperation.getResultCode(), ResultCode.SUCCESS);
       List<SearchResultEntry> entries = searchOperation.getSearchEntries();
-      assertTrue(entries.size()==3 && dnFoundInEntryList(entries,user1,user3,user5));
+      assertTrue(entries.size()==1 && dnFoundInEntryList(entries,user6));
     }
     finally
     {
@@ -537,35 +545,56 @@
       "objectclass: testoc",
       "cn: user1",
       "sn: user1",
-      "test-time-attribute: "+ format(currentTime-4000*1000), //more than 1 hour old.
+      TIME_ATTR + ": "+ format(currentTime-4000*1000), //more than 1 hour old.
       "",
       "dn: cn=user2,dc=example,dc=com",
       "objectclass: person",
       "objectclass: testoc",
       "cn: user2",
       "sn: user2",
-      "test-time-attribute: " + format(currentTime-25*3600*1000), //more than  a day old.
+      TIME_ATTR + ": " + format(currentTime-25*3600*1000), //more than  a day old.
       "",
       "dn: cn=user3,dc=example,dc=com",
       "objectclass: person",
       "objectclass: testoc",
       "cn: user3",
       "sn: user3",
-      "test-time-attribute: " + format(currentTime+4000*1000),  //more than 1 hour in advance.
+      TIME_ATTR + ": " + format(currentTime+4000*1000),  //more than 1 hour in advance.
       "",
       "dn: cn=user4,dc=example,dc=com",
       "objectclass: person",
       "objectclass: testoc",
       "cn: user4",
       "sn: user4",
-      "test-time-attribute: " + format(currentTime+25*3600*1000),  // more than 1 day in advance
+      TIME_ATTR + ": " + format(currentTime+25*3600*1000),  // more than 1 day in advance
       "",
       "dn: cn=user5,dc=example,dc=com",
       "objectclass: person",
       "objectclass: testoc",
       "cn: user5",
       "sn: user5",
-      "test-time-attribute: " + format(currentTime) // now.
+      TIME_ATTR + ": " + format(currentTime), // now.
+      "",
+      "dn: cn=user6,dc=example,dc=com",
+      "objectclass: person",
+      "objectclass: testoc2",
+      "cn: user6",
+      "sn: user6",
+      DATE_ATTR + ": 19651101000000Z", // Nov 1st 1965
+      "",
+      "dn: cn=user7,dc=example,dc=com",
+      "objectclass: person",
+      "objectclass: testoc2",
+      "cn: user7",
+      "sn: user7",
+      DATE_ATTR + ": 20101104000000Z", // Nov 4th 2010
+      "",
+      "dn: cn=user8,dc=example,dc=com",
+      "objectclass: person",
+      "objectclass: testoc2",
+      "cn: user8",
+      "sn: user8",
+      DATE_ATTR + ": 20000101000000Z" // Jan 1st 2000
     );
   }
   }

--
Gitblit v1.10.0