qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DISPATCH-209) Three+ router test is needed in the system test suite.
Date Tue, 13 Jun 2017 18:55:00 GMT

    [ https://issues.apache.org/jira/browse/DISPATCH-209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16048253#comment-16048253
] 

ASF GitHub Bot commented on DISPATCH-209:
-----------------------------------------

Github user ted-ross commented on a diff in the pull request:

    https://github.com/apache/qpid-dispatch/pull/165#discussion_r121765790
  
    --- Diff: tests/system_tests_three_routers.py ---
    @@ -335,36 +417,124 @@ def on_start ( self, event ):
             self.client_receiver   = event.container.create_receiver(self.client_connection,
None, dynamic=True)
     
     
    +    def on_sendable ( self, event ):
    +        if event.sender == self.sender :
    +            while event.sender.credit > 0 and self.n_sent < self.n_expected:
    +                # We send to server, and tell it how to reply to the client.
    +                reply_to_addr = self.client_receiver.remote_source.address
     
    -    def on_sendable(self, event):
    -        while event.sender.credit > 0 and self.n_sent < self.n_expected:
    -            # We send to server, and tell it how to reply to the client.
    -            reply_to_addr = self.client_receiver.remote_source.address
    -
    -            request = Message ( body=self.n_sent,
    -                                address=self.dest,
    -                                reply_to = reply_to_addr )
    -            event.sender.send ( request )
    -            self.n_sent += 1
    +                request = Message ( body=self.n_sent,
    +                                    address=self.dest,
    +                                    reply_to = reply_to_addr )
    +                event.sender.send ( request )
    +                self.n_sent += 1
     
     
    -    def on_message(self, event):
    +    def on_message ( self, event ):
             # Server gets a request and responds to
             # the address that is embedded in the message.
             if event.receiver == self.server_receiver :
    -            self.server_sender.send ( Message(address=event.message.reply_to,
    -                                      body="Reply hazy, try again later.") )
    +            # pdb.set_trace()
                 self.received_by_server += 1
    +            msg = Message(address=event.message.reply_to, body="Reply hazy, try again
later.")
    +            self.server_sender.send ( msg )
     
             # Client gets a response and counts it.
             elif event.receiver == self.client_receiver :
                 self.received_by_client += 1
                 if self.received_by_client == self.n_expected:
    -                self.timer.cancel()
    -                self.server_receiver.close()
    -                self.client_receiver.close()
    -                self.client_connection.close()
    -                self.server_connection.close()
    +                self.shutdown ( )
    +
    +
    +    def run(self):
    +        Container(self).run()
    +
    +
    +
    +
    +
    +class LinkRoute ( MessagingHandler ):
    +
    +    """
    +        Set up and use a link-route, to send a message this way:
    +            receiver <--- A <--- B <--- C <--- sender
    +    """
    +
    +    def __init__ ( self, addr_listening_for_route_container, linkroute_prefix, qdstat_address,
send_address ):
    +        super(LinkRoute, self).__init__(prefetch=0)
    +        self.addr_listening_for_route_container = addr_listening_for_route_container
    +        self.send_address = send_address
    +        self.linkroute_prefix = linkroute_prefix
    +        self.qdstat_address = qdstat_address
    +        self.error      = None
    +        self.send_connection = None
    +        self.recv_connection = None
    +        self.false_statement = "This is not the message you are looking for."
    +
    +
    +    def timeout(self):
    +        self.error = "Timeout Expired"
    +        self.shutdown ( )
    +
    +
    +    def shutdown ( self ) :
    +        self.recv_connection.close()
    +        self.send_connection.close()
    +        self.timer.cancel()
    +        self.timer = None
    +
    +
    +    def on_start(self, event):
    +        # Iff this timer expires, the test fails.
    +        self.timer = event.reactor.schedule ( 5, Timeout(self) )
    +
    +        # Create the receiver only at start time.
    +        # Sender-creation has to wait until we know that the address is available.
    +        self.recv_connection = event.container.connect ( self.addr_listening_for_route_container
)
    +        self.receiver = event.container.create_receiver ( self.recv_connection, None,
dynamic=True )
    +
    +
    +    def on_link_opening ( self, event ):
    --- End diff --
    
    When handing an unsolicited incoming link-attach, this handler must copy the addresses
from the remote to the local.  If you trace the operation of this test, you will see that
the returning attach (from the initial attach to "myLinkRoute") does not contain an address.
 This is a protocol violation and it is by luck that the link correctly transfers the message.
    The system_tests_multi_tenancy/LinkRouteTest test can be used an an example of the correct
way to handle a link-routed attach.


> Three+ router test is needed in the system test suite.
> ------------------------------------------------------
>
>                 Key: DISPATCH-209
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-209
>             Project: Qpid Dispatch
>          Issue Type: New Feature
>          Components: Tests
>            Reporter: Ted Ross
>            Assignee: michael goulish
>             Fix For: 1.0.0
>
>
> There have arisen some issues that would have been caught had there been a three-router
test in the regression suite.  This test should be added.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message