[sipana commit] r200 - Revision of SIPPerformanceMetrics.

0 views
Skip to first unread message

codesite...@google.com

unread,
May 17, 2009, 6:03:39 AM5/17/09
to sipana...@googlegroups.com
Author: marcoshack
Date: Sat May 16 23:52:28 2009
New Revision: 200

Added:
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/

trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/SIPPerformanceMetrics.java
(contents, props changed)
- copied, changed from r195,
/trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetrics.java

trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/SIPPerformanceMetricsBean.java
(contents, props changed)
- copied, changed from r195,
/trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java
Removed:

trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetrics.java

trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java
Modified:

trunk/sipana-server-ejb/src/main/java/org/sipana/server/service/Service.java

trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java

Log:
Revision of SIPPerformanceMetrics.

Revision of SIPPerformanceMetrics methods to reflect the metrics defined in
the version 3 of the SIP End-to-End Performance Metrics version 3.

Modified:
trunk/sipana-server-ejb/src/main/java/org/sipana/server/service/Service.java
==============================================================================
---
trunk/sipana-server-ejb/src/main/java/org/sipana/server/service/Service.java
(original)
+++
trunk/sipana-server-ejb/src/main/java/org/sipana/server/service/Service.java
Sat May 16 23:52:28 2009
@@ -17,7 +17,7 @@

import org.sipana.server.dao.SIPMessageManagerBean;
import org.sipana.server.dao.SIPSessionManagerBean;
-import org.sipana.server.sip.SIPPerformanceMetricsBean;
+import org.sipana.server.sip.metric.SIPPerformanceMetricsBean;


