def _pushData(self, connection, dataString, numBytes, currentSampleTime): # Gather information about the connection arraySrcInst = connection['arraySrcInst'] bytesPerSample = 1 srcPortType = connection['srcPortType'] for i in self.supportedPorts.values(): if i['portType'] == srcPortType: bytesPerSample = i['bytesPerSample'] break outputSize = numBytes / bytesPerSample # Set the byte swap to use if self.byte_swap == 1: byte_swap = bytesPerSample else: byte_swap = self.byte_swap # Perform the byte swap if byte_swap > 1: if byte_swap != bytesPerSample: log.warn("Data size " + str(bytesPerSample) + " is not equal to byte swap size " + str(byte_swap)) output = self._flip(dataString[:numBytes], byte_swap) else: output = dataString[:numBytes] # Convert from a string to a list of # the type expected for the port outputList = self._stringToList(output, bytesPerSample, srcPortType) formattedOutput = _bulkio_helpers.formatData( outputList, BULKIOtype=eval(srcPortType)) EOS = False if len(formattedOutput) == 0: EOS = True T = _BULKIO.PrecisionUTCTime( _BULKIO.TCM_CPU, _BULKIO.TCS_VALID, 0.0, int(currentSampleTime), currentSampleTime - int(currentSampleTime)) if srcPortType != "_BULKIO__POA.dataXML": _bulkio_data_helpers.ArraySource.pushPacket(arraySrcInst, data=formattedOutput, T=T, EOS=EOS, streamID='testing') else: _bulkio_data_helpers.XmlArraySource.pushPacket( arraySrcInst, data=formattedOutput, EOS=EOS, streamID='testing')
def testDataPush(self): charData = bulkio_helpers.genRandomDataSet(8, True, 1000) doubleData = bulkio_helpers.genRandomDataSet(64, True, 1000) floatData = bulkio_helpers.genRandomDataSet(32, True, 1000) longData = bulkio_helpers.genRandomDataSet(32, True, 1000) octetData = bulkio_helpers.genRandomDataSet(8, False, 1000) shortData = bulkio_helpers.genRandomDataSet(16, True, 1000) uLongData = bulkio_helpers.genRandomDataSet(32, False, 1000) uLongLongData = bulkio_helpers.genRandomDataSet(32, False, 1000) longLongData = bulkio_helpers.genRandomDataSet(64, True, 1000) uShortData = bulkio_helpers.genRandomDataSet(16, False, 1000) xmlData = '<?xml version="1.0" encoding="ISO-8859-1"?>' fileData = 'SCA:/data/redhawk/myfile' #Format the data sets to be sure they can be used in the pushPacket call formCharData = bulkio_helpers.formatData(charData, self.dataCharInput) formDoubleData = bulkio_helpers.formatData(doubleData, self.dataDoubleInput) formFloatData = bulkio_helpers.formatData(floatData, self.dataFloatInput) formLongData = bulkio_helpers.formatData(longData, self.dataLongInput) formOctetData = bulkio_helpers.formatData(octetData, self.dataOctetInput) formShortData = bulkio_helpers.formatData(shortData, self.dataShortInput) formULongData = bulkio_helpers.formatData(uLongData, self.dataUlongInput) formULongLongData = bulkio_helpers.formatData(uLongLongData, self.dataUlongLongInput) formLongLongData = bulkio_helpers.formatData(longLongData, self.dataLongLongInput) formUShortData = bulkio_helpers.formatData(uShortData, self.dataUshortInput) formXmlData = bulkio_helpers.formatData(xmlData, self.dataXMLInput) formFileData = bulkio_helpers.formatData(fileData, self.dataFileInput) self.comp_obj.start() num_test_runs = 10 for i in range(num_test_runs): ################################ # Send Data on each output port self.dataCharInput.pushPacket(formCharData, bulkio_helpers.createCPUTimestamp(), False, "s1") self.dataDoubleInput.pushPacket( formDoubleData, bulkio_helpers.createCPUTimestamp(), False, "s2") self.dataFloatInput.pushPacket(formFloatData, bulkio_helpers.createCPUTimestamp(), False, "s3") self.dataLongInput.pushPacket(formLongData, bulkio_helpers.createCPUTimestamp(), False, "s4") self.dataOctetInput.pushPacket(formOctetData, bulkio_helpers.createCPUTimestamp(), False, "s5") self.dataShortInput.pushPacket(formShortData, bulkio_helpers.createCPUTimestamp(), False, "s6") self.dataUlongInput.pushPacket(formULongData, bulkio_helpers.createCPUTimestamp(), False, "s7") self.dataUlongLongInput.pushPacket( formULongLongData, bulkio_helpers.createCPUTimestamp(), False, "s8") self.dataLongLongInput.pushPacket( formLongLongData, bulkio_helpers.createCPUTimestamp(), False, "s9") self.dataUshortInput.pushPacket( formUShortData, bulkio_helpers.createCPUTimestamp(), False, "s10") self.dataXMLInput.pushPacket(formXmlData, False, "s11") self.dataFileInput.pushPacket(formFileData, bulkio_helpers.createCPUTimestamp(), False, "s12") ########################################################## # Receive data from each output port # *** THESE GET PACKETS CAN BE SET TO BLOCK OR TIMEOUT *** _charData, T, EOS, streamID, sri, sriChanged, flushed = self.helperCharInput.getPacket( 2) _doubleData, T, EOS, streamID, sri, sriChanged, flushed = self.helperDoubleInput.getPacket( 2) _floatData, T, EOS, streamID, sri, sriChanged, flushed = self.helperFloatInput.getPacket( 2) _longData, T, EOS, streamID, sri, sriChanged, flushed = self.helperLongInput.getPacket( 2) _octetData, T, EOS, streamID, sri, sriChanged, flushed = self.helperOctetInput.getPacket( 2) _shortData, T, EOS, streamID, sri, sriChanged, flushed = self.helperShortInput.getPacket( 2) _uLongData, T, EOS, streamID, sri, sriChanged, flushed = self.helperUlongInput.getPacket( 2) _uLongLongData, T, EOS, streamID, sri, sriChanged, flushed = self.helperUlongLongInput.getPacket( 2) _longLongData, T, EOS, streamID, sri, sriChanged, flushed = self.helperLongLongInput.getPacket( 2) _uShortData, T, EOS, streamID, sri, sriChanged, flushed = self.helperUshortInput.getPacket( 2) _xmlData, T, EOS, streamID, sri, sriChanged, flushed = self.helperXMLInput.getPacket( 2) _fileData, T, EOS, streamID, sri, sriChanged, flushed = self.helperFileInput.getPacket( 2) types = [ 'char', 'double', 'float', 'long', 'octet', 'short', 'uLong', 'uLongLong', 'longLong', 'uShort', 'xml', 'file' ] sentData = {'char':formCharData, 'double':formDoubleData, 'float':formFloatData, 'long':formLongData, 'octet':formOctetData,\ 'short':formShortData, 'uLong':formULongData, 'uShort':formUShortData, 'xml':formXmlData, 'file':formFileData,\ 'longLong':formLongLongData, 'uLongLong':formULongLongData} recData = {'char':_charData, 'double':_doubleData, 'float':_floatData, 'long':_longData, 'octet':_octetData, 'short':_shortData,\ 'uLong':_uLongData, 'uShort':_uShortData, 'xml':_xmlData, 'file':_fileData, 'longLong':_longLongData, 'uLongLong':_uLongLongData} for x in types: self.assertNotEquals( None, recData[x], msg="No data was recieved for dataType (" + str(x) + ")") ############################################# # Check that data received matches data sent for x in types: self.assertEqual(recData[x], sentData[x]) ######################################### # Check restoring the 8 bit data to its # original yields the same results restCharData = bulkio_helpers.restoreData(_charData, '8bit') restOctetData = bulkio_helpers.restoreData(_octetData, 'u8bit') self.assertEquals(restCharData, charData) self.assertEquals(restOctetData, octetData) self.comp_obj.stop()
def _pushData(self, connection, dataString, numBytes, currentSampleTime): # Gather information about the connection arraySrcInst = connection['arraySrcInst'] bytesPerSample = 1 srcPortType = connection['srcPortType'] for i in self.supportedPorts.values(): if i['portType'] == srcPortType: bytesPerSample = i['bytesPerSample'] break outputSize = numBytes / bytesPerSample # Set the byte swap to use if self.byte_swap == 1: byte_swap = bytesPerSample else: byte_swap = self.byte_swap # Perform the byte swap if byte_swap > 1: if byte_swap != bytesPerSample: log.warn("Data size " + str(bytesPerSample) + " is not equal to byte swap size " + str(byte_swap)) output = self._flip(dataString[:numBytes], byte_swap) else: output = dataString[:numBytes] # Convert from a string to a list of # the type expected for the port outputList = self._stringToList(output, bytesPerSample, srcPortType) formattedOutput = _bulkio_helpers.formatData(outputList, BULKIOtype=eval(srcPortType)) EOS = False if len(formattedOutput) == 0: EOS = True T = _BULKIO.PrecisionUTCTime(_BULKIO.TCM_CPU, _BULKIO.TCS_VALID, 0.0, int(currentSampleTime), currentSampleTime - int(currentSampleTime)) if srcPortType != "_BULKIO__POA.dataXML": _bulkio_data_helpers.ArraySource.pushPacket(arraySrcInst, data = formattedOutput, T = T, EOS = EOS, streamID = 'testing') else: _bulkio_data_helpers.XmlArraySource.pushPacket(arraySrcInst, data = formattedOutput, EOS = EOS, streamID = 'testing')