[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