Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1868

Show
Ignore:
Timestamp:
01/17/08 01:59:43
Author:
fumanchu
Message:

Half of the fix for #717 (sessions should have a len function). Not implemented yet for PG, Memcached.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/__init__.py

    r1850 r1868  
    339339        child = getattr(serving, self.__attrname__) 
    340340        return key in child 
     341     
     342    def __len__(self): 
     343        child = getattr(serving, self.__attrname__) 
     344        return len(child) 
    341345 
    342346 
  • trunk/cherrypy/lib/sessions.py

    r1840 r1868  
    263263        self.locks[self.id].release() 
    264264        self.locked = False 
     265     
     266    def __len__(self): 
     267        """Return the number of active sessions.""" 
     268        return len(self.cache) 
    265269 
    266270 
     
    372376                finally: 
    373377                    self.release_lock(path) 
     378     
     379    def __len__(self): 
     380        """Return the number of active sessions.""" 
     381        return len([fname for fname in os.listdir(self.storage_path) 
     382                    if (fname.startswith(self.SESSION_PREFIX) 
     383                        and not fname.endswith(self.LOCK_SUFFIX))]) 
    374384 
    375385 
  • trunk/cherrypy/test/test_session.py

    r1840 r1868  
    2121 
    2222def setup_server(): 
     23     
    2324    class Root: 
    2425         
     
    2930                      'tools.sessions.clean_freq': (1.0 / 60), 
    3031                      } 
     32         
     33        def clear(self): 
     34            cherrypy.session.cache.clear() 
     35        clear.exposed = True 
    3136         
    3237        def testGen(self): 
     
    9095            return "logged in" 
    9196        regen.exposed = True 
     97         
     98        def length(self): 
     99            return str(len(cherrypy.session)) 
     100        length.exposed = True 
    92101     
    93102    cherrypy.tree.mount(Root()) 
     
    106115     
    107116    def test_0_Session(self): 
     117        self.getPage('/clear') 
     118         
     119        self.getPage('/testStr') 
     120        self.assertBody('1') 
     121        self.getPage('/testGen', self.cookies) 
     122        self.assertBody('2') 
     123        self.getPage('/testStr', self.cookies) 
     124        self.assertBody('3') 
     125        self.getPage('/length', self.cookies) 
     126        self.assertBody('1') 
     127        self.getPage('/delkey?key=counter', self.cookies) 
     128        self.assertStatus(200) 
     129         
     130        self.getPage('/setsessiontype/file') 
    108131        self.getPage('/testStr') 
    109132        self.assertBody('1') 
     
    115138        self.assertStatus(200) 
    116139         
    117         self.getPage('/setsessiontype/file') 
    118         self.getPage('/testStr') 
    119         self.assertBody('1') 
    120         self.getPage('/testGen', self.cookies) 
    121         self.assertBody('2') 
    122         self.getPage('/testStr', self.cookies) 
    123         self.assertBody('3') 
    124         self.getPage('/delkey?key=counter', self.cookies) 
    125         self.assertStatus(200) 
    126          
    127140        # Wait for the session.timeout (1 second) 
    128141        time.sleep(2) 
    129142        self.getPage('/') 
    130143        self.assertBody('1') 
     144        self.getPage('/length', self.cookies) 
     145        self.assertBody('1') 
    131146         
    132147        # Test session __contains__ 
    133148        self.getPage('/keyin?key=counter', self.cookies) 
    134149        self.assertBody("True") 
     150        cookieset1 = self.cookies 
     151         
     152        # Make a new session and test __len__ again 
     153        self.getPage('/') 
     154        self.getPage('/length', self.cookies) 
     155        self.assertBody('2') 
    135156         
    136157        # Test session delete 
    137158        self.getPage('/delete', self.cookies) 
     159        self.assertBody("done") 
     160        self.getPage('/delete', cookieset1) 
    138161        self.assertBody("done") 
    139162        f = lambda: [x for x in os.listdir(localDir) if x.startswith('session-')] 
     
    173196            data_dict[index] = v = int(self.body) 
    174197         
    175         # Start <request_count> concurrent requests from 
    176         # each of <client_thread_count> clients 
     198        # Start <request_count> requests from each of 
     199        # <client_thread_count> concurrent clients 
    177200        ts = [] 
    178201        for c in xrange(client_thread_count): 
  • trunk/cherrypy/test/test_tutorials.py

    r1281 r1868  
    118118        self.assertBody('Hendrik Mans, CherryPy co-developer & crazy German ' 
    119119                        '(<a href="./">back</a>)') 
     120     
    120121    def test07Sessions(self): 
    121122        self.getPage("/load_tut_module/tut07_sessions") 

Hosted by WebFaction

Log in as guest/cpguest to create tickets