Пример #1
0
    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()
Пример #3
0
    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')