[openib-general] some bugs that can be found using the gen2_basic in the contrib/m ellanox folder
Roland Dreier
rolandd at cisco.com
Mon Oct 3 09:29:30 PDT 2005
I finally got a chance to try your tests. A few comments:
- Several of the tests are buggy. See the patch below at least.
- It would be much more useful if the COMPARE() macro printed the
expected and actual value on failure.
- Similarly, other macros should probably also print more context.
For example, in something like:
CHECK_PTR("ibv_create_qp", qp[i], goto cleanup);
I would probably want to know the value of i on failure.
- I don't believe some of the tests are really valid. For example,
the max number of QPs doesn't have to be precisely correct -- no
valid app is going to depend on being able to create exactly that
number of QPs and no more.
- In any case, I'm not convinced that this sort of negative testing
is the most valuable thing to focus on right now. I think it would
be better to have regression tests of basic functionality (sends,
receives, RDMA, CQ polling, etc) and stress tests before testing
whether a buggy app will get the right error value when passing
invalid parameters.
- R.
Index: test_cq.c
===================================================================
--- test_cq.c (revision 3639)
+++ test_cq.c (working copy)
@@ -106,6 +106,7 @@ int cq_2(
{
struct ibv_context *ib_cont = NULL;
struct ibv_pd *pd = NULL;
+ struct ibv_comp_channel *channel = NULL;
struct ibv_cq *cq = NULL;
struct ibv_cq *event_cq = NULL;
struct ibv_qp *qp = NULL;
@@ -132,8 +133,11 @@ int cq_2(
pd = ibv_alloc_pd(ib_cont);
CHECK_PTR("ibv_alloc_pd", pd, goto cleanup);
+ channel = ibv_create_comp_channel(ib_cont);
+ CHECK_PTR("ibv_create_comp_channel", channel, goto cleanup);
+
cq_size = VL_range(rand_gen, 1, device_attr.max_cqe);
- cq = ibv_create_cq(ib_cont, cq_size, (void *)&count, NULL, 0);
+ cq = ibv_create_cq(ib_cont, cq_size, (void *)&count, channel, 0);
CHECK_PTR("ibv_create_cq", cq, goto cleanup);
mr_size = VL_range(rand_gen, 1, 1024);
@@ -211,6 +215,7 @@ int cq_2(
CHECK_MALLOC(event_count, goto cleanup);
*event_count = 0;
+ rc = ibv_get_cq_event(channel, (void *)&event_cq, (void *)&event_count);
rc = ibv_get_cq_event(NULL, (void *)&event_cq, (void *)&event_count);
CHECK_VALUE("ibv_get_cq_event", rc, 0, goto cleanup);
Index: test_hca.c
===================================================================
--- test_hca.c (revision 3639)
+++ test_hca.c (working copy)
@@ -230,7 +230,7 @@ int hca_5(
j = port_attr.gid_tbl_len + VL_random(rand_gen, 0xFFFFFFFF - port_attr.gid_tbl_len);
rc = ibv_query_gid(ib_cont, i, j, &gid);
- CHECK_VALUE("ibv_query_gid", rc, 0, goto cleanup);
+ CHECK_VALUE("ibv_query_gid", rc, -1, goto cleanup);
}
PASSED;
@@ -239,7 +239,7 @@ int hca_5(
i = VL_range(rand_gen, device_attr.phys_port_cnt + 1, 0xFF);
rc = ibv_query_gid(ib_cont, i, j, &gid);
- CHECK_VALUE("ibv_query_gid", rc, 0, goto cleanup);
+ CHECK_VALUE("ibv_query_gid", rc, -1, goto cleanup);
PASSED;
test_result = 0;
More information about the general
mailing list