Re: [PATCH RFC] tests: Fix test_mr_rereg_pd

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

 



On 5/29/23 05:48, Edward Srouji wrote:
> I see that the traffic() function used in this test posts just one receive/send WR each iteration.
> Meaning that once the first CQE with error occurs, there are no more CQEs left to drain.
I believe it is the receive WQEs that are getting flushed.
> 
> If that is the case, I'm not sure why you still see stray completions in the CQ.
> 
> On 5/25/2023 7:25 AM, Bob Pearson wrote:
>> External email: Use caution opening links or attachments
>>
>>
>> This patch adds a util method drain_cq which drains out
>> the cq associated with a client or server. This is then
>> added to the method restate_qps in tests/test_mr.py.
>> This allows correct operation when recovering test state
>> from an error which may have also left stray completions
>> in the cqs before resetting the qps for use.
>>
>> Fixes: 4bc72d894481 ("tests: Add rereg MR tests")
>> Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx>
>> ---
>>   tests/test_mr.py |  2 ++
>>   tests/utils.py   | 14 ++++++++++++++
>>   2 files changed, 16 insertions(+)
>>
>> diff --git a/tests/test_mr.py b/tests/test_mr.py
>> index 534df46a..73dfbff2 100644
>> --- a/tests/test_mr.py
>> +++ b/tests/test_mr.py
>> @@ -109,6 +109,8 @@ class MRTest(RDMATestCase):
>>           self.server.qp.to_rts(self.server_qp_attr)
>>           self.client.qp.modify(QPAttr(qp_state=e.IBV_QPS_RESET), e.IBV_QP_STATE)
>>           self.client.qp.to_rts(self.client_qp_attr)
>> +        u.drain_cq(self.client.cq)
>> +        u.drain_cq(self.server.cq)
>>
>>       def test_mr_rereg_access(self):
>>           self.create_players(MRRes)
>> diff --git a/tests/utils.py b/tests/utils.py
>> index a1dfa7d8..f6966b1a 100644
>> --- a/tests/utils.py
>> +++ b/tests/utils.py
>> @@ -672,6 +672,20 @@ def poll_cq_ex(cqex, count=1, data=None, sgid=None):
>>       finally:
>>           cqex.end_poll()
> Keep two blank lines before and after module-level function definition (PEP-8 convention)
>> +def drain_cq(cq):
>> +    """
>> +    Drain completions from a CQ.
>> +    :param cq: CQ to drain
>> +    :return: None
>> +    """
>> +    channel = cq.comp_channel
>> +    while 1:
>> +        if channel:
>> +            channel.get_cq_event(cq)
>> +            cq.req_notify()
>> +        nc, tmp_wcs = cq.poll(1)
> 
> tmp_wcs is unused. You can do this instead:
> 
> nc, _ = cq.poll(1)
> 
>> +        if nc == 0:
>> +            break
>>
>>   def validate(received_str, is_server, msg_size):
>>       """
>> -- 
>> 2.39.2
>>

Thanks, I can fix those.

Bob




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux