View Javadoc
1   /**
2    * Copyright 2014 Internet2
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  /*
17    Copyright (C) 2004-2007 University Corporation for Advanced Internet Development, Inc.
18    Copyright (C) 2004-2007 The University Of Chicago
19  
20    Licensed under the Apache License, Version 2.0 (the "License");
21    you may not use this file except in compliance with the License.
22    You may obtain a copy of the License at
23  
24      http://www.apache.org/licenses/LICENSE-2.0
25  
26    Unless required by applicable law or agreed to in writing, software
27    distributed under the License is distributed on an "AS IS" BASIS,
28    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29    See the License for the specific language governing permissions and
30    limitations under the License.
31  */
32  
33  package edu.internet2.middleware.grouper.privs;
34  import junit.textui.TestRunner;
35  import edu.internet2.middleware.grouper.GrouperNamingAdapter;
36  import edu.internet2.middleware.grouper.GrouperSession;
37  import edu.internet2.middleware.grouper.Stem;
38  import edu.internet2.middleware.grouper.StemFinder;
39  import edu.internet2.middleware.grouper.SubjectFinder;
40  import edu.internet2.middleware.grouper.cache.EhcacheController;
41  import edu.internet2.middleware.grouper.cfg.GrouperConfig;
42  import edu.internet2.middleware.grouper.exception.GrouperException;
43  import edu.internet2.middleware.grouper.helper.GrouperTest;
44  import edu.internet2.middleware.grouper.internal.util.Realize;
45  
46  
47  /**
48   * Test {@link CachingNamingResolver}.
49   * @author  blair christensen.
50   * @version $Id: Test_privs_CachingNamingResolver.java,v 1.1 2009-03-20 19:56:41 mchyzer Exp $
51   * @since   1.2.1
52   */
53  public class Test_privs_CachingNamingResolver extends GrouperTest {
54  
55    /**
56     * 
57     */
58    public Test_privs_CachingNamingResolver() {
59      
60    }
61    
62    /**
63     * 
64     * @param name
65     */
66    public Test_privs_CachingNamingResolver(String name) {
67      super(name);
68    }
69    /**
70     * 
71     * @param args
72     */
73    public static void main(String[] args) {
74      TestRunner.run(new Test_privs_CachingNamingResolver("test_hasPrivilege_cacheMiss"));
75    }
76  
77    private CachingNamingResolver resolver;
78    private Stem                  ns;
79  
80  
81  
82    public void setUp() {
83      super.setUp();
84      try {
85        this.ns = StemFinder.findRootStem(
86                   GrouperSession.start( SubjectFinder.findRootSubject() )
87                 );
88        this.resolver = new CachingNamingResolver( 
89                          new NamingWrapper( 
90                            GrouperSession.start( SubjectFinder.findRootSubject() ),
91                            (NamingAdapter) Realize.instantiate( 
92                                GrouperNamingAdapter.class.getName()
93                            )
94                          )
95                        );
96      }
97      catch (Exception e) {
98        throw new GrouperException( "error in setUp(): " + e.getMessage(), e );
99      }
100   }
101 
102   public void tearDown() {
103     super.tearDown();
104   }
105 
106 
107 
108   public void test_constructor_nullDecoratedResolver() {
109     try {
110       new CachingNamingResolver(null);
111       fail("failed to throw IllegalArgumentException");
112     }
113     catch (IllegalArgumentException eExpected) {
114       assertTrue("threw expected exception", true);
115     }
116   }
117 
118 
119 
120   /**
121    * @since   1.2.1
122    */
123   public void test_hasPrivilege_cacheMiss() {
124 
125     EhcacheController.ehcacheController().getCache(CachingNamingResolver.CACHE_HASPRIV).setStatisticsEnabled(true);
126 
127     long before = resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getMisses();
128     resolver.hasPrivilege( this.ns, SubjectFinder.findAllSubject(), NamingPrivilege.STEM );
129     assertEquals( before + 1, resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getMisses() );
130   }
131   
132   /**
133    * @since   1.2.1
134    */
135   public void test_hasPrivilege_cacheHit() {
136     EhcacheController.ehcacheController().getCache(CachingNamingResolver.CACHE_HASPRIV).setStatisticsEnabled(true);
137 
138     long before = resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getHits();
139     resolver.hasPrivilege( this.ns, SubjectFinder.findAllSubject(), NamingPrivilege.STEM );
140     assertEquals( before, resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getHits() );
141     resolver.hasPrivilege( this.ns, SubjectFinder.findAllSubject(), NamingPrivilege.STEM );
142     assertEquals( before + 1, resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getHits() );
143   }
144   /**
145    * @since   1.2.1
146    */
147   public void test_hasPrivilege_cacheSize() {
148     long size = resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getSize();
149     resolver.hasPrivilege( this.ns, SubjectFinder.findAllSubject(), NamingPrivilege.STEM );
150     assertEquals(size+ 1, resolver.getStats(CachingNamingResolver.CACHE_HASPRIV).getSize() );
151   }
152 
153 }
154