Hi, Any info updated for testing this patch? Thanks
BR/Minh On 4/18/2014 9:34 PM, Nagendra Kumar wrote: > Hi, > We have some failed test cases with this patch. Most probably, this > would be because of our configuration problem. We will get back early next > week. Can you please hold on this patch. > > Thanks > -Nagu > >> -----Original Message----- >> From: Nagendra Kumar >> Sent: 18 April 2014 15:41 >> To: Minh Hon Chau; [email protected]; [email protected] >> Cc: [email protected] >> Subject: Re: [devel] [PATCH 1 of 1] >> >> Ack with minor comment : >> >> + TRACE_1("su'%s', current number of active SIs'%u'", >> + su->name.value, su->saAmfSUNumCurrActiveSIs); >> >> Should be >> + TRACE_1("su'%s', current number of active SIs'%u', >> + standbySIs'%u"", su->name.value, su->saAmfSUNumCurrActiveSIs, >> su->saAmfSUNumCurrStandbySIs); >> >> >> Thanks >> -Nagu >> >>> -----Original Message----- >>> From: Minh Hon Chau [mailto:[email protected]] >>> Sent: 07 April 2014 12:10 >>> To: Nagendra Kumar; [email protected]; >>> [email protected] >>> Cc: [email protected] >>> Subject: [PATCH 1 of 1] >>> >>> osaf/services/saf/amf/amfd/include/sg.h | 2 +- >>> osaf/services/saf/amf/amfd/sg.cc | 21 +++++++++++++++++++++ >>> osaf/services/saf/amf/amfd/sg_nway_fsm.cc | 27 >>> +++++++++++++++++++++++++++ >>> osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc | 24 >>> ++++++++++++++++++++++++ >>> 4 files changed, 73 insertions(+), 1 deletions(-) >>> >>> >>> # >>> #Problem: The implementation has not respected the AMF spec #according >>> to the configuration of saAmfSGNumPrefAssignedSUs # >>> #Analysis: In AMF spec, the 3.6.4.3 and 3.6.5.3 mention that the >>> #saAmfSGNumPrefAssignedSUs affected in assignment in nway and >>> #nway-active sg # >>> #Change: Skip the SI assignment for the unassigned SU if the #current >>> number of assigned SU exceeding the saAmfSGNumPrefAssignedSUs >>> >>> diff --git a/osaf/services/saf/amf/amfd/include/sg.h >>> b/osaf/services/saf/amf/amfd/include/sg.h >>> --- a/osaf/services/saf/amf/amfd/include/sg.h >>> +++ b/osaf/services/saf/amf/amfd/include/sg.h >>> @@ -356,6 +356,6 @@ extern void avd_su_role_failover(struct extern >>> bool sg_is_tolerance_timer_running_for_any_si(AVD_SG *sg); extern >>> void avd_sg_adjust_config(AVD_SG *sg); extern uint32_t >>> sg_instantiated_su_count(const AVD_SG *sg); >>> - >>> +extern uint32_t sg_assigned_su_count(const AVD_SG *sg); >>> >>> #endif >>> diff --git a/osaf/services/saf/amf/amfd/sg.cc >>> b/osaf/services/saf/amf/amfd/sg.cc >>> --- a/osaf/services/saf/amf/amfd/sg.cc >>> +++ b/osaf/services/saf/amf/amfd/sg.cc >>> @@ -1617,3 +1617,24 @@ uint32_t sg_instantiated_su_count(const >>> return inst_su_count; >>> } >>> >>> +/** >>> + * @brief Counts number of assigned su in the sg. >>> + * @param Service Group >>> + * >>> + * @return Number of assigned su in the sg. >>> + */ >>> +uint32_t sg_assigned_su_count(const AVD_SG *sg) { >>> + uint32_t su_count; >>> + const AVD_SU *su; >>> + >>> + for (su = sg->list_of_su, su_count = 0; su != NULL; su = >>> + su->sg_list_su_next) >>> { >>> + TRACE_1("su'%s', current number of active SIs'%u'", >>> + su->name.value, >>> su->saAmfSUNumCurrActiveSIs); >>> + if (su->saAmfSUNumCurrActiveSIs > 0 || su- >>>> saAmfSUNumCurrStandbySIs > 0) { >>> + su_count++; >>> + } >>> + } >>> + >>> + return su_count; >>> +} >>> + >>> diff --git a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc >>> b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc >>> --- a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc >>> +++ b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc >>> @@ -1318,6 +1318,13 @@ AVD_SU *avd_sg_nway_get_su_std_equal(AVD >>> (curr_su->saAmfSUNumCurrStandbySIs >= >>> curr_su->sg_of_su->saAmfSGMaxStandbySIsperSU))) >>> continue; >>> >>> + /* Do not pick up unassigned su if current number of assigned >>> su >>> + * exceeds the saAmfSGNumPrefAssignedSUs >>> + */ >>> + if ((sg_assigned_su_count(curr_su->sg_of_su) >= curr_su- >>>> sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (curr_su->saAmfSUNumCurrActiveSIs == 0) && >>> (curr_su->saAmfSUNumCurrStandbySIs == 0)) >>> + continue; >>> + >>> l_flag = true; >>> >>> /* Get the current no of Standby assignments on the su */ @@ >>> -1508,6 +1515,14 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB >>> if (!curr_su) >>> continue; >>> >>> + /* Do not pick up unassigned su if current number of >>> assigned su >>> + * exceeds the saAmfSGNumPrefAssignedSUs >>> + */ >>> + if ((sg_assigned_su_count(curr_su->sg_of_su) >= >>> curr_su->sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (curr_su->saAmfSUNumCurrActiveSIs == 0) >>> && (curr_su->saAmfSUNumCurrStandbySIs == 0)) { >>> + curr_su = 0; >>> + continue; >>> + } >>> if ((curr_su->saAmfSuReadinessState == >>> SA_AMF_READINESS_IN_SERVICE) && >>> ((curr_su->sg_of_su->saAmfSGMaxActiveSIsperSU >>> == 0) || >>> (curr_su->saAmfSUNumCurrActiveSIs < curr_su- >>>> sg_of_su->saAmfSGMaxActiveSIsperSU))) >>> @@ -1525,6 +1540,10 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB >>> for (curr_su = sg->list_of_su; curr_su; curr_su = >>> curr_su->sg_list_su_next) { >>> if (SA_AMF_READINESS_IN_SERVICE == >>> curr_su->saAmfSuReadinessState) { >>> is_all_su_oos = false; >>> + if ((sg_assigned_su_count(curr_su- >>>> sg_of_su) >= curr_su->sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (curr_su- >>>> saAmfSUNumCurrActiveSIs == 0) && (curr_su- >>> saAmfSUNumCurrStandbySIs >>> == 0)) >>> + continue; >>> + >>> /* if equal distribution is needed when >> all SUs are of >>> * equal rank or no rank configured for >> any of the SU >>> */ >>> @@ -1614,6 +1633,10 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB >>> (curr_su->saAmfSUNumCurrStandbySIs >= curr_su- >>>> sg_of_su->saAmfSGMaxStandbySIsperSU))) >>> continue; >>> >>> + if ((sg_assigned_su_count(curr_su->sg_of_su) >= >>> curr_su->sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (curr_su->saAmfSUNumCurrActiveSIs == 0) >>> && (curr_su->saAmfSUNumCurrStandbySIs == 0)) >>> + continue; >>> + >>> /* verify if this su does not have this assignment */ >>> if (avd_su_susi_find(cb, curr_su, &curr_si->name) != >>> AVD_SU_SI_REL_NULL) >>> continue; >>> @@ -1677,6 +1700,10 @@ uint32_t avd_sg_nway_si_assign(AVD_CL_CB >>> (curr_su- >>>> saAmfSUNumCurrStandbySIs >= curr_su->sg_of_su- >>>> saAmfSGMaxStandbySIsperSU))) >>> continue; >>> >>> + if ((sg_assigned_su_count(curr_su->sg_of_su) >= >>> curr_su->sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (curr_su->saAmfSUNumCurrActiveSIs == 0) >>> && (curr_su->saAmfSUNumCurrStandbySIs == 0)) >>> + continue; >>> + >>> su_found = true; >>> >>> /* verify if this su does not have this assignment */ >>> diff >> --git >>> a/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc >>> b/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc >>> --- a/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc >>> +++ b/osaf/services/saf/amf/amfd/sg_nwayact_fsm.cc >>> @@ -105,6 +105,14 @@ AVD_SU *avd_sg_nacvred_su_chose_asgn(AVD >>> continue; >>> } >>> >>> + /* Do not pick up unassigned su if current number of >>> assigned su >>> + * exceeds the saAmfSGNumPrefAssignedSUs >>> + */ >>> + if ((sg_assigned_su_count(i_su->sg_of_su) >= i_su- >>>> sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (i_su->saAmfSUNumCurrActiveSIs == 0)) { >>> + i_su = i_su->sg_list_su_next; >>> + continue; >>> + } >>> if (avd_su_susi_find(cb, i_su, &i_si->name) >>> != AVD_SU_SI_REL_NULL) { >>> /* This SU has already a assignment for this SI >> go to the @@ >>> -145,6 +153,12 @@ AVD_SU *avd_sg_nacvred_su_chose_asgn(AVD >>> continue; >>> } >>> >>> + if ((sg_assigned_su_count(i_su->sg_of_su) >= i_su- >>>> sg_of_su->saAmfSGNumPrefAssignedSUs) && >>> + (i_su->saAmfSUNumCurrActiveSIs == 0)) { >>> + i_su = i_su->sg_list_su_next; >>> + continue; >>> + } >>> + >>> l_flag = true; >>> >>> if (m_AVD_SI_ACTV_MAX_SU(i_si) <= >>> m_AVD_SI_ACTV_CURR_SU(i_si)) { >>> @@ -1998,6 +2012,16 @@ static AVD_SU *avd_get_qualified_su(AVD_ >>> i_su = i_su->sg_list_su_next; >>> continue; >>> } >>> + >>> + /* Do not pick up unassigned su if current number of assigned >>> su >>> + * exceeds the saAmfSGNumPrefAssignedSUs >>> + */ >>> + if ((sg_assigned_su_count(i_su->sg_of_su) >= i_su->sg_of_su- >>>> saAmfSGNumPrefAssignedSUs) && >>> + (i_su->saAmfSUNumCurrActiveSIs == 0)) { >>> + i_su = i_su->sg_list_su_next; >>> + continue; >>> + } >>> + >>> l_flag = true; >>> if (avd_su_susi_find(avd_cb, i_su, &i_si->name) != >>> AVD_SU_SI_REL_NULL) { >>> /* This SU has already a assignment for this SI go to >>> the >> ------------------------------------------------------------------------------ >> Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the >> definitive new guide to graph databases and their applications. Written by >> three >> acclaimed leaders in the field, this first edition is now available. >> Download your >> free book today! >> http://p.sf.net/sfu/NeoTech >> _______________________________________________ >> Opensaf-devel mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
