discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Python Unit Test with message ports - "Could not


From: Steven Knudsen
Subject: Re: [Discuss-gnuradio] Python Unit Test with message ports - "Could not find port"
Date: Wed, 11 Jan 2017 18:21:20 -0700

Hi Marcus,

You worry me with your “various ways” comment :-/

All I have done is extended the random_pdu from gr-blocks by including a sequence number in the PDU. So, the constructor is where the message ports are registered and is identical to the random_pdu constructor. I’ve attached a snippet (rsp_constructor.snippet) that contains my exact code.

My version works the same as the original when run from GRC. I’ve attached a screencap of the simple flowgraph used to verify this. I’ve also attached the generated python. 

I took the main code from that generated python and added to my unit test and modified only by changing ‘self’ to self.tb’. When I run that code, I get the could not find port error. 

If I modify that code to connect only the output of the Message Strobe to the print port of the Message Debug, it works.

That is, this does not work,
        self.tb.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.jitc_random_sequenced_pdu_0, 'generate'))
#        self.tb.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.blocks_message_debug_0, 'print'))
        self.tb.msg_connect((self.jitc_random_sequenced_pdu_0, 'pdus'), (self.blocks_message_debug_0, 'print'))


But this does work

#        self.tb.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.jitc_random_sequenced_pdu_0, 'generate'))
        self.tb.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.blocks_message_debug_0, 'print'))
#        self.tb.msg_connect((self.jitc_random_sequenced_pdu_0, 'pdus'), (self.blocks_message_debug_0, 'print'))

Last observation is that if I replace my random_sequenced_pdu with block’s random_pdu,it all works. So, it’s definitely something with my module. Is something not generated via/by swig maybe? I tried digging into gr-blocks to look for differences, but so far none that I can see.

Sorry this is kind of long, but it’s a weird problem, weird because my stuff works fine in GRC!?!

regards, and thanks,

steven


TIFF image

Attachment: msg_connect_block.py
Description: Text Data

Attachment: rsp_constructor.snippet
Description: Binary data



From:Marcus Müller
Subject:Re: [Discuss-gnuradio] Python Unit Test with message ports - "Could not find port"
Date:Wed, 11 Jan 2017 14:49:40 +0100
User-agent:Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0

Hi Steven, 

that's strange indeed. In various ways. 

Could you tell us:

1. where do you register the message port? Could you copy&paste that exact line?
2. could you copy&paste both message_connect lines from the GRC-generated and your unit test python?

Thanks,

Marcus

On 01/11/2017 01:35 AM, Steven Knudsen wrote:
Hi all,

I am trying to write a unit test for a message-only block, let’s call it “foo”, that has an input message port “generate". When I use the block in GRC, everything is fine. I can connect its message ports to standard GNU Radio message blocks, like message_strobe and message_debug with no problems.

However, when I try and do the same in a Python unit test, I get the message

Could not find port: generate in:
generate
system

If, for example, in the same unit test I connect the message_strobe with message_debug, all is well.

If I then connect message_strobe to foo, I get the error above.

I double checked that the message port declarations are the same as you find in a block like message_strobe. 

I double checked the syntax of msg_connect, making sure it looks exactly the same as it does in the GRC generated Python file.

Anyone seen this recently? I have found some references by searching online, but nothing that has helped.

Thanks very much!

steven


reply via email to

[Prev in Thread] Current Thread [Next in Thread]