[openib-general] [PATCH] osm: fixing bugs in osmtest

Yevgeny Kliteynik kliteyn at dev.mellanox.co.il
Tue Sep 19 23:36:52 PDT 2006


Hi Hal

I'm doing a major review of the osmtest.
This patch is fixing a few bugs in osmtest where failures
were ignored. More precisely, osmtest was expecting error,
but got IB_SUCCESS and ignored the fact that it should have
gotten an error.
There are also a few changes to improve the code and osmtest
log readability.
More patches expected.

This patch is for trunk only.

I tested applying this patch before sending it. If you get the
patch rejected again - let me know.

Thanks.

Yevgeny

Signed-off-by:  Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>

Index: osmtest/include/osmtest.h
===================================================================
--- osmtest/include/osmtest.h   (revision 9552)
+++ osmtest/include/osmtest.h   (working copy)
@@ -506,4 +506,13 @@ ib_api_status_t
  osmtest_get_local_port_lmc( IN osmtest_t * const p_osmt,
                              IN ib_net16_t  lid,
                              OUT uint8_t *  const p_lmc );
+
+
+/*
+ * A few auxiliary macros for logging
+ */
+
+#define EXPECTING_ERRORS_START "[[ ===== Expecting Errors - START ===== "
+#define EXPECTING_ERRORS_END   "   ===== Expecting Errors  -  END ===== ]]"
+
  #endif /* _OSMTEST_H_ */
Index: osmtest/osmtest.c
===================================================================
--- osmtest/osmtest.c   (revision 9552)
+++ osmtest/osmtest.c   (working copy)
@@ -552,6 +552,7 @@ osmtest_init( IN osmtest_t * const p_osm
      osm_log( &p_osmt->log, OSM_LOG_ERROR,
               "osmtest_init: ERR 0001: "
               "Unable to allocate vendor object" );
+    status = IB_ERROR;
      goto Exit;
    }

@@ -1817,6 +1818,11 @@ osmtest_wrong_sm_key_ignored( IN osmtest
      osm_log( &p_osmt->log, OSM_LOG_ERROR,
               "osmtest_wrong_sm_key_ignored: ERR 0011: "
               "Did not get a timeout but got (%s)\n", ib_get_err_str( status ) );
+    if ( status == IB_SUCCESS )
+    {
+      /* assign some error value to status, since IB_SUCCESS is a bad rc */
+      status = IB_ERROR;
+    }
      goto Exit;
    }
    else
@@ -5448,14 +5454,23 @@ osmtest_validate_against_db( IN osmtest_

    memset( &context, 0, sizeof( context ) );
    memset( &request, 0, sizeof( request ) );
+
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_START "\n" );
    status = osmtest_get_multipath_rec( p_osmt, &request, &context );
+  if( status != IB_SUCCESS )
+  {
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+              "osmtest_get_multipath_rec: "
+              "Got error %s\n", ib_get_err_str(status) );
+  }
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_END "\n" );
+
    if( status == IB_SUCCESS )
-    goto Exit;
-  else
    {
-    osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmtest_get_multipath_rec: "
-             "IS EXPECTED ERROR ^^^^\n");
+    status = IB_ERROR;
+    goto Exit;
    }

    memset( &context, 0, sizeof( context ) );
@@ -5463,14 +5478,23 @@ osmtest_validate_against_db( IN osmtest_
    request.comp_mask = IB_MPR_COMPMASK_SGIDCOUNT;
    request.sgid_count = 1;
    ib_gid_set_default( &request.gids[0], portguid );
+
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_START "\n" );
    status = osmtest_get_multipath_rec( p_osmt, &request, &context );
-  if( status == IB_SUCCESS )
-    goto Exit;
-  else
+  if( status != IB_SUCCESS )
    {
-    osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmtest_get_multipath_rec: "
-             "IS EXPECTED ERROR ^^^^\n");
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+              "osmtest_get_multipath_rec: "
+              "Got error %s\n", ib_get_err_str(status) );
+  }
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_END "\n" );
+
+  if( status == IB_SUCCESS )
+  {
+    status = IB_ERROR;
+    goto Exit;
    }

    memset( &context, 0, sizeof( context ) );
