def testEmptyDirectorySubmission(self): # Create a new Test Dataset SubmitDatasetUtils.createDataset(self.session,EmptyTestDatasetName) zipFileName = EmptyTestDatasetName+".zip" zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName # Zip the Empty directory SubmitDatasetUtils.zipLocalDirectory(TestConfig.DatasetsEmptyDirPath,TestConfig.TestPat,zipFilePath) zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName #logger.debug("ZipFileName: " + zipFileName) localZipFileContent = SubmitDatasetUtils.getLocalFileContents(zipFilePath) SubmitDatasetUtils.submitFileToDataset(self.session,EmptyTestDatasetName, zipFileName, zipFilePath, TestConfig.ZipMimeType, zipFileName) # Read from the updated Dataset (remoteMimeType, remoteZipFileContent) = SubmitDatasetUtils.getFileFromDataset(self.session, EmptyTestDatasetName+"-packed", zipFileName) #logger.debug("LocalZipFileContents: " + localZipFileContent) #logger.debug(" RemoteZipFileContents: " + remoteZipFileContent) # Check that the <localFileContent> = <remoteFileContents> self.assertEqual(TestConfig.ZipMimeType, remoteMimeType, "Difference between local and remote zip MIME types") self.assertEqual(localZipFileContent, remoteZipFileContent, "Difference between local and remote zip file contents") #unpack the contents newDatasetName = SubmitDatasetUtils.unzipRemoteFileToNewDataset(self.session, EmptyTestDatasetName, zipFileName) SubmitDatasetUtils.deleteDataset(self.session,EmptyTestDatasetName+"-packed") SubmitDatasetUtils.deleteDataset(self.session,newDatasetName) return
def testDatasetCreation(self): # Read original Dataset List from Silo initialDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo(self.session) # Formulate the initial datasets received form Databank Silo into a List: <initialDatasetsListFromSilo> initialDatasetsListFromSilo = [] for initialDataset in initialDatasetsFromSilo: initialDatasetsListFromSilo.append(initialDataset) # Create a new Test Dataset SubmitDatasetUtils.createDataset(self.session,TestDatasetName) # Read updated Dataset List from Silo updatedDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo(self.session) # Formulate the updated datasets received from Databank Silo into a List: <updatedDatasetListFromSilo> updatedDatasetsListFromSilo = [] for updatedDataset in updatedDatasetsFromSilo: updatedDatasetsListFromSilo.append(updatedDataset) logger.debug("Updated no. of Datasets in Silo "+str(len(updatedDatasetsListFromSilo))+", Initial no. of Datasets in Silo "+str(len(initialDatasetsListFromSilo))) # Test that the length <updatedDatasetListFromSilo> = length<initialDatasetsListFromSilo> + 1 self.assertEquals(len(updatedDatasetsListFromSilo), len(initialDatasetsListFromSilo)+1, "Dataset was not Created Successfully") SubmitDatasetUtils.deleteDataset( self.session,TestDatasetName+"-packed") return
def testSingleFileSubmission(self): SubmitDatasetUtils.createDataset(self.session, TestDatasetName) # Submit a file to the Dataset localMimeType = TestConfig.FileMimeType localFileContent = SubmitDatasetUtils.getLocalFileContents( TestConfig.FilePath) SubmitDatasetUtils.submitFileToDataset(self.session, TestDatasetName, TestConfig.FileName, TestConfig.FilePath, localMimeType, TestConfig.FileName) # Read from the updated Dataset (remoteMimeType, remoteFileContent) = SubmitDatasetUtils.getFileFromDataset( self.session, TestDatasetName + "-packed", TestConfig.FileName) # Check that the <localFileContent> = <remoteFileContents> self.assertEqual(localMimeType, remoteMimeType, "Difference between local and remote MIME types") self.assertEqual(localFileContent, remoteFileContent, "Difference between local and remote file contents") SubmitDatasetUtils.deleteDataset(self.session, TestDatasetName + "-packed") return
def testDatasetCreation(self): # Read original Dataset List from Silo initialDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo( self.session) # Formulate the initial datasets received form Databank Silo into a List: <initialDatasetsListFromSilo> initialDatasetsListFromSilo = [] for initialDataset in initialDatasetsFromSilo: initialDatasetsListFromSilo.append(initialDataset) # Create a new Test Dataset SubmitDatasetUtils.createDataset(self.session, TestDatasetName) # Read updated Dataset List from Silo updatedDatasetsFromSilo = SubmitDatasetUtils.getDatasetsListFromSilo( self.session) # Formulate the updated datasets received from Databank Silo into a List: <updatedDatasetListFromSilo> updatedDatasetsListFromSilo = [] for updatedDataset in updatedDatasetsFromSilo: updatedDatasetsListFromSilo.append(updatedDataset) logger.debug("Updated no. of Datasets in Silo " + str(len(updatedDatasetsListFromSilo)) + ", Initial no. of Datasets in Silo " + str(len(initialDatasetsListFromSilo))) # Test that the length <updatedDatasetListFromSilo> = length<initialDatasetsListFromSilo> + 1 self.assertEquals(len(updatedDatasetsListFromSilo), len(initialDatasetsListFromSilo) + 1, "Dataset was not Created Successfully") SubmitDatasetUtils.deleteDataset(self.session, TestDatasetName + "-packed") return
def testDatasetDeletion(self): SubmitDatasetUtils.createDataset( self.session,TestDatasetName) # Check dataset exists response = self.session.doHTTP_GET( resource = "/" + TestConfig.SiloName + "/datasets/" + TestDatasetName+"-packed", expect_status=200, expect_reason="OK", accept_type="application/json") # Test the dataset deletion SubmitDatasetUtils.deleteDataset( self.session,TestDatasetName+"-packed") # Test dataset no longer exists response = self.session.doHTTP_GET( resource = "/" + TestConfig.SiloName + "/datasets/" + TestDatasetName+"-packed", expect_status=404, expect_reason="Not Found") return
def testSingleFileSubmission(self): SubmitDatasetUtils.createDataset(self.session,TestDatasetName) # Submit a file to the Dataset localMimeType = TestConfig.FileMimeType localFileContent = SubmitDatasetUtils.getLocalFileContents(TestConfig.FilePath) SubmitDatasetUtils.submitFileToDataset(self.session, TestDatasetName, TestConfig.FileName, TestConfig.FilePath,localMimeType, TestConfig.FileName) # Read from the updated Dataset (remoteMimeType,remoteFileContent) = SubmitDatasetUtils.getFileFromDataset(self.session, TestDatasetName+"-packed", TestConfig.FileName) # Check that the <localFileContent> = <remoteFileContents> self.assertEqual(localMimeType, remoteMimeType, "Difference between local and remote MIME types") self.assertEqual(localFileContent, remoteFileContent, "Difference between local and remote file contents") SubmitDatasetUtils.deleteDataset(self.session,TestDatasetName+"-packed") return
def testDatasetDeletion(self): SubmitDatasetUtils.createDataset(self.session, TestDatasetName) # Check dataset exists response = self.session.doHTTP_GET(resource="/" + TestConfig.SiloName + "/datasets/" + TestDatasetName + "-packed", expect_status=200, expect_reason="OK", accept_type="application/json") # Test the dataset deletion SubmitDatasetUtils.deleteDataset(self.session, TestDatasetName + "-packed") # Test dataset no longer exists response = self.session.doHTTP_GET(resource="/" + TestConfig.SiloName + "/datasets/" + TestDatasetName + "-packed", expect_status=404, expect_reason="Not Found") return
def testSubsequentDatasetSubmission(self): SubmitDatasetUtils.createDataset(self.session, TestDatasetName) zipFileName = TestDatasetName + ".zip" zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName # Zip the required directory SubmitDatasetUtils.zipLocalDirectory(TestConfig.DirPath, TestConfig.TestPat, zipFilePath) zipFilePath = TestConfig.DatasetsBaseDir + os.path.sep + zipFileName #logger.debug("ZipFileName: " + zipFileName) localZipFileContent = SubmitDatasetUtils.getLocalFileContents( zipFilePath) SubmitDatasetUtils.submitFileToDataset(self.session, TestDatasetName, zipFileName, zipFilePath, TestConfig.ZipMimeType, zipFileName) #Resubmit the File to Dataset skipping dataset creation as the dataset already exists SubmitDatasetUtils.submitFileToDataset(self.session, TestDatasetName, zipFileName, zipFilePath, TestConfig.ZipMimeType, zipFileName) # Read from the updated Dataset (remoteMimeType, remoteZipFileContent) = SubmitDatasetUtils.getFileFromDataset( self.session, TestDatasetName + "-packed", zipFileName) #logger.debug("LocalZipFileContents: " + localZipFileContent) #logger.debug(" RemoteZipFileContents: " + remoteZipFileContent) # Check that the <localFileContent> = <remoteFileContents> self.assertEqual(TestConfig.ZipMimeType, remoteMimeType, "Difference between local and remote zip MIME types") self.assertEqual( localZipFileContent, remoteZipFileContent, "Difference between local and remote zip files contents") #unpack the contents newDatasetname = SubmitDatasetUtils.unzipRemoteFileToNewDataset( self.session, TestDatasetName, zipFileName) SubmitDatasetUtils.deleteDataset(self.session, TestDatasetName + "-packed") SubmitDatasetUtils.deleteDataset(self.session, newDatasetname) return
def processDatasetSubmissionForm(formdata, outputstr): """ Process form data, and print (to stdout) a new HTML page reflecting the outcome of the request. formdata is a dictionary containing parameters from the dataset submission form """ userName = SubmitDatasetUtils.getFormParam("user" , formdata) userPass = SubmitDatasetUtils.getFormParam("pass" , formdata) endpointhost = SubmitDatasetUtils.getFormParam("endpointhost", formdata) basepath = SubmitDatasetUtils.getFormParam("basepath" , formdata) datasetName = SubmitDatasetUtils.getFormParam("datId" , formdata) title = SubmitDatasetUtils.getFormParam("title" , formdata) description = SubmitDatasetUtils.getFormParam("description" , formdata) dirName = SubmitDatasetUtils.getFormParam("datDir" , formdata) ElementValueList = [userName, datasetName, title, description] # Host and silo name in the form data are used for testing. # In a live system, these are not provided in the form: the following values are used. if endpointhost==None or endpointhost=="": endpointhost = "localhost" if basepath==None or basepath=="": basepath = siloProxyPath ###print("\n---- processDatasetSubmissionForm:formdata ---- \n"+repr(formdata)) # Zip the selected Directory zipFileName = os.path.basename(dirName) +".zip" zipFilePath = "/tmp/" + zipFileName Logger.debug("zipFilePath = "+zipFilePath) if outputstr: sys.stdout = outputstr try: # Validate the dataset name and dataset directory fields validateFields(dirName, datasetName) # Set user credentials #session.setRequestUserPass(userName,userPass) #Create Session session = HttpSession.makeHttpSession(endpointhost, basepath, userName, userPass) SubmitDatasetUtils.createDataset(session, datasetName) # Update the local manifest manifestFilePath = dirName + str(os.path.sep) + DefaultManifestName Logger.debug("Element List = " + repr(ElementUriList)) Logger.debug("Element Value List = " + repr(ElementValueList)) SubmitDatasetDetailsHandler.updateMetadataInDirectoryBeforeSubmission(manifestFilePath, ElementUriList, ElementValueList) #Logger.debug("datasetName %s, dirName %s, zipFileName %s"%(datasetName,dirName,zipFileName)) SubmitDatasetUtils.zipLocalDirectory(dirName, FilePat, zipFilePath) # Submit zip file to dataset SubmitDatasetUtils.submitFileToDataset(session, datasetName, zipFileName, zipFilePath, ZipMimeType, zipFileName) # Unzip the contents into a new dataset datasetUnzippedName = SubmitDatasetUtils.unzipRemoteFileToNewDataset(session, datasetName, zipFileName) # Redirect to the Dataset Summary page redirectToSubmissionSummaryPage(dirName, datasetName+"-packed", datasetUnzippedName, convertToUriString(SuccessStatus)) return except SubmitDatasetUtils.SubmitDatasetError, e: SubmitDatasetUtils.printHTMLHeaders() SubmitDatasetUtils.generateErrorResponsePageFromException(e)