summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-10-12 11:34:53 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-10-12 11:34:53 +0200
commit23c1e3b603a9d902593ffe9f99562fcda3af1589 (patch)
tree60ea7cdc0da5a9676ca12350ac82b069cc86eb5e /java
parent.NET demo project updates (diff)
downloadice-23c1e3b603a9d902593ffe9f99562fcda3af1589.tar.bz2
ice-23c1e3b603a9d902593ffe9f99562fcda3af1589.tar.xz
ice-23c1e3b603a9d902593ffe9f99562fcda3af1589.zip
Added support for Glacier2 MX and fixed ICE-4880
Diffstat (limited to 'java')
-rw-r--r--java/build.xml1
-rw-r--r--java/resources/metrics.config149
-rw-r--r--java/src/IceBox/ServiceManagerI.java12
-rw-r--r--java/src/IceInternal/CommunicatorObserverI.java (renamed from java/src/IceMX/CommunicatorObserverI.java)84
-rw-r--r--java/src/IceInternal/ConnectionObserverI.java (renamed from java/src/IceMX/ConnectionObserverI.java)13
-rw-r--r--java/src/IceInternal/DispatchObserverI.java (renamed from java/src/IceMX/DispatchObserverI.java)9
-rw-r--r--java/src/IceInternal/Instance.java2
-rw-r--r--java/src/IceInternal/InvocationObserverI.java (renamed from java/src/IceMX/InvocationObserverI.java)23
-rw-r--r--java/src/IceInternal/ThreadObserverI.java (renamed from java/src/IceMX/ThreadObserverI.java)8
-rw-r--r--java/src/IceMX/MetricsHelper.java2
-rw-r--r--java/src/IceMX/Observer.java3
-rw-r--r--java/src/IceMX/ObserverFactory.java27
-rw-r--r--java/test/Ice/metrics/AllTests.java9
13 files changed, 202 insertions, 140 deletions
diff --git a/java/build.xml b/java/build.xml
index 0aa44fc868f..d64ae6c8108 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -127,6 +127,7 @@
<pathelement path="${slice.dir}" />
</includepath>
<fileset dir="${slice.dir}/Glacier2">
+ <include name="Metrics.ice" />
<include name="PermissionsVerifier.ice" />
<include name="SSLInfo.ice" />
<include name="Router.ice" />
diff --git a/java/resources/metrics.config b/java/resources/metrics.config
index 81fa0bc4a21..71f010f3616 100644
--- a/java/resources/metrics.config
+++ b/java/resources/metrics.config
@@ -2,19 +2,20 @@
#
# Metrics sort
#
-IceGridGUI.Metrics = Topic Subscriber Dispatch Invocation Connection Thread ConnectionEstablishment EndpointLookup
+IceGridGUI.Metrics = Topic Subscriber Session Dispatch Invocation Connection Thread ConnectionEstablishment EndpointLookup
#
# Metrics Display Names
#
-IceGridGUI.Metrics.Topic = Topic
-IceGridGUI.Metrics.Subscriber = Subscriber
+IceGridGUI.Metrics.Topic = IceStorm Topics
+IceGridGUI.Metrics.Subscriber = IceStorm Subscribers
IceGridGUI.Metrics.Dispatch = Operation Dispatch
IceGridGUI.Metrics.Invocation = Remote Invocations
IceGridGUI.Metrics.Connection = Connections
IceGridGUI.Metrics.Thread = Threads
IceGridGUI.Metrics.ConnectionEstablishment = Connection Establishments
IceGridGUI.Metrics.EndpointLookup = Endpoint Lookups
+IceGridGUI.Metrics.Session = Glacier2 Sessions
#
# Dispatch fields
@@ -25,7 +26,7 @@ IceGridGUI.Metrics.Dispatch.id.columnName = Id
IceGridGUI.Metrics.Dispatch.id.columnToolTip = Identity
IceGridGUI.Metrics.Dispatch.userException.columnName = UE
-IceGridGUI.Metrics.Dispatch.userException.columnToolTip = User Exception
+IceGridGUI.Metrics.Dispatch.userException.columnToolTip = User exception count
IceGridGUI.Metrics.Dispatch.current.columnName = Current
@@ -33,14 +34,14 @@ IceGridGUI.Metrics.Dispatch.total.columnName = Total
IceGridGUI.Metrics.Dispatch.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Dispatch.average.dataField = total
-IceGridGUI.Metrics.Dispatch.average.columnName = Avg
-IceGridGUI.Metrics.Dispatch.average.columnToolTip = Avg (Req/s)
+IceGridGUI.Metrics.Dispatch.average.columnName = Avg Cnt
+IceGridGUI.Metrics.Dispatch.average.columnToolTip = Average dispatch count (count/s)
IceGridGUI.Metrics.Dispatch.average.scaleFactor = 1000.0d
IceGridGUI.Metrics.Dispatch.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Dispatch.averageLifetime.scaleFactor = 1000.0d
-IceGridGUI.Metrics.Dispatch.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.Dispatch.averageLifetime.columnToolTip = Avg Lifetime (ms)
+IceGridGUI.Metrics.Dispatch.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Dispatch.averageLifetime.columnToolTip = <html>Average dispatch lifetime (ms)<br><br><p style="width: 300px;">The lifetime of a dispatch is the interval between the time the header of the message is read and the time the response is sent to the client.</p></html>
IceGridGUI.Metrics.Dispatch.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.Dispatch.failures.columnName = Failures
@@ -54,7 +55,7 @@ IceGridGUI.Metrics.Invocation.id.columnName = Id
IceGridGUI.Metrics.Invocation.id.columnToolTip = Identity
IceGridGUI.Metrics.Invocation.userException.columnName = UE
-IceGridGUI.Metrics.Invocation.userException.columnToolTip = User Exception
+IceGridGUI.Metrics.Invocation.userException.columnToolTip = User exception count
IceGridGUI.Metrics.Invocation.current.columnName = Current
@@ -73,19 +74,19 @@ IceGridGUI.Metrics.Invocation.remotes.columnName = Remotes
IceGridGUI.Metrics.Invocation.remotes.total.columnName = Total
IceGridGUI.Metrics.Invocation.remotes.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Invocation.remotes.average.scaleFactor = 1000.0d
- IceGridGUI.Metrics.Invocation.remotes.average.columnName = Lifetime
- IceGridGUI.Metrics.Invocation.remotes.average.columnToolTip = Avg Lifetime (ms)
+ IceGridGUI.Metrics.Invocation.remotes.average.columnName = Avg LfT
+ IceGridGUI.Metrics.Invocation.remotes.average.columnToolTip = <html>Average remote invocation lifetime (ms)<br><br><p style="width: 300px;">The lifetime starts when the marshalled invocation is passed to the Ice connection for sending and ends when the Ice connection either sent the invocation (for oneway) or received the response (for twoway). This time doesn't include the marshalling of the invocation or un-marshalling of the response.</p></html>
IceGridGUI.Metrics.Invocation.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Invocation.average.dataField = total
-IceGridGUI.Metrics.Invocation.average.columnName = Avg
-IceGridGUI.Metrics.Invocation.average.columnToolTip = Avg (Invocations/s)
+IceGridGUI.Metrics.Invocation.average.columnName = Avg Cnt
+IceGridGUI.Metrics.Invocation.average.columnToolTip = Average invocation count (count/s)
IceGridGUI.Metrics.Invocation.average.scaleFactor = 1000.0d
IceGridGUI.Metrics.Invocation.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Invocation.averageLifetime.scaleFactor = 1000.0d
-IceGridGUI.Metrics.Invocation.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.Invocation.averageLifetime.columnToolTip = Avg Lifetime (ms)
+IceGridGUI.Metrics.Invocation.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Invocation.averageLifetime.columnToolTip = <html>Average invocation lifetime (ms)<br><br><p style="width: 300px;">The lifetime starts when the invocation is called on the proxy and ends when it completes. A synchronous operation completes when it returns. An Asynchronous operations completes when the AMI response or exception callback return.</p></html>
IceGridGUI.Metrics.Invocation.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.Invocation.failures.columnName = Failures
@@ -102,34 +103,34 @@ IceGridGUI.Metrics.Connection.current.columnName = Current
IceGridGUI.Metrics.Connection.total.columnName = Total
-IceGridGUI.Metrics.Connection.receivedBytes.columnName = Rx Bytes
-IceGridGUI.Metrics.Connection.receivedBytes.columnToolTip = Received Bytes
+IceGridGUI.Metrics.Connection.receivedBytes.columnName = Rx
+IceGridGUI.Metrics.Connection.receivedBytes.columnToolTip = Received bytes (bytes)
IceGridGUI.Metrics.Connection.receivedSpeed.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Connection.receivedSpeed.dataField = receivedBytes
-IceGridGUI.Metrics.Connection.receivedSpeed.columnName = Rx (Bytes/s)
-IceGridGUI.Metrics.Connection.receivedSpeed.columnToolTip = Received Bytes (Bytes/s)
+IceGridGUI.Metrics.Connection.receivedSpeed.columnName = Rx Bw
+IceGridGUI.Metrics.Connection.receivedSpeed.columnToolTip = Receive bandwidth (bytes/s)
IceGridGUI.Metrics.Connection.receivedSpeed.scaleFactor = 1000.0d
-IceGridGUI.Metrics.Connection.sentBytes.columnName = TxBytes
-IceGridGUI.Metrics.Connection.sentBytes.columnToolTip = Sent Bytes
+IceGridGUI.Metrics.Connection.sentBytes.columnName = Tx
+IceGridGUI.Metrics.Connection.sentBytes.columnToolTip = Sent bytes (bytes)
IceGridGUI.Metrics.Connection.sentSpeed.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Connection.sentSpeed.dataField = sentBytes
-IceGridGUI.Metrics.Connection.sentSpeed.columnName = Tx (Bytes/s)
-IceGridGUI.Metrics.Connection.sentSpeed.columnToolTip = Sent Bytes (Bytes/s)
+IceGridGUI.Metrics.Connection.sentSpeed.columnName = Tx Bw
+IceGridGUI.Metrics.Connection.sentSpeed.columnToolTip = Send bandwidth (bytes/s)
IceGridGUI.Metrics.Connection.sentSpeed.scaleFactor = 1000.0d
IceGridGUI.Metrics.Connection.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Connection.average.dataField = total
-IceGridGUI.Metrics.Connection.average.columnName = Avg
-IceGridGUI.Metrics.Connection.average.columnToolTip = Avg (Connections/s)
+IceGridGUI.Metrics.Connection.average.columnName = Avg Cnt
+IceGridGUI.Metrics.Connection.average.columnToolTip = Average connection count (count/s)
IceGridGUI.Metrics.Connection.average.scaleFactor = 1000.0d
IceGridGUI.Metrics.Connection.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Connection.averageLifetime.scaleFactor = 1000000.0d
-IceGridGUI.Metrics.Connection.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.Connection.averageLifetime.columnToolTip = Avg Lifetime (s)
+IceGridGUI.Metrics.Connection.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Connection.averageLifetime.columnToolTip = Average connection lifetime (s)
IceGridGUI.Metrics.Connection.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.Connection.failures.columnName = Failures
@@ -157,14 +158,14 @@ IceGridGUI.Metrics.Thread.inUseForOther.columnToolTip = In Use For Other
IceGridGUI.Metrics.Thread.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Thread.average.dataField = total
-IceGridGUI.Metrics.Thread.average.columnName = Avg
-IceGridGUI.Metrics.Thread.average.columnToolTip = Avg (Threads/s)
+IceGridGUI.Metrics.Thread.average.columnName = Avg Cnt
+IceGridGUI.Metrics.Thread.average.columnToolTip = Average thread count (count/s)
IceGridGUI.Metrics.Thread.average.scaleFactor = 1000.0d
IceGridGUI.Metrics.Thread.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Thread.averageLifetime.scaleFactor = 1000000.0d
-IceGridGUI.Metrics.Thread.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.Thread.averageLifetime.columnToolTip = Avg Lifetime (s)
+IceGridGUI.Metrics.Thread.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Thread.averageLifetime.columnToolTip = Average thread lifetime (s)
IceGridGUI.Metrics.Thread.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.Thread.failures.columnName = Failures
@@ -183,14 +184,14 @@ IceGridGUI.Metrics.ConnectionEstablishment.total.columnName = Total
IceGridGUI.Metrics.ConnectionEstablishment.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.ConnectionEstablishment.average.dataField = total
-IceGridGUI.Metrics.ConnectionEstablishment.average.columnName = Avg
-IceGridGUI.Metrics.ConnectionEstablishment.average.columnToolTip = Avg (Connection Establishments/s)
+IceGridGUI.Metrics.ConnectionEstablishment.average.columnName = Avg Cnt
+IceGridGUI.Metrics.ConnectionEstablishment.average.columnToolTip = Average connection establishment count (count/s)
IceGridGUI.Metrics.ConnectionEstablishment.average.scaleFactor = 1000.0d
IceGridGUI.Metrics.ConnectionEstablishment.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.ConnectionEstablishment.averageLifetime.scaleFactor = 1000.0d
-IceGridGUI.Metrics.ConnectionEstablishment.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.ConnectionEstablishment.averageLifetime.columnToolTip = Avg Lifetime (ms)
+IceGridGUI.Metrics.ConnectionEstablishment.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.ConnectionEstablishment.averageLifetime.columnToolTip = Average connection establishement lifetime (ms)
IceGridGUI.Metrics.ConnectionEstablishment.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.ConnectionEstablishment.failures.columnName = Failures
@@ -209,14 +210,14 @@ IceGridGUI.Metrics.EndpointLookup.total.columnName = Total
IceGridGUI.Metrics.EndpointLookup.average.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.EndpointLookup.average.dataField = total
-IceGridGUI.Metrics.EndpointLookup.average.columnName = Avg
-IceGridGUI.Metrics.EndpointLookup.average.columnToolTip = Avg (Endpoint Lookups/s)
+IceGridGUI.Metrics.EndpointLookup.average.columnName = Avg Cnt
+IceGridGUI.Metrics.EndpointLookup.average.columnToolTip = Average endpoint lookup count (count/s)
IceGridGUI.Metrics.EndpointLookup.average.scaleFactor = 1000.0d
IceGridGUI.Metrics.EndpointLookup.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.EndpointLookup.averageLifetime.scaleFactor = 1000.0d
-IceGridGUI.Metrics.EndpointLookup.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.EndpointLookup.averageLifetime.columnToolTip = Avg Lifetime (ms)
+IceGridGUI.Metrics.EndpointLookup.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.EndpointLookup.averageLifetime.columnToolTip = Average endpoint lookup lifetime (ms)
IceGridGUI.Metrics.EndpointLookup.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.EndpointLookup.failures.columnName = Failures
@@ -236,19 +237,19 @@ IceGridGUI.Metrics.Topic.total.columnName = Total
IceGridGUI.Metrics.Topic.published.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Topic.published.dataField = published
IceGridGUI.Metrics.Topic.published.columnName = Published
-IceGridGUI.Metrics.Topic.published.columnToolTip = Published (Req/s)
+IceGridGUI.Metrics.Topic.published.columnToolTip = <html>Average published event count (count/s)<br><br><p style="width: 300px;">Published events are received over the topic publisher object.</p></html>
IceGridGUI.Metrics.Topic.published.scaleFactor = 1000.0d
IceGridGUI.Metrics.Topic.forwarded.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Topic.forwarded.dataField = forwarded
IceGridGUI.Metrics.Topic.forwarded.columnName = Forwarded
-IceGridGUI.Metrics.Topic.forwarded.columnToolTip = Forwarded (Req/s)
+IceGridGUI.Metrics.Topic.forwarded.columnToolTip = <html>Average forwarded event count (count/s)<br><br><p style="width: 300px;">Forwarded events are received from linked topics.</p></html>
IceGridGUI.Metrics.Topic.forwarded.scaleFactor = 1000.0d
IceGridGUI.Metrics.Topic.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Topic.averageLifetime.scaleFactor = 1000.0d
-IceGridGUI.Metrics.Topic.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.Topic.averageLifetime.columnToolTip = Avg Lifetime (ms)
+IceGridGUI.Metrics.Topic.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Topic.averageLifetime.columnToolTip = Average topic lifetime (ms)
IceGridGUI.Metrics.Topic.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.Topic.failures.columnName = Failures
@@ -267,25 +268,77 @@ IceGridGUI.Metrics.Subscriber.total.columnName = Total
IceGridGUI.Metrics.Subscriber.queued.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Subscriber.queued.dataField = queued
IceGridGUI.Metrics.Subscriber.queued.columnName = Queued
-IceGridGUI.Metrics.Subscriber.queued.columnTip = Queued (Req/s)
+IceGridGUI.Metrics.Subscriber.queued.columnTip = <html>Average queued event count (count/s)<br><br><p style="width: 300px;">Queued events are events waiting to be sent to the subscriber.</p></html>
IceGridGUI.Metrics.Subscriber.queued.scaleFactor = 1000.0d
IceGridGUI.Metrics.Subscriber.outstanding.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Subscriber.outstanding.dataField = outstanding
IceGridGUI.Metrics.Subscriber.outstanding.columnName = Outstanding
-IceGridGUI.Metrics.Subscriber.outstanding.columnToolTip = Outstanding (Req/s)
+IceGridGUI.Metrics.Subscriber.outstanding.columnToolTip = <html>Average outstanding event count (count/s)<br><br><p style="width: 300px;">Outstanding event are event which were sent by not yet delivered to the subcriber.</p></html>
IceGridGUI.Metrics.Subscriber.outstanding.scaleFactor = 1000.0d
IceGridGUI.Metrics.Subscriber.delivered.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
IceGridGUI.Metrics.Subscriber.delivered.dataField = delivered
IceGridGUI.Metrics.Subscriber.delivered.columnName = Delivered
-IceGridGUI.Metrics.Subscriber.delivered.columnToolTip = Delivered (Req/s)
+IceGridGUI.Metrics.Subscriber.delivered.columnToolTip = Average delivered event count (count/s)
IceGridGUI.Metrics.Subscriber.delivered.scaleFactor = 1000.0d
IceGridGUI.Metrics.Subscriber.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
IceGridGUI.Metrics.Subscriber.averageLifetime.scaleFactor = 1000.0d
-IceGridGUI.Metrics.Subscriber.averageLifetime.columnName = Lifetime
-IceGridGUI.Metrics.Subscriber.averageLifetime.columnToolTip = Avg Lifetime (ms)
+IceGridGUI.Metrics.Subscriber.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Subscriber.averageLifetime.columnToolTip = Average subscriber lifetime (ms)
IceGridGUI.Metrics.Subscriber.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
IceGridGUI.Metrics.Subscriber.failures.columnName = Failures
+
+#
+# Glacier2 session fields
+#
+IceGridGUI.Metrics.Session.fields = id current total routingTableSize forwardedClient queuedClient overriddenClient forwardedServer queuedServer overriddenServer averageLifetime failures
+
+IceGridGUI.Metrics.Session.id.columnName = Identity
+
+IceGridGUI.Metrics.Session.current.columnName = Current
+
+IceGridGUI.Metrics.Session.total.columnName = Total
+
+IceGridGUI.Metrics.Session.routingTableSize.columnName = RT Sz
+IceGridGUI.Metrics.Session.routingTableSize.columnToolTip = Routing table size
+
+IceGridGUI.Metrics.Session.forwardedClient.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
+IceGridGUI.Metrics.Session.forwardedClient.dataField = forwardedClient
+IceGridGUI.Metrics.Session.forwardedClient.columnName = Clt Fwd
+IceGridGUI.Metrics.Session.forwardedClient.columnToolTip = Average forwarded request count on the client side (count/s)
+IceGridGUI.Metrics.Session.forwardedClient.scaleFactor = 1000.0d
+
+IceGridGUI.Metrics.Session.queuedClient.columnName = Clt Qd
+IceGridGUI.Metrics.Session.queuedClient.columnToolTip = Queued request count on the client side
+
+IceGridGUI.Metrics.Session.overriddenClient.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
+IceGridGUI.Metrics.Session.overriddenClient.dataField = overriddenClient
+IceGridGUI.Metrics.Session.overriddenClient.columnName = Clt Ovrd
+IceGridGUI.Metrics.Session.overriddenClient.columnToolTip = Average overridden request count on the client side (count/s)
+IceGridGUI.Metrics.Session.overriddenClient.scaleFactor = 1000.0d
+
+IceGridGUI.Metrics.Session.forwardedServer.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
+IceGridGUI.Metrics.Session.forwardedServer.dataField = forwardedServer
+IceGridGUI.Metrics.Session.forwardedServer.columnName = Srv Fwd
+IceGridGUI.Metrics.Session.forwardedServer.columnToolTip = Average forwarded request count on the server side (count/s)
+IceGridGUI.Metrics.Session.forwardedServer.scaleFactor = 1000.0d
+
+IceGridGUI.Metrics.Session.queuedServer.columnName = Srv Qd
+IceGridGUI.Metrics.Session.queuedServer.columnToolTip = Queued request count on the server side
+
+IceGridGUI.Metrics.Session.overriddenServer.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$DeltaAverageMetricsField
+IceGridGUI.Metrics.Session.overriddenServer.dataField = overriddenServer
+IceGridGUI.Metrics.Session.overriddenServer.columnName = Srv Ovrd
+IceGridGUI.Metrics.Session.overriddenServer.columnToolTip = Average overridden request count on the server side (count/s)
+IceGridGUI.Metrics.Session.overriddenServer.scaleFactor = 1000.0d
+
+IceGridGUI.Metrics.Session.averageLifetime.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$AverageLifetimeMetricsField
+IceGridGUI.Metrics.Session.averageLifetime.scaleFactor = 1000.0d
+IceGridGUI.Metrics.Session.averageLifetime.columnName = Avg LfT
+IceGridGUI.Metrics.Session.averageLifetime.columnToolTip = Average session lifetime (ms)
+
+IceGridGUI.Metrics.Session.failures.fieldClass = IceGridGUI.LiveDeployment.MetricsViewEditor$FailuresMetricsField
+IceGridGUI.Metrics.Session.failures.columnName = Failures
diff --git a/java/src/IceBox/ServiceManagerI.java b/java/src/IceBox/ServiceManagerI.java
index 9d7b830bbb6..2676c5f389b 100644
--- a/java/src/IceBox/ServiceManagerI.java
+++ b/java/src/IceBox/ServiceManagerI.java
@@ -354,10 +354,10 @@ public class ServiceManagerI extends _ServiceManagerDisp
// shared communicator.
//
IceInternal.MetricsAdminI metricsAdmin = null;
- if(_communicator.getObserver() instanceof IceMX.CommunicatorObserverI)
+ if(_communicator.getObserver() instanceof IceInternal.CommunicatorObserverI)
{
metricsAdmin = new IceInternal.MetricsAdminI(initData.properties, Ice.Util.getProcessLogger());
- initData.observer = new IceMX.CommunicatorObserverI(metricsAdmin);
+ initData.observer = new IceInternal.CommunicatorObserverI(metricsAdmin);
}
_sharedCommunicator = Ice.Util.initialize(initData);
@@ -565,9 +565,9 @@ public class ServiceManagerI extends _ServiceManagerDisp
{
assert(_sharedCommunicator != null);
communicator = _sharedCommunicator;
- if(communicator.getObserver() instanceof IceMX.CommunicatorObserverI)
+ if(communicator.getObserver() instanceof IceInternal.CommunicatorObserverI)
{
- IceMX.CommunicatorObserverI o = (IceMX.CommunicatorObserverI)communicator.getObserver();
+ IceInternal.CommunicatorObserverI o = (IceInternal.CommunicatorObserverI)communicator.getObserver();
metricsAdmin = o.getMetricsAdmin();
}
}
@@ -606,10 +606,10 @@ public class ServiceManagerI extends _ServiceManagerDisp
// If Ice metrics are enabled on the IceBox communicator, we also enable them on
// the service communicator.
//
- if(_communicator.getObserver() instanceof IceMX.CommunicatorObserverI)
+ if(_communicator.getObserver() instanceof IceInternal.CommunicatorObserverI)
{
metricsAdmin = new IceInternal.MetricsAdminI(initData.properties, initData.logger);
- initData.observer = new IceMX.CommunicatorObserverI(metricsAdmin);
+ initData.observer = new IceInternal.CommunicatorObserverI(metricsAdmin);
}
//
diff --git a/java/src/IceMX/CommunicatorObserverI.java b/java/src/IceInternal/CommunicatorObserverI.java
index c5f724fe5e0..c5dd83b79ae 100644
--- a/java/src/IceMX/CommunicatorObserverI.java
+++ b/java/src/IceInternal/CommunicatorObserverI.java
@@ -7,7 +7,9 @@
//
// **********************************************************************
-package IceMX;
+package IceInternal;
+
+import IceMX.*;
public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorObserver
{
@@ -51,7 +53,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
addEndpointAttributes(r, cl);
}
- static private class ConnectionHelper extends MetricsHelper<ConnectionMetrics>
+ static public class ConnectionHelper extends MetricsHelper<ConnectionMetrics>
{
static private AttributeResolver _attributes = new AttributeResolver()
{
@@ -80,7 +82,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
_state = state;
}
- String
+ public String
getId()
{
if(_id == null)
@@ -106,7 +108,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _id;
}
- String
+ public String
getState()
{
switch(_state)
@@ -127,7 +129,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
}
}
- String
+ public String
getParent()
{
if(_connectionInfo.adapterName != null && !_connectionInfo.adapterName.isEmpty())
@@ -140,19 +142,19 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
}
}
- Ice.ConnectionInfo
+ public Ice.ConnectionInfo
getConnectionInfo()
{
return _connectionInfo;
}
- Ice.Endpoint
+ public Ice.Endpoint
getEndpoint()
{
return _endpoint;
}
- Ice.EndpointInfo
+ public Ice.EndpointInfo
getEndpointInfo()
{
if(_endpointInfo == null)
@@ -162,13 +164,13 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _endpointInfo;
}
- String
+ public String
getEndpointEncodingVersion()
{
return Ice.Util.encodingVersionToString(getEndpointInfo().encoding);
}
- String
+ public String
getEndpointProtocolVersion()
{
return Ice.Util.protocolVersionToString(getEndpointInfo().protocol);
@@ -181,7 +183,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
private Ice.EndpointInfo _endpointInfo;
};
- static private final class DispatchHelper extends MetricsHelper<DispatchMetrics>
+ static public final class DispatchHelper extends MetricsHelper<DispatchMetrics>
{
static private final AttributeResolver _attributes = new AttributeResolver()
{
@@ -230,13 +232,13 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
throw new IllegalArgumentException(attribute);
}
- String
+ public String
getMode()
{
return _current.requestId == 0 ? "oneway" : "twoway";
}
- String
+ public String
getId()
{
if(_id == null)
@@ -252,31 +254,31 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _id;
}
- String
+ public String
getParent()
{
return _current.adapter.getName();
}
- Ice.ConnectionInfo
+ public Ice.ConnectionInfo
getConnectionInfo()
{
return _current.con.getInfo();
- }
+ }
- Ice.Endpoint
+ public Ice.Endpoint
getEndpoint()
{
return _current.con.getEndpoint();
}
- Ice.Connection
+ public Ice.Connection
getConnection()
{
return _current.con;
}
- Ice.EndpointInfo
+ public Ice.EndpointInfo
getEndpointInfo()
{
if(_endpointInfo == null)
@@ -286,25 +288,25 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _endpointInfo;
}
- String
+ public String
getEndpointEncodingVersion()
{
return Ice.Util.encodingVersionToString(getEndpointInfo().encoding);
}
- String
+ public String
getEndpointProtocolVersion()
{
return Ice.Util.protocolVersionToString(getEndpointInfo().protocol);
}
- Ice.Current
+ public Ice.Current
getCurrent()
{
return _current;
}
- String
+ public String
getIdentity()
{
return _current.adapter.getCommunicator().identityToString(_current.id);
@@ -315,7 +317,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
private Ice.EndpointInfo _endpointInfo;
};
- static private final class InvocationHelper extends MetricsHelper<InvocationMetrics>
+ static public final class InvocationHelper extends MetricsHelper<InvocationMetrics>
{
static private final AttributeResolver _attributes = new AttributeResolver()
{
@@ -365,7 +367,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
throw new IllegalArgumentException(attribute);
}
- String
+ public String
getMode()
{
if(_proxy == null)
@@ -399,7 +401,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
}
}
- String
+ public String
getId()
{
if(_id == null)
@@ -426,19 +428,19 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _id;
}
- String
+ public String
getParent()
{
return "Communicator";
}
- Ice.ObjectPrx
+ public Ice.ObjectPrx
getProxy()
{
return _proxy;
}
- String
+ public String
getIdentity()
{
if(_proxy != null)
@@ -451,13 +453,13 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
}
}
- String
+ public String
getOperation()
{
return _operation;
}
- String
+ public String
getEncodingVersion()
{
return Ice.Util.encodingVersionToString(_proxy.ice_getEncodingVersion());
@@ -469,7 +471,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
private String _id;
};
- static private final class ThreadHelper extends MetricsHelper<ThreadMetrics>
+ static public final class ThreadHelper extends MetricsHelper<ThreadMetrics>
{
static private final AttributeResolver _attributes = new AttributeResolver()
{
@@ -513,12 +515,12 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
}
}
- final String _parent;
- final String _id;
+ final public String _parent;
+ final public String _id;
final private Ice.Instrumentation.ThreadState _state;
};
- static private final class EndpointHelper extends MetricsHelper<Metrics>
+ static public final class EndpointHelper extends MetricsHelper<Metrics>
{
static private final AttributeResolver _attributes = new AttributeResolver()
{
@@ -551,7 +553,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
_endpoint = endpt;
}
- Ice.EndpointInfo
+ public Ice.EndpointInfo
getEndpointInfo()
{
if(_endpointInfo == null)
@@ -561,25 +563,25 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _endpointInfo;
}
- String
+ public String
getEndpointEncodingVersion()
{
return Ice.Util.encodingVersionToString(getEndpointInfo().encoding);
}
- String
+ public String
getEndpointProtocolVersion()
{
return Ice.Util.protocolVersionToString(getEndpointInfo().protocol);
}
- String
+ public String
getParent()
{
return "Communicator";
}
- String
+ public String
getId()
{
if(_id == null)
@@ -589,7 +591,7 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb
return _id;
}
- String
+ public String
getEndpoint()
{
return _endpoint.toString();
diff --git a/java/src/IceMX/ConnectionObserverI.java b/java/src/IceInternal/ConnectionObserverI.java
index 6371c06c2ba..4cb0edad9aa 100644
--- a/java/src/IceMX/ConnectionObserverI.java
+++ b/java/src/IceInternal/ConnectionObserverI.java
@@ -7,9 +7,10 @@
//
// **********************************************************************
-package IceMX;
+package IceInternal;
-public class ConnectionObserverI extends Observer<ConnectionMetrics> implements Ice.Instrumentation.ConnectionObserver
+public class ConnectionObserverI extends IceMX.Observer<IceMX.ConnectionMetrics>
+ implements Ice.Instrumentation.ConnectionObserver
{
public void
sentBytes(final int num)
@@ -25,19 +26,19 @@ public class ConnectionObserverI extends Observer<ConnectionMetrics> implements
forEach(_receivedBytesUpdate);
}
- private MetricsUpdate<ConnectionMetrics> _sentBytesUpdate = new MetricsUpdate<ConnectionMetrics>()
+ private MetricsUpdate<IceMX.ConnectionMetrics> _sentBytesUpdate = new MetricsUpdate<IceMX.ConnectionMetrics>()
{
public void
- update(ConnectionMetrics v)
+ update(IceMX.ConnectionMetrics v)
{
v.sentBytes += _sentBytes;
}
};
- private MetricsUpdate<ConnectionMetrics> _receivedBytesUpdate = new MetricsUpdate<ConnectionMetrics>()
+ private MetricsUpdate<IceMX.ConnectionMetrics> _receivedBytesUpdate = new MetricsUpdate<IceMX.ConnectionMetrics>()
{
public void
- update(ConnectionMetrics v)
+ update(IceMX.ConnectionMetrics v)
{
v.receivedBytes += _receivedBytes;
}
diff --git a/java/src/IceMX/DispatchObserverI.java b/java/src/IceInternal/DispatchObserverI.java
index bb41ea3a102..40527387f19 100644
--- a/java/src/IceMX/DispatchObserverI.java
+++ b/java/src/IceInternal/DispatchObserverI.java
@@ -7,9 +7,10 @@
//
// **********************************************************************
-package IceMX;
+package IceInternal;
-public class DispatchObserverI extends Observer<DispatchMetrics> implements Ice.Instrumentation.DispatchObserver
+public class DispatchObserverI extends IceMX.Observer<IceMX.DispatchMetrics>
+ implements Ice.Instrumentation.DispatchObserver
{
public void
userException()
@@ -17,10 +18,10 @@ public class DispatchObserverI extends Observer<DispatchMetrics> implements Ice.
forEach(_userException);
}
- final MetricsUpdate<DispatchMetrics> _userException = new MetricsUpdate<DispatchMetrics>()
+ final MetricsUpdate<IceMX.DispatchMetrics> _userException = new MetricsUpdate<IceMX.DispatchMetrics>()
{
public void
- update(DispatchMetrics v)
+ update(IceMX.DispatchMetrics v)
{
++v.userException;
}
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java
index 55119014184..b285a643822 100644
--- a/java/src/IceInternal/Instance.java
+++ b/java/src/IceInternal/Instance.java
@@ -772,7 +772,7 @@ public final class Instance
(_adminFacetFilter.isEmpty() || _adminFacetFilter.contains("MetricsAdmin")) &&
_initData.properties.getProperty("Ice.Admin.Endpoints").length() > 0)
{
- IceMX.CommunicatorObserverI observer = new IceMX.CommunicatorObserverI(admin);
+ CommunicatorObserverI observer = new CommunicatorObserverI(admin);
_initData.observer = observer;
//
diff --git a/java/src/IceMX/InvocationObserverI.java b/java/src/IceInternal/InvocationObserverI.java
index 8c2d6cf1d32..9069fd47d0d 100644
--- a/java/src/IceMX/InvocationObserverI.java
+++ b/java/src/IceInternal/InvocationObserverI.java
@@ -7,11 +7,14 @@
//
// **********************************************************************
-package IceMX;
+package IceInternal;
-public class InvocationObserverI extends Observer<InvocationMetrics> implements Ice.Instrumentation.InvocationObserver
+import IceMX.*;
+
+public class InvocationObserverI extends IceMX.Observer<IceMX.InvocationMetrics>
+ implements Ice.Instrumentation.InvocationObserver
{
- static private final class RemoteInvocationHelper extends MetricsHelper<Metrics>
+ static public final class RemoteInvocationHelper extends MetricsHelper<Metrics>
{
static private final AttributeResolver _attributes = new AttributeResolver()
{
@@ -39,7 +42,7 @@ public class InvocationObserverI extends Observer<InvocationMetrics> implements
_endpoint = endpt;
}
- String
+ public String
getId()
{
if(_id == null)
@@ -53,7 +56,7 @@ public class InvocationObserverI extends Observer<InvocationMetrics> implements
return _id;
}
- String
+ public String
getParent()
{
if(_connectionInfo.adapterName != null && !_connectionInfo.adapterName.isEmpty())
@@ -66,19 +69,19 @@ public class InvocationObserverI extends Observer<InvocationMetrics> implements
}
}
- Ice.ConnectionInfo
+ public Ice.ConnectionInfo
getConnectionInfo()
{
return _connectionInfo;
}
- Ice.Endpoint
+ public Ice.Endpoint
getEndpoint()
{
return _endpoint;
}
- Ice.EndpointInfo
+ public Ice.EndpointInfo
getEndpointInfo()
{
if(_endpointInfo == null)
@@ -88,13 +91,13 @@ public class InvocationObserverI extends Observer<InvocationMetrics> implements
return _endpointInfo;
}
- String
+ public String
getEndpointEncodingVersion()
{
return Ice.Util.encodingVersionToString(getEndpointInfo().encoding);
}
- String
+ public String
getEndpointProtocolVersion()
{
return Ice.Util.protocolVersionToString(getEndpointInfo().protocol);
diff --git a/java/src/IceMX/ThreadObserverI.java b/java/src/IceInternal/ThreadObserverI.java
index 79209c879e2..b0a8248bbdc 100644
--- a/java/src/IceMX/ThreadObserverI.java
+++ b/java/src/IceInternal/ThreadObserverI.java
@@ -7,9 +7,9 @@
//
// **********************************************************************
-package IceMX;
+package IceInternal;
-public class ThreadObserverI extends Observer<ThreadMetrics> implements Ice.Instrumentation.ThreadObserver
+public class ThreadObserverI extends IceMX.Observer<IceMX.ThreadMetrics> implements Ice.Instrumentation.ThreadObserver
{
public void
stateChanged(final Ice.Instrumentation.ThreadState oldState, final Ice.Instrumentation.ThreadState newState)
@@ -19,10 +19,10 @@ public class ThreadObserverI extends Observer<ThreadMetrics> implements Ice.Inst
forEach(_threadStateUpdate);
}
- private MetricsUpdate<ThreadMetrics> _threadStateUpdate = new MetricsUpdate<ThreadMetrics>()
+ private MetricsUpdate<IceMX.ThreadMetrics> _threadStateUpdate = new MetricsUpdate<IceMX.ThreadMetrics>()
{
public void
- update(ThreadMetrics v)
+ update(IceMX.ThreadMetrics v)
{
switch(_oldState)
{
diff --git a/java/src/IceMX/MetricsHelper.java b/java/src/IceMX/MetricsHelper.java
index 32f820ae4fb..2a2c567ac08 100644
--- a/java/src/IceMX/MetricsHelper.java
+++ b/java/src/IceMX/MetricsHelper.java
@@ -11,7 +11,7 @@ package IceMX;
public class MetricsHelper<T>
{
- static class AttributeResolver
+ public static class AttributeResolver
{
private abstract class Resolver
{
diff --git a/java/src/IceMX/Observer.java b/java/src/IceMX/Observer.java
index 4e29fdb255d..105b093cce0 100644
--- a/java/src/IceMX/Observer.java
+++ b/java/src/IceMX/Observer.java
@@ -65,8 +65,9 @@ public class Observer<T extends Metrics> extends IceUtilInternal.StopWatch imple
}
public void
- update(MetricsHelper<T> helper, java.util.List<MetricsMap<T>.Entry> objects)
+ init(MetricsHelper<T> helper, java.util.List<MetricsMap<T>.Entry> objects, Observer<T> previous)
{
+ _objects = new java.util.LinkedList<MetricsMap<T>.Entry>(previous._objects);
java.util.Collections.sort(objects);
java.util.ListIterator<MetricsMap<T>.Entry> p = objects.listIterator();
java.util.ListIterator<MetricsMap<T>.Entry> q = _objects.listIterator();
diff --git a/java/src/IceMX/ObserverFactory.java b/java/src/IceMX/ObserverFactory.java
index c1bf521985d..1082e0e134f 100644
--- a/java/src/IceMX/ObserverFactory.java
+++ b/java/src/IceMX/ObserverFactory.java
@@ -46,14 +46,14 @@ public class ObserverFactory<T extends Metrics, O extends Observer<T>>
}
}
- synchronized O
+ public synchronized O
getObserver(MetricsHelper<T> helper, Class<O> cl)
{
return getObserver(helper, null, cl);
}
@SuppressWarnings("unchecked")
- synchronized O
+ public synchronized O
getObserver(MetricsHelper<T> helper, Object observer, Class<O> cl)
{
@@ -73,23 +73,22 @@ public class ObserverFactory<T extends Metrics, O extends Observer<T>>
}
O obsv;
+ try
+ {
+ obsv = cl.newInstance();
+ }
+ catch(Exception ex)
+ {
+ assert(false);
+ return null;
+ }
if(observer == null)
{
- try
- {
- obsv = cl.newInstance();
- }
- catch(Exception ex)
- {
- assert(false);
- return null;
- }
obsv.init(helper, metricsObjects);
}
else
{
- obsv = (O)observer;
- obsv.update(helper, metricsObjects);
+ obsv.init(helper, metricsObjects, (O)observer);
}
return obsv;
}
@@ -127,7 +126,7 @@ public class ObserverFactory<T extends Metrics, O extends Observer<T>>
}
}
- synchronized void
+ public synchronized void
setUpdater(Runnable updater)
{
_updater = updater;
diff --git a/java/test/Ice/metrics/AllTests.java b/java/test/Ice/metrics/AllTests.java
index 13e63eca87d..4b086859b3f 100644
--- a/java/test/Ice/metrics/AllTests.java
+++ b/java/test/Ice/metrics/AllTests.java
@@ -622,10 +622,10 @@ public class AllTests
test(m1.current == 0 && m1.total == 1 && m1.id.equals("127.0.0.1:12010"));
metrics.ice_getConnection().close(false);
-
+ controller.hold();
try
{
- communicator.stringToProxy("test:tcp -p 12010 -h 127.0.0.50").ice_timeout(10).ice_ping();
+ communicator.stringToProxy("test:tcp -p 12010 -h 127.0.0.1").ice_timeout(10).ice_ping();
test(false);
}
catch(Ice.ConnectTimeoutException ex)
@@ -635,9 +635,10 @@ public class AllTests
{
test(false);
}
- test(clientMetrics.getMetricsView("View", timestamp).get("ConnectionEstablishment").length == 2);
+ controller.resume();
+ test(clientMetrics.getMetricsView("View", timestamp).get("ConnectionEstablishment").length == 1);
m1 = clientMetrics.getMetricsView("View", timestamp).get("ConnectionEstablishment")[0];
- test(m1.id.equals("127.0.0.50:12010") && m1.total == 2 && m1.failures == 2);
+ test(m1.id.equals("127.0.0.1:12010") && m1.total == 3 && m1.failures == 2);
checkFailure(clientMetrics, "ConnectionEstablishment", m1.id, "Ice::ConnectTimeoutException", 2, out);