Skip to content

Commit

Permalink
tests: Add RDMA Write and Read testcase for ODP
Browse files Browse the repository at this point in the history
Add test that uses RDMA Write/Read operations with ODP. This cannot be
separated into two testcases because RDMA Write must precede for RDMA Read
to succeed.

Signed-off-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
  • Loading branch information
ddmatsu committed Oct 3, 2022
1 parent 3f180c6 commit e9dd7fb
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions tests/test_odp.py
Expand Up @@ -56,21 +56,26 @@ def create_mr(self):
implicit=self.is_implicit)

class OdpRdmaRC(RCResources):
def __init__(self, dev_name, ib_port, gid_index):
def __init__(self, dev_name, ib_port, gid_index, msg_size=512):
"""
Initialize an OdpRdmaRC Resource object. This is intended to be
used with RDMA Write, RDMA Read, and Atomic operations.
:param dev_name: Device name to be used
:param ib_port: IB port of the device to use
:param gid_index: Which GID index to use
:param msg_size: Message size for RDMA operations. Ignored for
Atomic operations (always '8' in that case).
"""
self.access = e.IBV_ACCESS_LOCAL_WRITE | e.IBV_ACCESS_ON_DEMAND | \
e.IBV_ACCESS_REMOTE_ATOMIC
e.IBV_ACCESS_REMOTE_ATOMIC | e.IBV_ACCESS_REMOTE_READ | \
e.IBV_ACCESS_REMOTE_WRITE
super().__init__(dev_name=dev_name, ib_port=ib_port,
gid_index=gid_index)
self.msg_size = msg_size
self.new_mr_lkey = None

@u.requires_odp('rc', e.IBV_ODP_SUPPORT_ATOMIC)
@u.requires_odp('rc', e.IBV_ODP_SUPPORT_ATOMIC |
e.IBV_ODP_SUPPORT_READ | e.IBV_ODP_SUPPORT_WRITE)
def create_mr(self):
self.mr = MR(self.pd, self.msg_size, self.access)

Expand Down Expand Up @@ -130,9 +135,9 @@ def sync_remote_attr(self):
Sync the MR remote attributes between the server and the client.
"""
self.server.rkey = self.client.mr.rkey
self.server.raddr = self.client.mr.buf
self.server.remote_addr = self.server.raddr = self.client.mr.buf
self.client.rkey = self.server.mr.rkey
self.client.raddr = self.server.mr.buf
self.client.remote_addr = self.client.raddr = self.server.mr.buf

def tearDown(self):
if self.user_addr:
Expand All @@ -144,17 +149,22 @@ def test_odp_rc_traffic(self):
u.traffic(**self.traffic_args)

def test_odp_rc_atomic_cmp_and_swp(self):
self.create_players(OdpRdmaRC)
self.create_players(OdpRdmaRC, msg_size=8)
u.atomic_traffic(**self.traffic_args,
send_op=e.IBV_WR_ATOMIC_CMP_AND_SWP)
u.atomic_traffic(**self.traffic_args, receiver_val=1, sender_val=1,
send_op=e.IBV_WR_ATOMIC_CMP_AND_SWP)

def test_odp_rc_atomic_fetch_and_add(self):
self.create_players(OdpRdmaRC)
self.create_players(OdpRdmaRC, msg_size=8)
u.atomic_traffic(**self.traffic_args,
send_op=e.IBV_WR_ATOMIC_FETCH_AND_ADD)

def test_odp_rc_rdma_write_and_read(self):
self.create_players(OdpRdmaRC)
u.rdma_traffic(**self.traffic_args, send_op=e.IBV_WR_RDMA_WRITE)
u.rdma_traffic(**self.traffic_args, send_op=e.IBV_WR_RDMA_READ)

def test_odp_implicit_rc_traffic(self):
self.create_players(OdpRC, is_implicit=True)
u.traffic(**self.traffic_args)
Expand Down

0 comments on commit e9dd7fb

Please sign in to comment.