CAS Unit Tests
Clover coverage report - CAS Unit Tests
Coverage timestamp: Mon Jul 4 2005 18:13:17 CDT
file stats: LOC: 270   Methods: 5
NCLOC: 193   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
TestObjectComparison.java 0% 0% 0% 0%
coverage
 1    /*
 2    * Portions of this file Copyright 1999-2005 University of Chicago
 3    * Portions of this file Copyright 1999-2005 The University of Southern California.
 4    *
 5    * This file or a portion of this file is licensed under the
 6    * terms of the Globus Toolkit Public License, found at
 7    * http://www.globus.org/toolkit/download/license.html.
 8    * If you redistribute this file, with or without
 9    * modifications, you must include this notice in the file.
 10    */
 11    package org.globus.cas.impl.databaseAccess;
 12   
 13    import junit.framework.Test;
 14    import junit.framework.TestCase;
 15    import junit.framework.TestSuite;
 16   
 17    import java.util.Vector;
 18   
 19    import org.globus.cas.types.ObjectData;
 20    import org.globus.cas.types.NamespaceData;
 21   
 22    import org.apache.commons.logging.Log;
 23    import org.apache.commons.logging.LogFactory;
 24   
 25    public class TestObjectComparison extends TestCase {
 26   
 27    static Log logger =
 28    LogFactory.getLog(TestObjectComparison.class.getName());
 29   
 30  0 public TestObjectComparison(String name){
 31  0 super(name);
 32    }
 33   
 34  0 public static Test suite() {
 35  0 return new TestSuite(TestObjectComparison.class);
 36    }
 37   
 38  0 public void testObjectComparison() throws Exception {
 39   
 40  0 WildCardComparison wildCard = new WildCardComparison();
 41  0 ExactComparison exact = new ExactComparison();
 42   
 43  0 String namespace1 = "namespace1";
 44    // Store name space data
 45  0 NamespaceData nsData = new NamespaceData();
 46  0 nsData.setNickname(namespace1);
 47  0 nsData.setBasename("basename");
 48  0 nsData.setComparisonAlg("ExactComparison");
 49  0 NamespaceDataHandler.storeObject(nsData);
 50  0 logger.debug("Store namespace went through " + nsData.toString());
 51   
 52  0 String namespace2 = "namespace2";
 53  0 nsData.setNickname(namespace2);
 54  0 nsData.setBasename("basename");
 55  0 nsData.setComparisonAlg("WildCardComparison");
 56  0 NamespaceDataHandler.storeObject(nsData);
 57  0 logger.debug("Store namespace went through " + nsData.toString());
 58   
 59    // Test wild card policy
 60    // WC Policy 1
 61  0 ObjectData wildCardPolicy = new ObjectData();
 62  0 wildCardPolicy.setObjectName("foo/*");
 63  0 wildCardPolicy.setObjectNamespace(namespace2);
 64  0 String w1 = ObjectDataHandler.storeObject(wildCardPolicy);
 65   
 66    // WC: equals
 67  0 ObjectData reqData1 = new ObjectData();
 68  0 reqData1.setObjectName("foo/*");
 69  0 reqData1.setObjectNamespace(namespace2);
 70  0 assertTrue(wildCard.objectMatches(wildCardPolicy, reqData1));
 71  0 assertTrue(wildCard.objectExists(reqData1));
 72   
 73    // WC is not equal
 74  0 reqData1.setObjectName("foo/");
 75  0 reqData1.setObjectNamespace(namespace2);
 76  0 assertTrue(!wildCard.objectMatches(wildCardPolicy, reqData1));
 77  0 assertTrue(!wildCard.objectExists(reqData1));
 78   
 79    // WC: is subset
 80  0 reqData1 = new ObjectData();
 81  0 reqData1.setObjectName("foo/ab/c");
 82  0 reqData1.setObjectNamespace(namespace2);
 83  0 assertTrue(wildCard.objectMatches(wildCardPolicy, reqData1));
 84  0 assertTrue(wildCard.objectExists(reqData1));
 85   
 86    // WC: not subset
 87  0 reqData1.setObjectName("foo/*/c");
 88  0 reqData1.setObjectNamespace(namespace2);
 89  0 assertTrue(wildCard.objectMatches(wildCardPolicy, reqData1));
 90  0 assertTrue(wildCard.objectExists(reqData1));
 91   
 92    // WC Policy 2
 93  0 ObjectData wildCardPolicy1 = new ObjectData();
 94  0 wildCardPolicy1.setObjectName("abc/abc/c");
 95  0 wildCardPolicy1.setObjectNamespace(namespace2);
 96  0 String w2 = ObjectDataHandler.storeObject(wildCardPolicy1);
 97   
 98  0 ObjectDataHandler.deleteObjectForId(w1);
 99   
 100    // WC: Matches is false, exists is true.
 101  0 reqData1 = new ObjectData();
 102  0 reqData1.setObjectName("abc/abc/*");
 103  0 reqData1.setObjectNamespace(namespace2);
 104  0 assertTrue(!wildCard.objectMatches(wildCardPolicy1, reqData1));
 105  0 assertTrue(wildCard.objectExists(reqData1));
 106   
 107    // * in the middle does not matter.
 108  0 reqData1.setObjectName("abc/*/c");
 109  0 reqData1.setObjectNamespace(namespace2);
 110  0 assertTrue(!wildCard.objectMatches(wildCardPolicy1, reqData1));
 111  0 assertTrue(!wildCard.objectExists(reqData1));
 112   
 113    // WC Policy 3
 114  0 wildCardPolicy1.setObjectName("foo/*/c/*");
 115  0 wildCardPolicy1.setObjectNamespace(namespace2);
 116  0 String w3 = ObjectDataHandler.storeObject(wildCardPolicy1);
 117   
 118  0 reqData1.setObjectName("foo/*/c");
 119  0 reqData1.setObjectNamespace(namespace2);
 120  0 assertTrue(!wildCard.objectMatches(wildCardPolicy1, reqData1));
 121  0 assertTrue(!wildCard.objectExists(reqData1));
 122   
 123  0 ObjectData exactPolicy = new ObjectData();
 124  0 exactPolicy.setObjectName("aa*/b*/*/cc");
 125  0 exactPolicy.setObjectNamespace(namespace1);
 126  0 String w4 = ObjectDataHandler.storeObject(exactPolicy);
 127   
 128  0 ObjectData reqData3 = new ObjectData();
 129  0 reqData3.setObjectName("a*/b*/*/cc");
 130  0 reqData3.setObjectNamespace(namespace1);
 131  0 assertTrue(!exact.objectMatches(exactPolicy, reqData3));
 132  0 assertTrue(!wildCard.objectExists(reqData3));
 133   
 134  0 reqData3.setObjectName("aa*/b*/*/cc");
 135  0 reqData3.setObjectNamespace(namespace1);
 136  0 assertTrue(exact.objectMatches(exactPolicy, reqData3));
 137  0 assertTrue(wildCard.objectExists(reqData3));
 138   
 139  0 ObjectDataHandler.deleteObjectForId(w2);
 140  0 ObjectDataHandler.deleteObjectForId(w3);
 141  0 ObjectDataHandler.deleteObjectForId(w4);
 142  0 NamespaceDataHandler.deleteObject(namespace1);
 143  0 NamespaceDataHandler.deleteObject(namespace2);
 144    }
 145   
 146  0 public void testMatchingSets() throws Exception {
 147   
 148  0 WildCardComparison wildCard = new WildCardComparison();
 149   
 150  0 String namespace = "matchNS1";
 151    // Store name space data
 152  0 NamespaceData nsData = new NamespaceData();
 153  0 nsData.setNickname(namespace);
 154  0 nsData.setBasename("basename");
 155  0 nsData.setComparisonAlg("ExactComparison");
 156  0 NamespaceDataHandler.storeObject(nsData);
 157   
 158  0 String namespace2 = "matchNS2";
 159  0 nsData.setNickname(namespace2);
 160  0 nsData.setBasename("basename");
 161  0 nsData.setComparisonAlg("WildCardComparison");
 162  0 NamespaceDataHandler.storeObject(nsData);
 163   
 164  0 ObjectData wildCardPolicy1 = new ObjectData();
 165  0 wildCardPolicy1.setObjectName("foo/*");
 166  0 wildCardPolicy1.setObjectNamespace(namespace2);
 167   
 168  0 ObjectData wildCardPolicy2 = new ObjectData();
 169  0 wildCardPolicy2.setObjectName("foo/bar/*");
 170  0 wildCardPolicy2.setObjectNamespace(namespace2);
 171   
 172  0 ObjectData wildCardPolicy3 = new ObjectData();
 173  0 wildCardPolicy3.setObjectName("foo/bar/d1");
 174  0 wildCardPolicy3.setObjectNamespace(namespace2);
 175   
 176  0 ObjectData wildCardPolicy4 = new ObjectData();
 177  0 wildCardPolicy4.setObjectNamespace(namespace2);
 178  0 wildCardPolicy4.setObjectName("foo/bar/d2");
 179   
 180  0 ObjectData wildCardPolicy5 = new ObjectData();
 181  0 wildCardPolicy5.setObjectNamespace(namespace2);
 182  0 wildCardPolicy5.setObjectName("foo/bar/d2/*");
 183   
 184  0 ObjectData wildCardPolicy6 = new ObjectData();
 185  0 wildCardPolicy6.setObjectNamespace(namespace2);
 186  0 wildCardPolicy6.setObjectName("foo/bar/d3");
 187   
 188  0 ObjectData wildCardPolicy7 = new ObjectData();
 189  0 wildCardPolicy7.setObjectNamespace(namespace2);
 190  0 wildCardPolicy7.setObjectName("foo");
 191   
 192  0 ObjectData wildCardPolicy8 = new ObjectData();
 193  0 wildCardPolicy8.setObjectNamespace(namespace2);
 194  0 wildCardPolicy8.setObjectName("bar");
 195   
 196  0 Vector dbObjects = new Vector(8);
 197  0 dbObjects.add(wildCardPolicy1);
 198  0 dbObjects.add(wildCardPolicy2);
 199  0 dbObjects.add(wildCardPolicy3);
 200  0 dbObjects.add(wildCardPolicy4);
 201  0 dbObjects.add(wildCardPolicy5);
 202  0 dbObjects.add(wildCardPolicy6);
 203  0 dbObjects.add(wildCardPolicy7);
 204  0 dbObjects.add(wildCardPolicy8);
 205   
 206    // Subset
 207    // Check for foo/bar/*
 208  0 ObjectData wildCardPolicy = new ObjectData();
 209  0 wildCardPolicy.setObjectNamespace(namespace2);
 210  0 wildCardPolicy.setObjectName("foo/bar/*");
 211  0 ObjectData[] objData = wildCard.matchForSubset(dbObjects,
 212    wildCardPolicy);
 213  0 assertTrue(objData != null);
 214  0 assertTrue(objData.length == 4);
 215  0 String[] validStrings = {"foo/bar/d1","foo/bar/d2", "foo/bar/d2/*",
 216    "foo/bar/d3"};
 217  0 assertTrue(verifySet(objData, validStrings));
 218   
 219    // chekc for foo/bar/
 220  0 wildCardPolicy.setObjectName("foo/bar");
 221  0 objData = wildCard.matchForSubset(dbObjects, wildCardPolicy);
 222  0 assertTrue(objData == null);
 223   
 224    // chekc for foo/bar/d3
 225  0 wildCardPolicy.setObjectName("foo/bar/d2/*");
 226  0 objData = wildCard.matchForSubset(dbObjects, wildCardPolicy);
 227  0 assertTrue(objData == null);
 228   
 229    // check for foo/*
 230  0 wildCardPolicy.setObjectName("foo/*");
 231  0 objData = wildCard.matchForSubset(dbObjects, wildCardPolicy);
 232  0 assertTrue(objData != null);
 233  0 String[] validString = {"foo/bar/d1","foo/bar/d2", "foo/bar/d2/*",
 234    "foo/bar/d3", "foo/bar/*" };
 235  0 assertTrue(verifySet(objData, validString));
 236   
 237    // Superset
 238    // Check for foo/bar/*
 239  0 wildCardPolicy.setObjectName("foo/bar/*");
 240  0 ObjectData[] objData1 = wildCard.matchForSuperset(dbObjects,
 241    wildCardPolicy);
 242  0 assertTrue(objData1 != null);
 243  0 assertTrue(objData1.length == 1);
 244  0 String[] validStr = {"foo/*"};
 245  0 assertTrue(verifySet(objData1, validStr));
 246   
 247  0 NamespaceDataHandler.deleteObject(namespace);
 248  0 NamespaceDataHandler.deleteObject(namespace2);
 249   
 250    }
 251   
 252  0 private boolean verifySet(ObjectData[] objData,
 253    String[] validString)
 254    throws Exception {
 255  0 for (int i=0; i<objData.length; i++) {
 256  0 String objName = objData[i].getObjectName();
 257  0 int j=0;
 258  0 while (j <validString.length) {
 259  0 if (objName.equals(validString[j])) {
 260  0 logger.debug(objName + " " + validString[j]);
 261  0 break;
 262    }
 263  0 j++;
 264    }
 265  0 if (j == validString.length)
 266  0 return false;
 267    }
 268  0 return true;
 269    }
 270    }