[openib-general] [PATCH] osm: fix osmtest InformInfo flow to return error when expected error does not happen

Hal Rosenstock halr at voltaire.com
Thu Dec 21 12:42:51 PST 2006


Hi again Eitan,

On Thu, 2006-12-21 at 14:40, Hal Rosenstock wrote:
> Hi Eitan,
> 
> On Thu, 2006-12-21 at 14:16, Eitan Zahavi wrote:
> > Hi Hal,
> > 
> > I have found that on BAD InformInfo transactions when the osmtest 
> > expects an error from the SM
> > it misses returning an error to the calling procedure which will make 
> > osmtest pass the test.
> > 
> > EZ
> > Signed-off-by: Eitan Zahavi <eitan at mellanox.co.il>
> > 
> > ---
> >  osm/osmtest/osmtest.c |   50 
> > +++++++++++++++++++++++++++++++++++++++++++++++-
> >  1 files changed, 48 insertions(+), 2 deletions(-)
> > 
> > diff --git a/osm/osmtest/osmtest.c b/osm/osmtest/osmtest.c
> > index b1df333..e1c64ef 100644
> > --- a/osm/osmtest/osmtest.c
> > +++ b/osm/osmtest/osmtest.c
> > @@ -5813,14 +5813,20 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* InformInfoRecord tests */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a BAD - Set Unsubscribe request\n"); 
> >    memset( &inform_info_opt, 0, sizeof( inform_info_opt ) );
> >    memset( &inform_info_rec_opt, 0, sizeof( inform_info_rec_opt ) );
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, 
> > IB_MAD_ATTR_INFORM_INFO_RECORD,
> 
> This patch is line wrapped here (and maybe other places as well) :-(

Never mind. I nursed it through. Other comments to follow...

-- Hal

> -- Hal
> 
> > -                       IB_MAD_METHOD_SET, &inform_info_rec_opt,
> > +                                       IB_MAD_METHOD_SET, 
> > &inform_info_rec_opt,
> >                                         &context );
> >    if ( status == IB_SUCCESS )
> > +  {
> > +    status = IB_ERROR;
> >      goto Exit;
> > +  }
> >    else
> >    {
> >      osm_log( &p_osmt->log, OSM_LOG_ERROR,
> > @@ -5828,20 +5834,30 @@ osmtest_validate_against_db( IN osmtest_
> >               "IS EXPECTED ERROR ^^^^\n");
> >    }
> >  
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +              "osmtest_informinfo_request: InformInfoRecord "
> > +              "Sending a Good - Empty GetTable request\n"); 
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, 
> > IB_MAD_ATTR_INFORM_INFO_RECORD,
> > -                       IB_MAD_METHOD_GETTABLE,
> > +                                                    IB_MAD_METHOD_GETTABLE,
> >                                         &inform_info_rec_opt, &context );
> >    if ( status != IB_SUCCESS )
> >      goto Exit;
> >  
> >    /* InformInfo tests */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a BAD - Empty Get request "
> > +           "(should fail with NO_RECORDS)\n"); 
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, IB_MAD_ATTR_INFORM_INFO,
> >                                         IB_MAD_METHOD_GET, &inform_info_opt,
> >                                         &context );
> >    if ( status == IB_SUCCESS )
> > +  {
> > +    status = IB_ERROR;
> >      goto Exit;
> > +  }
> >    else
> >    {
> >      osm_log( &p_osmt->log, OSM_LOG_ERROR,
> > @@ -5849,12 +5865,18 @@ osmtest_validate_against_db( IN osmtest_
> >               "IS EXPECTED ERROR ^^^^\n");
> >    }
> >  
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a BAD - Set Unsubscribe request\n"); 
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, IB_MAD_ATTR_INFORM_INFO,
> >                                         IB_MAD_METHOD_SET, &inform_info_opt,
> >                                         &context );
> >    if ( status == IB_SUCCESS )
> > +  {
> > +    status = IB_ERROR;
> >      goto Exit;
> > +  }
> >    else
> >    {
> >      osm_log( &p_osmt->log, OSM_LOG_ERROR,
> > @@ -5863,6 +5885,9 @@ osmtest_validate_against_db( IN osmtest_
> >    }
> >  
> >    /* Now subscribe */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - Set Subscribe request\n");
> >    inform_info_opt.subscribe = TRUE;
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, IB_MAD_ATTR_INFORM_INFO,
> > @@ -5872,6 +5897,9 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* Now unsubscribe (QPN needs to be 1 to work) */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - Set Unsubscribe request\n");
> >    inform_info_opt.subscribe = FALSE;
> >    inform_info_opt.qpn = 1;
> >    memset( &context, 0, sizeof( context ) );
> > @@ -5882,6 +5910,9 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* Now subscribe again */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - Set Subscribe request\n");
> >    inform_info_opt.subscribe = TRUE;
> >    inform_info_opt.qpn = 1;
> >    memset( &context, 0, sizeof( context ) );
> > @@ -5892,6 +5923,9 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* Subscribe over existing subscription */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - Set Subscribe (again) request\n");
> >    inform_info_opt.qpn = 0;
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, IB_MAD_ATTR_INFORM_INFO,
> > @@ -5902,6 +5936,9 @@ osmtest_validate_against_db( IN osmtest_
> >  
> >    /* More InformInfoRecord tests */
> >    /* RID lookup (with currently invalid enum) */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - GetTable by GID\n");
> >    ib_gid_set_default( &inform_info_rec_opt.subscriber_gid,
> >                        p_osmt->local_port.port_guid );
> >    inform_info_rec_opt.subscriber_enum = 1;
> > @@ -5913,6 +5950,9 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* Enum lookup */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - GetTable (subsriber_enum == 0) request\n");
> >    inform_info_rec_opt.subscriber_enum = 0;
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, 
> > IB_MAD_ATTR_INFORM_INFO_RECORD,
> > @@ -5922,6 +5962,9 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* Get all InformInfoRecords */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - GetTable (ALL records) request\n");
> >    memset( &inform_info_rec_opt, 0, sizeof( inform_info_rec_opt ) );
> >    memset( &context, 0, sizeof( context ) );
> >    status = osmtest_informinfo_request( p_osmt, 
> > IB_MAD_ATTR_INFORM_INFO_RECORD,
> > @@ -5931,6 +5974,9 @@ osmtest_validate_against_db( IN osmtest_
> >      goto Exit;
> >  
> >    /* Cleanup subscriptions before further testing */
> > +  osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
> > +           "osmtest_informinfo_request: InformInfoRecord "
> > +           "Sending a Good - Set (cleanup all of them) request\n");
> >    inform_info_opt.subscribe = FALSE;
> >    inform_info_opt.qpn = 1;
> >    memset( &context, 0, sizeof( context ) );
> 
> 
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
> 
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
> 





More information about the general mailing list