[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:55:12 PST 2006


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 

Thanks. Applied (after fixing up the whitespace and adapting to the
latest osmtest/osmtest.c). Some additional comments below:

> +++++++++++++++++++++++++++++++++++++++++++++++-
>  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,
> -                       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;
> +  }

Dang; missed that again...  Yevgeny spanked me on this before...

>    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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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");
                                          subscriber_enum
>    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 "
                                           ^^^^^^^^^^
                                           InformInfo
> +           "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 ) );

-- Hal





More information about the general mailing list