Changeset 4165


Ignore:
Timestamp:
03/09/08 10:22:42 (11 years ago)
Author:
cbyrom
Message:

Extend test suites for the DocumentRetrieve? and ndgRetrieve modules -
including test case support for atom/atom backup doc retrieval +
add standard config file for the test_ndgRetrieve module + add
new module, testconstants - to centralise constants for use in the
test cases - and refactor test cases to use this data + improve
logging in the DocumentRetrieve? + ndgRetrieve modules.

Location:
exist/trunk/python/ndgUtils
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • exist/trunk/python/ndgUtils/DocumentRetrieve.py

    r4160 r4165  
    11from eXistInterface import ndg_eXist 
    22from ndgXqueries import ndgXqueries 
    3 from ndgObject import ndgObject 
    43 
    54import urllib2, logging, socket 
     
    3736        self.knownQueries={'DIF':'moles2dif','DC':'moles2DC','ISO19139':'moles2iso19139', 
    3837                           'NDG-B0':'moles','NDG-B1':'molesObjectType','MDIP':'moles2mdip', 
    39                            'NDG-A0':'csml','NumSim':'numsim', 'ATOM':'atom'} 
     38                           'NDG-A0':'csml','NumSim':'numsim', 'ATOM':'atom', 'ATOM-BACKUP':'atom'} 
    4039 
    4140    def _retrieveDoc(self, schema, xqtype, targetCollection, repository, localID): 
     
    137136         
    138137    def uriget(self,uri): 
    139         n=ndgObject(uri) 
     138        # NB, having this import at the module level can cause problems 
     139        # with resolving imports when using this module - e.g. from the 
     140        # ndgObject level 
     141        import ndgObject 
     142        n=ndgObject.ndgObject(uri) 
    140143        return self.get(n.repository,n.schema,n.localID) 
    141144 
  • exist/trunk/python/ndgUtils/ndgRetrieve.py

    r4160 r4165  
    4646                logging.debug("NDG_B_SERVICE: '%s', default repository: '%s'" %(r,sr)) 
    4747            except: 
    48                 raise NDGRetrieveError("Config file not available or incomplete") 
     48                raise NDGRetrieveError("Config file not available or incomplete " + \ 
     49                    "- cannot find data for NDG_B_SERVICE, %s" %uri.repository) 
    4950             
    5051            if r <> sr: 
  • exist/trunk/python/ndgUtils/test_DocumentRetrieve.py

    r4160 r4165  
    1 import unittest 
     1""" 
     2Test cases for the DocumentRetrieve module 
     3 
     4NERC Data Grid Project 
     5""" 
     6__author__ = "C Byrom - Tessella" 
     7__date__ = "03/09/08" 
     8__copyright__ = "(C) 2008 STFC & NERC" 
     9__license__ = \ 
     10"""This software may be distributed under the terms of the Q Public  
     11License, version 1.0 or later.""" 
     12__contact__ = "b.n.lawrence@rl.ac.uk" 
     13__revision__ = '$Id: $' 
     14 
     15import logging, unittest 
    216import DocumentRetrieve 
    3 import logging 
     17import testconstants as tc 
    418 
    519logging.basicConfig(level=logging.DEBUG, 
     
    721 
    822class TestCase(unittest.TestCase):  
    9      
    10     #### Note that test_ndgRetrieve has a lot more tests on DocumentRetrieve #### 
    11     VALID_REPOSITORY = "chinook.badc.rl.ac.uk" 
    12     VALID_PROVIDER_ID = 'badc.nerc.ac.uk' 
    13     MOLES_DOC_TYPE = 'NDG-B0' 
    14     DIF_DOC_TYPE = 'DIF' 
    15     DC_DOC_TYPE = 'DC' 
    16     ISO_DOC_TYPE = 'ISO19139' 
    17     NDGB1_DOC_TYPE = 'NDG-B1' 
    18     NDGB0_DOC_TYPE = 'NDG-B0' 
    19     MDIP_DOC_TYPE = 'MDIP' 
    20     NDGA0_DOC_TYPE = 'NDG-A0' 
    21     NUMSIM_DOC_TYPE = 'NumSim' 
    22     ATOM_DOC_TYPE = 'ATOM' 
    23     VALID_MOLES_DOC_ID = 'dataent_hadisst' 
    24     VALID_NDGA_DOC_ID = 'COAPEC_500YrRun_wholerun_annual_atmos' 
    25     VALID_NUMSIM_DOC_ID = 'HadGEM1_CodeBase' 
    26     VALID_ATOM_DOC_ID = 'dataent_11679938403412067' 
    27     MOLES_COLLECTION = '/db/ndg_B_metadata' 
    28     ATOM_COLLECTION = '/db/atoms' 
    29     NUMSIM_COLLECTION = '/db/NumSim' 
    30     NDGA0_COLLECTION = '/db/ndg_A_metadata' 
    31      
    3223     
    3324    def testHTTPget(self): 
     
    3728        y=x.get(s) 
    3829        self.assertNotEquals(y.find('Google'), -1) 
     30     
     31    def testNdgHTTPUriget(self): 
     32        ''' Try a remote get with no frills''' 
     33        s='badc.nerc.ac.uk__NDG-B1__dataent_chablis' 
     34        dr = DocumentRetrieve.ndgHTTP(tc.VALID_PROVIDER_ID, \ 
     35                                       proxyServer="http://wwwcache3.rl.ac.uk:8080/") 
     36        doc = dr.uriget(s) 
     37        self.assertNotEquals(doc.find(s), -1) 
    3938         
    4039    def testVocabServer(self): 
     
    4544         
    4645    def testNdgHTTP(self): 
    47         dr = DocumentRetrieve.ndgHTTP(self.VALID_PROVIDER_ID, \ 
     46        dr = DocumentRetrieve.ndgHTTP(tc.VALID_PROVIDER_ID, \ 
    4847                                       proxyServer="http://wwwcache3.rl.ac.uk:8080/") 
    49         doc = dr.get(self.VALID_PROVIDER_ID, \ 
    50                      self.MOLES_DOC_TYPE, self.VALID_MOLES_DOC_ID) 
    51         self.assertNotEquals(doc.find(self.VALID_MOLES_DOC_ID), -1) 
     48        doc = dr.get(tc.VALID_PROVIDER_ID, \ 
     49                     tc.MOLES_DOC_TYPE, tc.VALID_MOLES_DOC_ID) 
     50        self.assertNotEquals(doc.find(tc.VALID_MOLES_DOC_ID), -1) 
    5251         
    5352    def testGetDIF(self): 
    54         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    55         doc = dr.get(self.VALID_PROVIDER_ID, self.DIF_DOC_TYPE, \ 
    56                      self.VALID_MOLES_DOC_ID, targetCollection = self.MOLES_COLLECTION) 
    57         self.assertNotEquals(doc.find(self.VALID_MOLES_DOC_ID), -1) 
     53        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     54        doc = dr.get(tc.VALID_PROVIDER_ID, tc.DIF_DOC_TYPE, \ 
     55                     tc.VALID_MOLES_DOC_ID, targetCollection = tc.MOLES_COLLECTION) 
     56        self.assertNotEquals(doc.find(tc.VALID_MOLES_DOC_ID), -1) 
    5857         
    5958    def offtestGetMDIP(self): 
    6059        # TODO: switch back on once the MDIP tranform has been fixed 
    61         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    62         doc = dr.get(self.VALID_PROVIDER_ID, self.MDIP_DOC_TYPE, \ 
    63                      self.VALID_MOLES_DOC_ID, targetCollection = self.MOLES_COLLECTION) 
    64         self.assertNotEquals(doc.find(self.VALID_MOLES_DOC_ID), -1) 
     60        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     61        doc = dr.get(tc.VALID_PROVIDER_ID, tc.MDIP_DOC_TYPE, \ 
     62                     tc.VALID_MOLES_DOC_ID, targetCollection = tc.MOLES_COLLECTION) 
     63        self.assertNotEquals(doc.find(tc.VALID_MOLES_DOC_ID), -1) 
    6564         
    6665    def testGetISO(self): 
    67         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    68         doc = dr.get(self.VALID_PROVIDER_ID, self.ISO_DOC_TYPE, \ 
    69                      self.VALID_MOLES_DOC_ID, targetCollection = self.MOLES_COLLECTION) 
    70         self.assertNotEquals(doc.find(self.VALID_MOLES_DOC_ID), -1) 
     66        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     67        doc = dr.get(tc.VALID_PROVIDER_ID, tc.ISO_DOC_TYPE, \ 
     68                     tc.VALID_MOLES_DOC_ID, targetCollection = tc.MOLES_COLLECTION) 
     69        self.assertNotEquals(doc.find(tc.VALID_MOLES_DOC_ID), -1) 
    7170                 
    7271    def testGetISO(self): 
    73         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    74         doc = dr.get(self.VALID_PROVIDER_ID, self.ISO_DOC_TYPE, \ 
    75                      self.VALID_MOLES_DOC_ID, targetCollection = self.MOLES_COLLECTION) 
    76         self.assertNotEquals(doc.find(self.VALID_MOLES_DOC_ID), -1) 
     72        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     73        doc = dr.get(tc.VALID_PROVIDER_ID, tc.ISO_DOC_TYPE, \ 
     74                     tc.VALID_MOLES_DOC_ID, targetCollection = tc.MOLES_COLLECTION) 
     75        self.assertNotEquals(doc.find(tc.VALID_MOLES_DOC_ID), -1) 
    7776                 
    7877    def testGetDC(self): 
    79         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    80         doc = dr.get(self.VALID_PROVIDER_ID, self.DC_DOC_TYPE, \ 
    81                      self.VALID_MOLES_DOC_ID, targetCollection = self.MOLES_COLLECTION) 
    82         self.assertNotEquals(doc.find(self.VALID_MOLES_DOC_ID), -1) 
     78        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     79        doc = dr.get(tc.VALID_PROVIDER_ID, tc.DC_DOC_TYPE, \ 
     80                     tc.VALID_MOLES_DOC_ID, targetCollection = tc.MOLES_COLLECTION) 
     81        self.assertNotEquals(doc.find(tc.VALID_MOLES_DOC_ID), -1) 
    8382                         
    8483    def testGetNumSim(self): 
    85         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    86         doc = dr.get(self.VALID_PROVIDER_ID, self.NUMSIM_DOC_TYPE, \ 
    87                      self.VALID_NUMSIM_DOC_ID, targetCollection = self.NUMSIM_COLLECTION) 
    88         self.assertNotEquals(doc.find(self.VALID_NUMSIM_DOC_ID), -1) 
     84        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     85        doc = dr.get(tc.VALID_PROVIDER_ID, tc.NUMSIM_DOC_TYPE, \ 
     86                     tc.VALID_NUMSIM_DOC_ID, targetCollection = tc.NUMSIM_COLLECTION) 
     87        self.assertNotEquals(doc.find(tc.VALID_NUMSIM_DOC_ID), -1) 
    8988                         
    9089    def testGetAtom(self): 
    91         dr = DocumentRetrieve.DocumentRetrieve(self.VALID_REPOSITORY) 
    92         doc = dr.get(self.VALID_PROVIDER_ID, self.ATOM_DOC_TYPE, \ 
    93                      self.VALID_ATOM_DOC_ID, targetCollection = self.ATOM_COLLECTION) 
    94         self.assertNotEquals(doc.find(self.VALID_ATOM_DOC_ID), -1) 
     90        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     91        doc = dr.get(tc.VALID_PROVIDER_ID, tc.ATOM_DOC_TYPE, \ 
     92                     tc.VALID_ATOM_DOC_ID, targetCollection = tc.ATOM_COLLECTION) 
     93        self.assertNotEquals(doc.find(tc.VALID_ATOM_DOC_ID), -1) 
     94                         
     95    def testGetAtomBackup(self): 
     96        dr = DocumentRetrieve.DocumentRetrieve(tc.VALID_REPOSITORY) 
     97        doc = dr.get(tc.VALID_PROVIDER_ID, tc.ATOM_BACKUP_DOC_TYPE, \ 
     98                     tc.VALID_ATOM_DOC_ID, targetCollection = tc.ATOM_BACKUP_COLLECTION) 
     99        self.assertNotEquals(doc.find(tc.VALID_ATOM_DOC_ID), -1) 
    95100         
  • exist/trunk/python/ndgUtils/test_ndgRetrieve.py

    r3147 r4165  
    1 import ndgObject 
     1""" 
     2Test cases for the ndgRetrieve module 
     3 
     4NERC Data Grid Project 
     5""" 
     6__author__ = "C Byrom - Tessella" 
     7__date__ = "03/09/08" 
     8__copyright__ = "(C) 2008 STFC & NERC" 
     9__license__ = \ 
     10"""This software may be distributed under the terms of the Q Public  
     11License, version 1.0 or later.""" 
     12__contact__ = "b.n.lawrence@rl.ac.uk" 
     13__revision__ = '$Id: $' 
     14 
     15from ndgObject import ndgObject 
    216from ndgRetrieve import ndgRetrieve 
    317from xmlHandler2 import xmlHandler 
    418import ConfigParser 
    5 import unittest 
     19import unittest, os 
     20import testconstants as tc 
    621 
    722class TestCase(unittest.TestCase): 
     
    1025         
    1126        f='test.config' 
     27        if not os.path.exists(f): 
     28            raise IOError("Error: config file, 'test.config' missing") 
    1229        self.c=ConfigParser.ConfigParser() 
    1330        self.c.read(f) 
    1431             
    1532    def testEXIST(self): 
    16         ''' test link to local exist via xml rpc. 
     33        ''' Test link to local exist via xml rpc. 
    1734                users will need to ensure that the document is actually  
    1835                in your exist database! ''' 
    1936        doc='badc.nerc.ac.uk__NDG-B0__activity_activity_cwvc' 
    20         doc='neodc.nerc.ac.uk__NDG-B1__dataent_11924879127625221' #NCAVEO 
    21         uri=ndgObject.ndgObject(doc) 
    22         status,xml=ndgRetrieve(uri,self.c) 
     37        #doc='neodc.nerc.ac.uk__NDG-B1__dataent_11924879127625221' #NCAVEO 
     38        uri=ndgObject(doc) 
     39        status,xml=ndgRetrieve(uri,self.c, discovery=0) 
    2340        if not status: raise ValueError(xml) 
    2441        x=xmlHandler(xml,string=1) 
    25         self.assertEqual(x.tree.tag,'dgMetadataRecord') 
     42        self.assertEqual(x.tree.tag,'{http://ndg.nerc.ac.uk/moles}dgMetadataRecord') 
    2643         
    2744    def testNoB(self): 
    2845        ''' Test that we get a sensible error if a NDG-B doc doesn't exist ''' 
    2946        doc='badc.nerc.ac.uk__NDG-B0__blah' 
    30         uri=ndgObject.ndgObject(doc) 
    31         status,xml=ndgRetrieve(uri,self.c) 
     47        uri=ndgObject(doc) 
     48        status,xml=ndgRetrieve(uri,self.c, discovery=0) 
    3249        if status: raise ValueError(' NDG-B0 [%s] should not exist [%s]'%(doc,xml) ) 
    3350         
    3451    def testXMLdif(self): 
    3552        ''' Make sure we can recall at least one DIF properly ''' 
    36         doc='neodc.nerc.ac.uk__DIF__NEODC_NEXTMAP' 
    37         doc='badc.nerc.ac.uk__DIF__dataent_11738019833217179' 
    38         uri=ndgObject.ndgObject(doc) 
    39         status,xml=ndgRetrieve(uri,self.c) 
    40         if status: s=str(xml) 
     53        doc= tc.VALID_PROVIDER_ID + "__" + tc.DIF_DOC_TYPE + \ 
     54            "__" + tc.VALID_MOLES_DOC_ID 
     55        uri=ndgObject(doc) 
     56        status,xml=ndgRetrieve(uri,self.c, discovery=0) 
     57        self.assertEqual(status,1) 
     58        self.assertNotEqual(xml.find(tc.VALID_MOLES_DOC_ID), -1) 
    4159 
    42     def testRemoteGet(self): 
     60    def offtestRemoteGet(self): 
    4361        ''' Attempt a remote get ''' 
     62        # TODO: not sure what remote repository to use for this? 
    4463        doc='www.npm.ac.uk__NDG-B1__data_entity.363' 
    45         uri=ndgObject.ndgObject(doc) 
    46         status,xml=ndgRetrieve(uri,self.c,remote=1) 
     64        uri=ndgObject(doc) 
     65        status,xml=ndgRetrieve(uri,self.c,remote=1, discovery=0) 
    4766        if not status: print xml #ie print error message if there is one! 
    4867        self.assertEqual(status,1) 
     
    5069    def testNumSim(self): 
    5170        '''Get a NumSim document ''' 
    52         doc='badc.nerc.ac.uk__NumSim__HadAM2_CodeBase' 
    53         doc='badc.nerc.ac.uk__NumSim__HadGEM1_Control_Experiment' 
    54         uri=ndgObject.ndgObject(doc) 
    55         status,xml=ndgRetrieve(uri,self.c) 
     71        doc= tc.VALID_PROVIDER_ID + "__" + tc.NUMSIM_DOC_TYPE + \ 
     72            "__" + tc.VALID_NUMSIM_DOC_ID 
     73        uri=ndgObject(doc) 
     74        status,xml=ndgRetrieve(uri,self.c, discovery=0) 
    5675        self.assertEqual(status,1) 
     76        self.assertNotEqual(xml.find(tc.VALID_NUMSIM_DOC_ID), -1) 
     77         
     78    def testAtom(self): 
     79        '''Get an atom document ''' 
     80        doc= tc.VALID_PROVIDER_ID + "__" + tc.ATOM_DOC_TYPE + \ 
     81            "__" + tc.VALID_ATOM_DOC_ID 
     82        uri=ndgObject(doc) 
     83        status,xml=ndgRetrieve(uri,self.c, discovery=0) 
     84        self.assertEqual(status,1) 
     85        self.assertNotEqual(xml.find(tc.VALID_ATOM_DOC_ID), -1) 
     86         
     87    def testAtomBackup(self): 
     88        '''Get a backed up atom document ''' 
     89        doc= tc.VALID_PROVIDER_ID + "__" + tc.ATOM_BACKUP_DOC_TYPE + \ 
     90            "__" + tc.VALID_ATOM_DOC_ID 
     91        uri=ndgObject(doc) 
     92        status,xml=ndgRetrieve(uri,self.c, discovery=0) 
     93        self.assertEqual(status,1) 
     94        self.assertNotEqual(xml.find(tc.VALID_ATOM_DOC_ID), -1) 
    5795         
    5896if __name__=="__main__": 
Note: See TracChangeset for help on using the changeset viewer.