def test_ping(self): print("test_ping") global pingCallbackEvent # Send a ping request from projectInterface to fileWatcher assert Web.wsDataConn is not None cmd = {'cmd': 'ping'} response = Web.sendDataMsgFromThread(cmd, timeout=2) if response['status'] != 200: print("Ping error: {}".format(response)) assert response['status'] == 200
def test_getBigFile(self, bigTestfile): # Read in original data with open(bigTestfile, 'rb') as fp: data = fp.read() # Read via fileClient startTime = time.time() cmd = projUtils.getFileReqStruct(bigTestfile) try: responseData = handleDataRequest(cmd) except Exception as err: assert False, str(err) assert responseData == data print('Read Bigfile time: {}'.format(time.time() - startTime)) # Write bigFile Synchronous startTime = time.time() cmd = projUtils.putBinaryFileReqStruct(bigTestfile) for putFilePart in projUtils.generateDataParts(data, cmd, compress=False): response = Web.sendDataMsgFromThread(putFilePart) assert response['status'] == 200 print('Write Bigfile sync time: {}'.format(time.time() - startTime)) # Write bigFile Asynchronous startTime = time.time() cmd = projUtils.putBinaryFileReqStruct(bigTestfile) callIds = [] for putFilePart in projUtils.generateDataParts(data, cmd, compress=False): callId = Web.sendDataMsgFromThreadAsync(putFilePart) callIds.append(callId) for callId in callIds: response = Web.getDataMsgResponse(callId) assert response['status'] == 200 print('Write Bigfile async time: {}'.format(time.time() - startTime)) # Read back written data writtenPath = os.path.join(CommonOutputDir, bigTestfile) with open(writtenPath, 'rb') as fp: writtenData = fp.read() assert writtenData == data
def test_getFile(self, dicomTestFilename): print("test_getFile") global fileData assert Web.wsDataConn is not None # Try to initialize file watcher with non-allowed directory cmd = projUtils.initWatchReqStruct('/', '*', 0) response = Web.sendDataMsgFromThread(cmd) # we expect an error because '/' directory not allowed assert response['status'] == 400 # Initialize with allowed directory cmd = projUtils.initWatchReqStruct(testDir, '*.dcm', 0) response = Web.sendDataMsgFromThread(cmd) assert response['status'] == 200 dcmImg = readDicomFromFile(dicomTestFilename) anonDcm = anonymizeDicom(dcmImg) data = writeDicomToBuffer(anonDcm) # with open(dicomTestFilename, 'rb') as fp: # data = fp.read() cmd = projUtils.watchFileReqStruct(dicomTestFilename) try: responseData = handleDataRequest(cmd) except Exception as err: assert False, str(err) # import pdb; pdb.set_trace() assert responseData == data # Try compressed version cmd = projUtils.watchFileReqStruct(dicomTestFilename, compress=True) try: responseData = handleDataRequest(cmd) except Exception as err: assert False, str(err) assert responseData == data cmd = projUtils.getFileReqStruct(dicomTestFilename) try: responseData = handleDataRequest(cmd) except Exception as err: assert False, str(err) assert responseData == data # Try compressed version cmd = projUtils.getFileReqStruct(dicomTestFilename, compress=True) try: responseData = handleDataRequest(cmd) except Exception as err: assert False, str(err) assert responseData == data cmd = projUtils.getNewestFileReqStruct(dicomTestFilename) try: responseData = handleDataRequest(cmd) except Exception as err: assert False, str(err) assert responseData == data # Try to get a non-allowed file cmd = projUtils.getFileReqStruct('/tmp/file.nope') try: responseData = handleDataRequest(cmd) except RequestError as err: # Expecting a status not 200 error to be raised assert 'status' in str(err) else: self.fail('Expecting RequestError') # try from a non-allowed directory cmd = projUtils.getFileReqStruct('/nope/file.dcm') try: responseData = handleDataRequest(cmd) except RequestError as err: # Expecting a status not 200 error to be raised assert 'status' in str(err) else: self.fail('Expecting RequestError') # Test putTextFile testText = 'hello2' textFileName = os.path.join(tmpDir, 'test2.txt') cmd = projUtils.putTextFileReqStruct(textFileName, testText) response = Web.sendDataMsgFromThread(cmd) assert response['status'] == 200 # Test putBinaryData function testData = b'\xFE\xED\x01\x23' dataFileName = os.path.join(tmpDir, 'test2.bin') cmd = projUtils.putBinaryFileReqStruct(dataFileName) for putFilePart in projUtils.generateDataParts(testData, cmd, compress=True): response = Web.sendDataMsgFromThread(putFilePart) assert response['status'] == 200 # read back an compare to original cmd = projUtils.getFileReqStruct(dataFileName) response = Web.sendDataMsgFromThread(cmd) responseData = b64decode(response['data']) assert responseData == testData