public interface Service {

Copied:
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/SIPPerformanceMetrics.java
(from r195,
/trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetrics.java)
==============================================================================
---
/trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetrics.java
(original)
+++
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/SIPPerformanceMetrics.java
Sat May 16 23:52:28 2009
@@ -13,16 +13,17 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-package org.sipana.server.sip;
+package org.sipana.server.sip.metric;

import java.util.List;
import javax.ejb.Local;
import org.sipana.protocol.sip.SIPSession;;

/**
- *
+ * Based in the Internet-Draft "SIP End-to-End Performance Metrics"
version 3.
+ *
* @author mhack
- * @see http://tools.ietf.org/html/draft-malas-performance-metrics
+ * @see http://tools.ietf.org/html/draft-ietf-pmol-sip-perf-metrics-03
*/

@Local
@@ -30,7 +31,7 @@
{

/**
- * 3.1. Registration Request Delay (RRD)
+ * Item 4.1. Registration Request Delay (RRD)
*
* @param session
* @return
@@ -38,15 +39,25 @@
public long getRegistrationRequestDelay(SIPSession session);

/**
- * 3.1. Average Registration Request Delay (ARRD)
+ * Average Registration Request Delay (ARRD)
*
* @param sessionList
* @return
*/
- public long getAvgRegistrationRequestDelay(List<SIPSession>
sessionList);
+ public double getAvgRegistrationRequestDelay(List<SIPSession>
sessionList);

/**
- * 3.2. Session Request Delay (SRD)
+ * Item 4.2. Ineffective Registration Attempts (IRA)
+ *
+ * @param sessionList
+ * @return Percentage of the number of failed by the total of
Registration
+ * attempts.
+ */
+ public double getIneffectiveRegistrationAttempts(
+ List<SIPSession> sessionList);
+
+ /**
+ * Item 4.3. Session Request Delay (SRD)
*
* @param session
* @return
@@ -54,15 +65,16 @@
public long getSessionRequestDelay(SIPSession session);

/**
- * 3.2. Average Session Request Delay (SRD)
+ * Average Session Request Delay (ASRD)
*
* @param sessionList
* @return
*/
- public long getAvgSessionRequestDelay(List<SIPSession> sessionList);
+ public double getAvgSessionRequestDelay(List<SIPSession> sessionList);
+

/**
- * 3.3. Session Disconnect Delay (SDD)
+ * Item 4.4. Session Disconnect Delay (SDD)
*
* @param session
* @return
@@ -70,7 +82,7 @@
public long getSessionDisconnectDelay(SIPSession session);

/**
- * 3.3. Average Session Disconnect Delay (SDD)
+ * Average Session Disconnect Delay (ASDD)
*
* @param sessionList
* @return
@@ -78,7 +90,7 @@
public long getAvgSessionDisconnectDelay(List<SIPSession> sessionList);

/**
- * 3.4. Session Duration Time (SDT)
+ * Item 4.5. Session Duration Time (SDT)
*
* @param session
* @return
@@ -86,7 +98,7 @@
public long getSessionDurationTime(SIPSession session);

/**
- * 3.4. Average Session Duration Time (SDT)
+ * Average Session Duration Time (ASDT)
*
* @param sessionList
* @return
@@ -94,40 +106,48 @@
public long getAvgSessionDurationTime(List<SIPSession> sessionList);

/**
- * 3.5. Average Hops per Request (AHR)
+ * Item 4.6. Hops per Request (HpR)
+ *
+ * @param sessionList
+ * @return
+ */
+ public int getHopsPerRequest(SIPSession session);
+
+ /**
+ * Average Hops per Request (AHpR)
*
* @param sessionList
* @return
*/
- public long getAvgHopsPerRequest(List<SIPSession> sessionList);
+ public double getAvgHopsPerRequest(List<SIPSession> sessionList);

/**
- * 3.6. Session Establishment Rate (SER)
+ * Item 4.7. Session Establishment Ratio (SER)
*
* @param sessionList
* @return
*/
- public long getSessionEstablishmentRate(List<SIPSession> sessionList);
+ public double getSessionEstablishmentRatio(List<SIPSession>
sessionList);

/**
- * 3.7. Session Establishment Efficiency Rate (SEER)
+ * Item 4.8. Session Establishment Effectiveness Ratio (SEER)
*
* @param sessionList
* @return
*/
- public long getSessionEstablishmentEfficiencyRate(
+ public double getSessionEstablishmentEffectivenessRatio(
List<SIPSession> sessionList);

/**
- * 3.8. Session Defects (SD)
+ * Item 4.9. Session Defects Ratio (SDR)
*
* @param sessionList
* @return
*/
- public long getSessionDefects(List<SIPSession> sessionList);
+ public double getSessionDefectsRatio(List<SIPSession> sessionList);

/**
- * 3.9. Ineffective Session Attempts (ISA)
+ * Item 4.10. Ineffective Session Attempts (ISA)
*
* @param sessionList
* @return
@@ -135,26 +155,26 @@
public double getIneffectiveSessionAttempts(List<SIPSession>
sessionList);

/**
- * 3.10. Session Disconnect Failures (SDF)
+ * Item 4.11. Session Disconnect Failures (SDF)
*
* @param sessionList
* @return
*/
- public long getSessionDisconnectFailures(List<SIPSession> sessionList);
+ public double getSessionDisconnectFailures(List<SIPSession>
sessionList);

/**
- * 3.11. Session Completion Rate (SCR)
+ * Item 4.12. Session Completion Ratio (SCR)
*
* @param sessionList
* @return
*/
- public double getSessionCompletionRate(List<SIPSession> sessionList);
+ public double getSessionCompletionRatio(List<SIPSession> sessionList);

/**
- * 3.12. Session Success Rate (SSR)
+ * Item 4.13. Session Success Ratio (SSR)
*
* @param sessionList
* @return
*/
- public double getSessionSuccessRate(List<SIPSession> sessionList);
+ public double getSessionSuccessRatio(List<SIPSession> sessionList);
}

Copied:
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/SIPPerformanceMetricsBean.java
(from r195,
/trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java)
==============================================================================
---
/trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java
(original)
+++
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/metric/SIPPerformanceMetricsBean.java
Sat May 16 23:52:28 2009
@@ -13,7 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-package org.sipana.server.sip;
+package org.sipana.server.sip.metric;

import java.util.List;
import javax.ejb.Stateless;
@@ -26,45 +26,51 @@
@Stateless
public class SIPPerformanceMetricsBean implements SIPPerformanceMetrics
{
- public long getAvgHopsPerRequest(List<SIPSession> sessionList) {
- long result = 0;
+ public int getHopsPerRequest(SIPSession session) {
+ String initialMethod = session.getRequestMethod();
+ List<SIPMessage> messageList = session.getMessageList();
+ SIPRequest first = null;
+ int result = 0;
+
+ // Get the last request within the session with the same method of
+ // initial request to discard requests captured on intermediate
+ // hosts (Average Hops is an end-to-end metric)
+ SIPRequest last = null;
+ for (SIPMessage m : messageList) {
+ // TODO Use CSeq to get only the first request
+ if (m instanceof SIPRequest && ((SIPRequest)
m).getMethod().equals(initialMethod)) {
+ if (first == null) {
+ first = (SIPRequest) m;
+ }
+ last = (SIPRequest) m;
+ }
+ }

- if (sessionList.size() == 0) {
- return 0;
+ if (first != null && last != null) {
+ result += (first.getMaxForwards() - last.getMaxForwards());
}
+
+ return result;
+ }

- for (SIPSession session : sessionList) {
- String initialMethod = session.getRequestMethod();
- List<SIPMessage> messageList = session.getMessageList();
- SIPRequest first = null;
-
- // Get the last request within the session with the same
method of
- // initial request to discard requests captured on intermediate
- // hosts (Average Hops is an end-to-end metric)
- SIPRequest last = null;
- for (SIPMessage m : messageList) {
- // TODO Use CSeq to get only the first request
- if (m instanceof SIPRequest
- &&
((SIPRequest)m).getMethod().equals(initialMethod))
- {
- if (first == null) {
- first = (SIPRequest)m;
- }
- last = (SIPRequest)m;
- }
- }

- if (first != null && last != null) {
- result += (first.getMaxForwards() - last.getMaxForwards());
- }
+ public double getAvgHopsPerRequest(List<SIPSession> sessionList) {
+ double result = 0;
+
+ for (SIPSession session : sessionList) {
+ result += getHopsPerRequest(session);
}

int listSize = sessionList.size();
- return listSize > 0 ? result / listSize : 0;
+ return listSize > 0 ? result / listSize : 0L;
}

- public long getAvgRegistrationRequestDelay(List<SIPSession>
sessionList) {
- long result = 0L;
+ public double getIneffectiveRegistrationAttempts(List<SIPSession>
sessionList) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public double getAvgRegistrationRequestDelay(List<SIPSession>
sessionList) {
+ double result = 0L;
int nRegister = 0;

for (SIPSession session : sessionList) {
@@ -99,19 +105,19 @@
return listSize > 0 ? result / listSize : 0;
}

- public long getAvgSessionRequestDelay(List<SIPSession> sessionList) {
- long result = 0;
+ public double getAvgSessionRequestDelay(List<SIPSession> sessionList) {
+ double result = 0;

for (SIPSession session : sessionList) {
result =+ getSessionRequestDelay(session);
}

int listSize = sessionList.size();
- return listSize > 0 ? result / listSize : 0;
+ return listSize > 0 ? result / listSize : 0L;
}

public double getIneffectiveSessionAttempts(List<SIPSession>
sessionList) {
- long nFail = 0;
+ double nFail = 0;

for (SIPSession session : sessionList) {
if (session.getState() == SIPSessionState.FAILED) {
@@ -120,14 +126,14 @@
}

int listSize = sessionList.size();
- return (double) (listSize > 0 ? nFail / listSize : 0);
+ return (double) (listSize > 0 ? nFail / listSize : 0L);
}

public long getRegistrationRequestDelay(SIPSession session) {
return (session.getEndTime() - session.getStartTime());
}

- public double getSessionCompletionRate(List<SIPSession> sessionList) {
+ public double getSessionCompletionRatio(List<SIPSession> sessionList) {
int nComplete = 0;

for (SIPSession session : sessionList) {
@@ -137,45 +143,44 @@
}

int listSize = sessionList.size();
- return (double) (listSize > 0 ? nComplete / listSize : 0);
+ return (double) (listSize > 0 ? nComplete / listSize : 0L);
}

- public long getSessionDefects(List<SIPSession> sessionList) {
+ public double getSessionDefectsRatio(List<SIPSession> sessionList) {
// TODO getSessionDefects()
- return 0;
+ throw new UnsupportedOperationException("Not supported yet.");
}

public long getSessionDisconnectDelay(SIPSession session) {
return (session.getEndTime() - session.getDisconnectionStart());
}

- public long getSessionDisconnectFailures(List<SIPSession> sessionList)
{
+ public double getSessionDisconnectFailures(List<SIPSession>
sessionList) {
// TODO getSessionDisconnectFailures()
- return 0;
+ throw new UnsupportedOperationException("Not supported yet.");
}

public long getSessionDurationTime(SIPSession session) {
return (session.getDisconnectionStart() -
session.getEstablishedTime());
}

- public long getSessionEstablishmentEfficiencyRate(
+ public double getSessionEstablishmentEffectivenessRatio(
List<SIPSession> sessionList) {
// TODO getSessionEstablishmentEfficiencyRate()
- return 0;
+ throw new UnsupportedOperationException("Not supported yet.");
}

- public long getSessionEstablishmentRate(List<SIPSession> sessionList) {
+ public double getSessionEstablishmentRatio(List<SIPSession>
sessionList) {
// TODO getSessionEstablishmentRate()
- return 0;
+ throw new UnsupportedOperationException("Not supported yet.");
}

public long getSessionRequestDelay(SIPSession session) {
return (session.getSetupTime() - session.getStartTime());
}

- public double getSessionSuccessRate(List<SIPSession> sessionList) {
+ public double getSessionSuccessRatio(List<SIPSession> sessionList) {
// TODO getSessionSuccessRate()
- return 0;
+ throw new UnsupportedOperationException("Not supported yet.");
}
-
}

Modified:
trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java
==============================================================================
---
trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java
(original)
+++
trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java
Sat May 16 23:52:28 2009
@@ -23,8 +23,8 @@
import org.junit.Test;
import org.sipana.protocol.sip.SIPRequest;
import org.sipana.protocol.sip.SIPSession;
-import org.sipana.server.sip.SIPPerformanceMetrics;
-import org.sipana.server.sip.SIPPerformanceMetricsBean;
+import org.sipana.server.sip.metric.SIPPerformanceMetrics;
+import org.sipana.server.sip.metric.SIPPerformanceMetricsBean;

public class SIPPerformanceMetricsTest {
private SIPPerformanceMetrics metrics;
@@ -57,9 +57,9 @@
}

// (nHosts - 1) because the initial host doesn't count as a hop
- long expected = ((nHosts -1) * nSessions) / nSessions;
+ double expected = ((nHosts -1) * nSessions) / nSessions;

- long result = metrics.getAvgHopsPerRequest(sessionList);
+ double result = metrics.getAvgHopsPerRequest(sessionList);
Assert.assertTrue(result == expected);
}

Reply all
Reply to author
Forward
0 new messages