blob: 64cce8b46cbc95bf0d0dcf72d5aaa20eb49f0a8b [file] [log] [blame]
import unittest
from pyverbs.pyverbs_error import PyverbsRDMAError
from tests.mlx5_base import Mlx5PyverbsAPITestCase
from pyverbs.qp import QP, QPInitAttr, QPCap
from pyverbs.srq import SRQ, SrqInitAttr
from pyverbs.pd import PD
from pyverbs.cq import CQ
import tests.utils as u
def huge_pages_supported():
try:
u.huge_pages_supported()
except unittest.SkipTest:
return False
return True
class ResourcesOnHugePageTest(Mlx5PyverbsAPITestCase):
def create_cq(self):
return CQ(self.ctx, 100, None, None, 0)
def create_qp(self):
with PD(self.ctx) as pd:
with self.create_cq() as cq:
attr = QPInitAttr(scq=cq, rcq=cq, cap=QPCap(max_recv_wr=100,
max_send_wr=100))
QP(pd, attr)
def create_srq(self):
with PD(self.ctx) as pd:
SRQ(pd, SrqInitAttr())
def set_env_alloc_type(self, alloc_type):
self.set_env_variable('MLX_CQ_ALLOC_TYPE', alloc_type)
self.set_env_variable('MLX_QP_ALLOC_TYPE', alloc_type)
self.set_env_variable('MLX_SRQ_ALLOC_TYPE', alloc_type)
def create_objects(self):
self.create_cq()
self.create_qp()
self.create_srq()
def test_prefer_obj_on_huge(self):
"""
Test PREFER_HUGE allocation type for srq cq and qp.
"""
self.set_env_alloc_type('PREFER_HUGE')
self.create_objects()
def test_obj_on_huge(self):
"""
Test HUGE allocation type for srq cq and qp.
If there are huge pages in the system expect to success,
else expect to fail.
"""
self.set_env_alloc_type('HUGE')
if huge_pages_supported() and u.is_root():
self.create_objects()
else:
with self.assertRaises(PyverbsRDMAError):
self.create_objects()