New development-and-diagnostics tool in Rhino 2.3.1.12
SBB Diagnostics lets you pull service-defined diagnostic information from SBB objects at runtime. You can use the For an SBB to provide this diagnostics information, it must implement one of these methods:
|
|
To get detailed diagnostics information about an SBB entity, use the following rhino-console command or related MBean operation.
Console command: getsbbdiagnostics
Command |
getsbbdiagnostics <serviceid> <sbbid> <sbb pkeys>* Description Get SBB info and diagnostics (if supported by sbb implementation). |
---|---|
Example |
To display information for SBB entity $ ./rhino-console getsbbdiagnostics name=sentinel.sip,vendor=OpenCloud,version=1.0 name=sentinel.sip,vendor=OpenCloud,version=1.0 101:146698001375232/-815184026 parent-pkey : pkey : 101:146698001375232/-815184026 convergence-name : APK[ah=19,id=101:146697745919051]:::::-1 creating-node-id : 101 creation-time : 20131203 14:01:43 priority : 0 replicated : false sbb-component-id : SbbID[name=sentinel.sip,vendor=OpenCloud,version=1.0] service-component-id : ServiceID[name=sentinel.sip,vendor=OpenCloud,version=1.0] attached-activities : > pkey handle ra-entity replicated > -- -- -- ----------- > 13.101:146697745919051.0 SessionAH[3] sip-sis-ra false > 1 rows SBB diagnostics: SentinelSipFeatureAndOcsSbbSupportImpl Child SBBs ================================================= SubscriberDataLookup SBB: No diagnostics available for this feature sbb. SipAdhocConference SBB: No child SBB currently exists for SipAdhocConference. DiameterRoOcs SBB: DiameterRoOcsMultiFsmSbb Service FSM States =========================================== DiameterIECFSM [current state = NotCharging, InputRegister[scheduled=[], execution=[]], Endpoints[Endpoint[local],Endpoint[DiameterMediation],Endpoint[DiameterToOcs]]] DiameterSCURFSM [previous state = WaitForInitialCreditCheckAnswer, current state = WaitForNextCreditControlRequest, InputRegister[scheduled=[local_errorsEndSession], execution=[]], Endpoints[Endpoint[local],Endpoint[DiameterMediation],Endpoint[DiameterToOcs,aci=[set,sbb-attached]]]] SentinelSipSessionStateAggregate Session State ============================================== Account: 6325 ActivityTestHasFailed: false AllowPresentationOfDivertedToUriToOriginatingUser: false AllowPresentationOfServedUserUriToDivertedToUser: false AllowPresentationOfServedUserUriToOriginatingUser: false AnnouncementCallIds: null AnnouncementID: 0 AnytimeFreeDataPromotionActive: false CFNRTimerDuration: 0 CallHasBeenDiverted: false CallType: MobileOriginating CalledPartyAddress: tel:34600000001 CalledPartyCallId: null CallingPartyAddress: tel:34600000002 CallingPartyCallId: null ChargingResult: 2001 ClientChargingType: sessionCharging ClientEventChargingMethod: null ClosedUserGroupCall: null ClosedUserGroupDropIfNoGroupMatch: null ClosedUserGroupEnabled: true ClosedUserGroupIncomingAccessAllowed: null ClosedUserGroupList: [CUG1Profile] ClosedUserGroupOutgoingAccessAllowed: null ... etc. This command returns a snapshot of the SBB entity’s state and SBB-defined diagnostics information at the time you execute it.
Some values (such as The diagnostics output (from the "SBB diagnostics:" line onwards) is free-form and SBB defined. The above output is only representative of a single service-defined diagnostics method. |
See SBB Entity Information Fields for a description of the fields getsbbdiagnostics returns.
|
MBean operation: getSbbDiagnostics
MBean |
|
---|---|
Rhino operation |
public CompositeData getSbbDiagnostics(ServiceID serviceID, SbbID sbbID, String sbbPKey) throws ManagementException, InvalidPKeyException, UnrecognizedSbbException, UnrecognizedServiceException, UnknownSbbEntityException; This operation returns tabular data with detailed information on the given SBB entity, including SBB-defined diagnostics information. |
For a description of the format of the tabular data that this operation returns, see the javadoc .
|
Example usage
The following is a basic example showing an auto-generated ocGetSbbDiagnostics(StringBuilder sb)
method.
In this case, the method was generated based on CMP fields declared by the SBB, and demonstrates diagnostics information being obtained from both the current class and the super class:
---
public abstract class ExampleSessionStateImpl extends com.opencloud.sentinel.ant.BaseSbb implements ExampleSessionState {
public void ocGetSbbDiagnostics(StringBuilder sb) {
final String header = "ExampleSessionState Session State";
sb.append(header).append("\n");
for (int i=0; i < header.length(); i++)
sb.append("=");
sb.append("\n\n");
// diagnostics: ClashingType (from com.opencloud.sentinel.ant.ExampleSessionStateInterface)
if (getClashingType() == null) {
sb.append("ClashingType: null\n");
} else {
sb.append("ClashingType: ").append(getClashingType()).append("\n");
}
// diagnostics: ExampleField (from com.opencloud.sentinel.ant.ExampleSessionStateInterface)
if (getExampleField() == null) {
sb.append("ExampleField: null\n");
} else {
sb.append("ExampleField: ").append(getExampleField()).append("\n");
}
sb.append("\n");
super.ocGetSbbDiagnostics(sb);
}
...
---