@@ -5482,14 +5506,23 @@ osmtest_validate_against_db( IN osmtest_
    /* Set IPoIB broadcast MGID */
    request.gids[1].unicast.prefix = CL_HTON64(0xff12401bffff0000ULL);
    request.gids[1].unicast.interface_id = CL_HTON64(0x00000000ffffffffULL);
+
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_START "\n" );
    status = osmtest_get_multipath_rec( p_osmt, &request, &context );
+  if( status != IB_SUCCESS )
+  {
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+              "osmtest_get_multipath_rec: "
+              "Got error %s\n", ib_get_err_str(status) );
+  }
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_END "\n" );
+
    if( status == IB_SUCCESS )
-    goto Exit;
-  else
    {
-    osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmtest_get_multipath_rec: "
-             "IS EXPECTED ERROR ^^^^\n");
+    status = IB_ERROR;
+    goto Exit;
    }

    memset( &context, 0, sizeof( context ) );
@@ -5500,14 +5533,23 @@ osmtest_validate_against_db( IN osmtest_
    request.gids[0].unicast.prefix = CL_HTON64(0xff12401bffff0000ULL);
    request.gids[0].unicast.interface_id = CL_HTON64(0x00000000ffffffffULL);
    ib_gid_set_default( &request.gids[1], portguid );
+
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_START "\n" );
    status = osmtest_get_multipath_rec( p_osmt, &request, &context );
+  if( status != IB_SUCCESS )
+  {
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+              "osmtest_get_multipath_rec: "
+              "Got error %s\n", ib_get_err_str(status) );
+  }
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_END "\n" );
+
    if( status == IB_SUCCESS )
-    goto Exit;
-  else
    {
-    osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmtest_get_multipath_rec_gid_ipoib_bcast: "
-             "IS EXPECTED ERROR ^^^^\n");
+    status = IB_ERROR;
+    goto Exit;
    }

    memset( &context, 0, sizeof( context ) );
@@ -5569,14 +5611,23 @@ osmtest_validate_against_db( IN osmtest_
      goto Exit;

    memset( &context, 0, sizeof( context ) );
+
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_START "\n" );
    status = osmtest_get_pkeytbl_rec_by_lid( p_osmt, test_lid, 0, &context );
-  if ( status == IB_SUCCESS )
-    goto Exit;
-  else
+  if( status != IB_SUCCESS )
    {
-    osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmtest_get_pkeytbl_rec_by_lid: "
-             "IS EXPECTED ERROR ^^^^\n");
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+              "osmtest_get_multipath_rec: "
+              "Got error %s\n", ib_get_err_str(status) );
+  }
+  osm_log( &p_osmt->log, OSM_LOG_ERROR,
+           "osmtest_get_multipath_rec: " EXPECTING_ERRORS_END "\n" );
+
+  if( status == IB_SUCCESS )
+  {
+    status = IB_ERROR;
+    goto Exit;
    }

    memset( &context, 0, sizeof( context ) );
@@ -5679,26 +5730,43 @@ osmtest_validate_against_db( IN osmtest_
          goto Exit;

        memset( &context, 0, sizeof( context ) );
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmtest_get_path_rec_by_lid_pair: " EXPECTING_ERRORS_START "\n" );
        status = osmtest_get_path_rec_by_lid_pair( p_osmt, 0xffff,
                                                   0xffff, &context );
-      if (status == IB_SUCCESS )
-        goto Exit;
-      else
+      if( status != IB_SUCCESS )
        {
-        osm_log ( &p_osmt->log, OSM_LOG_ERROR,
+         osm_log( &p_osmt->log, OSM_LOG_ERROR,
                    "osmtest_get_path_rec_by_lid_pair: "
-                  "IS EXPECTED ERROR ^^^^\n" );
+                  "Got error %s\n", ib_get_err_str(status) );
+      }
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmtest_get_path_rec_by_lid_pair: " EXPECTING_ERRORS_END "\n" );
+
+      if( status == IB_SUCCESS )
+      {
+        status = IB_ERROR;
+        goto Exit;
        }

+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmtest_get_path_rec_by_lid_pair: " EXPECTING_ERRORS_START "\n" );
+
        status = osmtest_get_path_rec_by_lid_pair( p_osmt, test_lid,
                                                   0xffff, &context );
-      if (status == IB_SUCCESS )
-        goto Exit;
-      else
+      if( status != IB_SUCCESS )
        {
-        osm_log ( &p_osmt->log, OSM_LOG_ERROR,
+         osm_log( &p_osmt->log, OSM_LOG_ERROR,
                    "osmtest_get_path_rec_by_lid_pair: "
-                  "IS EXPECTED ERROR ^^^^\n" );
+                  "Got error %s\n", ib_get_err_str(status) );
+      }
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmtest_get_path_rec_by_lid_pair: " EXPECTING_ERRORS_END "\n" );
+
+      if( status == IB_SUCCESS )
+      {
+        status = IB_ERROR;
+        goto Exit;
        }
      }
    }
