def test_rebuild_cache(self): """bibclassify - test rebuilding cache (takes long time)""" info = bibclassify_ontology_reader._get_ontology(self.taxonomy_name) if info[0]: cache = bibclassify_ontology_reader._get_cache_path(info[0]) if os.path.exists(cache): ctime = os.stat(cache)[stat.ST_CTIME] else: ctime = -1 rex = bibclassify_ontology_reader.get_regular_expressions(self.taxonomy_name, rebuild=True) self.assertTrue(os.path.exists(cache)) ntime = os.stat(cache)[stat.ST_CTIME] self.assertTrue((ntime > ctime)) else: raise Exception("Taxonomy wasn't found")
def test_rebuild_cache(self): """bibclassify - test rebuilding cache (takes long time)""" info = bibclassify_ontology_reader._get_ontology(self.taxonomy_name) if info[0]: cache = bibclassify_ontology_reader._get_cache_path(info[0]) if os.path.exists(cache): ctime = os.stat(cache)[stat.ST_CTIME] else: ctime = -1 rex = bibclassify_ontology_reader.get_regular_expressions( self.taxonomy_name, rebuild=True) self.assertTrue(os.path.exists(cache)) ntime = os.stat(cache)[stat.ST_CTIME] self.assertTrue((ntime > ctime)) else: raise Exception("Taxonomy wasn't found")
def test_cache_accessibility(self): """bibclassify - test cache accessibility/writability""" # we will do tests with a copy of test taxonomy, in case anything goes wrong... orig_name, orig_taxonomy_path, orig_taxonomy_url = bibclassify_ontology_reader._get_ontology( self.taxonomy_name) taxonomy_path = orig_taxonomy_path.replace('.rdf', '.copy.rdf') taxonomy_name = self.taxonomy_name + '.copy' shutil.copy(orig_taxonomy_path, taxonomy_path) assert (os.path.exists(taxonomy_path)) name, taxonomy_path, taxonomy_url = bibclassify_ontology_reader._get_ontology( taxonomy_name) cache = bibclassify_ontology_reader._get_cache_path( os.path.basename(taxonomy_path)) if not name: raise Exception("Taxonomy wasn't found") if os.path.exists(cache): os.remove(cache) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) assert (os.path.exists(cache)) log.error('Testing corrupted states, please ignore errors...') # set cache unreadable os.chmod(cache, 000) try: bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) except: pass else: raise Exception('cache chmod to 000 but no exception raised') # set cache unreadable and test writing os.chmod(cache, 000) try: bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) except: pass else: raise Exception('cache chmod to 000 but no exception raised') # set cache unreadable but don't care for it os.chmod(cache, 000) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=True) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=True) # set cache readable and test writing os.chmod(cache, 600) try: bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) except: pass else: raise Exception('cache chmod to 600 but no exception raised') # set cache writable only os.chmod(cache, 200) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) # set cache readable/writable but corrupted (must rebuild itself) os.chmod(cache, 600) os.remove(cache) open(cache, 'w').close() bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) # set cache readable/writable but corrupted (must rebuild itself) open(cache, 'w').close() try: try: os.rename(taxonomy_path, taxonomy_path + 'x') open(taxonomy_path, 'w').close() bibclassify_ontology_reader.get_regular_expressions( taxonomy_name, rebuild=False, no_cache=False) except: pass finally: os.rename(taxonomy_path + 'x', taxonomy_path) # make cache ok, but corrupt source bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) try: try: os.rename(taxonomy_path, taxonomy_path + 'x') open(taxonomy_path, 'w').close() time.sleep(.1) os.utime(cache, (time.time() + 100, time.time() + 100)) #touch the taxonomy to be older bibclassify_ontology_reader.get_regular_expressions( taxonomy_name, rebuild=False, no_cache=False) except: os.rename(taxonomy_path + 'x', taxonomy_path) raise Exception('Cache exists and is ok, but was ignored') finally: os.rename(taxonomy_path + 'x', taxonomy_path) # make cache ok (but old), and corrupt source bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) try: try: os.rename(taxonomy_path, taxonomy_path + 'x') open(taxonomy_path, 'w').close() bibclassify_ontology_reader.get_regular_expressions( taxonomy_name, rebuild=False, no_cache=False) except: pass finally: os.rename(taxonomy_path + 'x', taxonomy_path) log.error('...testing of corrupted states finished.') name, taxonomy_path, taxonomy_url = bibclassify_ontology_reader._get_ontology( taxonomy_name) cache = bibclassify_ontology_reader._get_cache_path(name) os.remove(taxonomy_path) os.remove(cache)
def test_cache_accessibility(self): """bibclassify - test cache accessibility/writability""" # we will do tests with a copy of test taxonomy, in case anything goes wrong... orig_name, orig_taxonomy_path, orig_taxonomy_url = bibclassify_ontology_reader._get_ontology(self.taxonomy_name) taxonomy_path = orig_taxonomy_path.replace('.rdf', '.copy.rdf') taxonomy_name = self.taxonomy_name + '.copy' shutil.copy(orig_taxonomy_path, taxonomy_path) assert(os.path.exists(taxonomy_path)) name, taxonomy_path, taxonomy_url = bibclassify_ontology_reader._get_ontology(taxonomy_name) cache = bibclassify_ontology_reader._get_cache_path(os.path.basename(taxonomy_path)) if not name: raise Exception("Taxonomy wasn't found") if os.path.exists(cache): os.remove(cache) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) assert(os.path.exists(cache)) log.error('Testing corrupted states, please ignore errors...') # set cache unreadable os.chmod(cache, 000) try: bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) except: pass else: raise Exception('cache chmod to 000 but no exception raised') # set cache unreadable and test writing os.chmod(cache, 000) try: bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) except: pass else: raise Exception('cache chmod to 000 but no exception raised') # set cache unreadable but don't care for it os.chmod(cache, 000) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=True) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=True) # set cache readable and test writing os.chmod(cache, 600) try: bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) except: pass else: raise Exception('cache chmod to 600 but no exception raised') # set cache writable only os.chmod(cache, 200) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) # set cache readable/writable but corrupted (must rebuild itself) os.chmod(cache, 600) os.remove(cache) open(cache, 'w').close() bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) # set cache readable/writable but corrupted (must rebuild itself) open(cache, 'w').close() try: try: os.rename(taxonomy_path, taxonomy_path + 'x') open(taxonomy_path, 'w').close() bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) except: pass finally: os.rename(taxonomy_path+'x', taxonomy_path) # make cache ok, but corrupt source bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) try: try: os.rename(taxonomy_path, taxonomy_path + 'x') open(taxonomy_path, 'w').close() time.sleep(.1) os.utime(cache, (time.time() + 100, time.time() + 100)) #touch the taxonomy to be older bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) except: os.rename(taxonomy_path+'x', taxonomy_path) raise Exception('Cache exists and is ok, but was ignored') finally: os.rename(taxonomy_path+'x', taxonomy_path) # make cache ok (but old), and corrupt source bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=True, no_cache=False) try: try: os.rename(taxonomy_path, taxonomy_path + 'x') open(taxonomy_path, 'w').close() bibclassify_ontology_reader.get_regular_expressions(taxonomy_name, rebuild=False, no_cache=False) except: pass finally: os.rename(taxonomy_path+'x', taxonomy_path) log.error('...testing of corrupted states finished.') name, taxonomy_path, taxonomy_url = bibclassify_ontology_reader._get_ontology(taxonomy_name) cache = bibclassify_ontology_reader._get_cache_path(name) os.remove(taxonomy_path) os.remove(cache)