@@ -7141,6 +7209,9 @@ osmtest_run( IN osmtest_t * const p_osmt

    if( p_osmt->opt.flow == 1 )
    {
+    /*
+     * Creating an inventory file with all nodes, ports and paths
+     */
      status = osmtest_create_inventory_file( p_osmt );
      if( status != IB_SUCCESS )
      {
@@ -7155,6 +7226,9 @@ osmtest_run( IN osmtest_t * const p_osmt
    {
      if( p_osmt->opt.flow == 5 )
      {
+      /*
+       * Stress SA - flood the it with queries
+       */
        switch ( p_osmt->opt.stress )
        {
          case 0:
@@ -7215,8 +7289,11 @@ osmtest_run( IN osmtest_t * const p_osmt
        /*
         * Run normal validition tests.
         */
-       if (!p_osmt->opt.flow || p_osmt->opt.flow == 2)
+       if (p_osmt->opt.flow == 0 || p_osmt->opt.flow == 2)
         {
+         /*
+          * Only validate the given inventory file
+          */
           status = osmtest_create_db( p_osmt );
           if( status != IB_SUCCESS )
           {
@@ -7238,7 +7315,7 @@ osmtest_run( IN osmtest_t * const p_osmt
           }
         }

-       if (!p_osmt->opt.flow)
+       if (p_osmt->opt.flow == 0)
         {
           status = osmtest_wrong_sm_key_ignored( p_osmt );
           if( status != IB_SUCCESS )
@@ -7251,8 +7328,11 @@ osmtest_run( IN osmtest_t * const p_osmt
           }
         }

-       if (!p_osmt->opt.flow || p_osmt->opt.flow == 3)
+       if (p_osmt->opt.flow == 0 || p_osmt->opt.flow == 3)
         {
+         /*
+          * run service registration, deregistration, and lease test
+          */
           status = osmt_run_service_records_flow( p_osmt );
           if( status != IB_SUCCESS )
           {
@@ -7264,8 +7344,11 @@ osmtest_run( IN osmtest_t * const p_osmt
           }
         }

-       if (!p_osmt->opt.flow || p_osmt->opt.flow == 4)
+       if (p_osmt->opt.flow == 0 || p_osmt->opt.flow == 4)
         {
+          /*
+           * Run event forwarding test
+           */
  #ifdef OSM_VENDOR_INTF_MTL
            status = osmt_run_inform_info_flow( p_osmt );

@@ -7286,12 +7369,13 @@ osmtest_run( IN osmtest_t * const p_osmt
  #endif
          }

-        /*
-         * since it generates a huge file, we run it only
-         * if explicitly required to
-         */
          if (p_osmt->opt.flow == 7)
          {
+          /*
+           * QoS info: dump VLArb and SLtoVL tables.
+           * Since it generates a huge file, we run it only
+           * if explicitly required to
+           */
            status = osmtest_create_db( p_osmt );
            if( status != IB_SUCCESS )
            {
@@ -7315,6 +7399,9 @@ osmtest_run( IN osmtest_t * const p_osmt

          if (p_osmt->opt.flow == 8)
          {
+          /*
+           * Run trap 64/65 flow
+           */
  #ifdef OSM_VENDOR_INTF_MTL
            status = osmt_run_trap64_65_flow( p_osmt  );
            if( status != IB_SUCCESS )
@@ -7334,8 +7421,11 @@ osmtest_run( IN osmtest_t * const p_osmt
  #endif
          }

-        if (!p_osmt->opt.flow || p_osmt->opt.flow == 6)
+        if (p_osmt->opt.flow == 0 || p_osmt->opt.flow == 6)
          {
+          /*
+           * Multicast flow
+           */
            status = osmt_run_mcast_flow( p_osmt );
            if( status != IB_SUCCESS )
            {





More information about the general mailing list