Skip to content

Commit

Permalink
Move request charge to serversidemetrics - optional
Browse files Browse the repository at this point in the history
  • Loading branch information
Maya-Painter committed Jan 18, 2024
1 parent 5d17756 commit 2999084
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@ public abstract class ServerSideCumulativeMetrics
/// </summary>
public abstract ServerSideMetrics CumulativeMetrics { get; }

/// <summary>
/// Gets the total request charge for all partitions.
/// </summary>
public abstract double TotalRequestCharge { get; }

/// <summary>
/// Gets the list of ServerSideMetrics, one for for each partition.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,10 @@ internal ServerSideCumulativeMetricsInternal(IEnumerable<ServerSidePartitionedMe
{
this.PartitionedMetrics = serverSideMetricsList.ToList();
this.CumulativeMetrics = ServerSideMetricsInternal.Create(serverSideMetricsList.Select(partitionedMetrics => partitionedMetrics.ServerSideMetricsInternal));
this.TotalRequestCharge = serverSideMetricsList.Sum(partitionedMetrics => partitionedMetrics.RequestCharge);
}

public override ServerSideMetrics CumulativeMetrics { get; }

public override IReadOnlyList<ServerSidePartitionedMetrics> PartitionedMetrics { get; }

public override double TotalRequestCharge { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,10 @@ public abstract class ServerSideMetrics
/// Gets the VMExecution Time.
/// </summary>
public abstract TimeSpan VMExecutionTime { get; }

/// <summary>
/// Gets the request charge.
/// </summary>
public abstract double RequestCharge { get; internal set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ sealed class ServerSideMetricsInternal : ServerSideMetrics
documentLoadTime: TimeSpan.Zero,
vmExecutionTime: TimeSpan.Zero,
runtimeExecutionTimes: RuntimeExecutionTimesInternal.Empty,
documentWriteTime: TimeSpan.Zero);
documentWriteTime: TimeSpan.Zero,
requestCharge: 0);

/// <summary>
/// Initializes a new instance of the <see cref="ServerSideMetricsInternal"/> class.
Expand All @@ -53,6 +54,7 @@ sealed class ServerSideMetricsInternal : ServerSideMetrics
/// <param name="documentWriteTime"></param>
/// <param name="feedRange"></param>
/// <param name="partitionKeyRangeId"></param>
/// <param name="requestCharge"></param>
public ServerSideMetricsInternal(
long retrievedDocumentCount,
long retrievedDocumentSize,
Expand All @@ -67,7 +69,8 @@ sealed class ServerSideMetricsInternal : ServerSideMetrics
RuntimeExecutionTimesInternal runtimeExecutionTimes,
TimeSpan documentWriteTime,
string feedRange = null,
int? partitionKeyRangeId = null)
int? partitionKeyRangeId = null,
double requestCharge = 0)
{
this.RetrievedDocumentCount = retrievedDocumentCount;
this.RetrievedDocumentSize = retrievedDocumentSize;
Expand All @@ -83,6 +86,7 @@ sealed class ServerSideMetricsInternal : ServerSideMetrics
this.DocumentWriteTime = documentWriteTime;
this.FeedRange = feedRange;
this.PartitionKeyRangeId = partitionKeyRangeId;
this.RequestCharge = requestCharge;
}

public override TimeSpan TotalTime { get; }
Expand Down Expand Up @@ -120,12 +124,12 @@ sealed class ServerSideMetricsInternal : ServerSideMetrics

public override TimeSpan VMExecutionTime { get; }

public override double RequestCharge { get; internal set; }

public string FeedRange { get; set; }

public int? PartitionKeyRangeId { get; set; }

public double RequestCharge { get; set; }

public static ServerSideMetricsInternal Create(IEnumerable<ServerSideMetricsInternal> serverSideMetricsEnumerable)
{
ServerSideMetricsInternalAccumulator accumulator = new ServerSideMetricsInternalAccumulator();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public ServerSideMetricsInternal GetServerSideMetrics()
RuntimeExecutionTimesAccumulator runtimeExecutionTimesAccumulator = new RuntimeExecutionTimesAccumulator();
TimeSpan documentWriteTime = TimeSpan.Zero;
TimeSpan vMExecutionTime = TimeSpan.Zero;
double requestCharge = 0;

foreach (ServerSideMetricsInternal serverSideMetrics in this.serverSideMetricsList)
{
Expand All @@ -59,6 +60,7 @@ public ServerSideMetricsInternal GetServerSideMetrics()
runtimeExecutionTimesAccumulator.Accumulate(serverSideMetrics.RuntimeExecutionTimes);
documentWriteTime += serverSideMetrics.DocumentWriteTime;
vMExecutionTime += serverSideMetrics.VMExecutionTime;
requestCharge += serverSideMetrics.RequestCharge;
}

return new ServerSideMetricsInternal(
Expand All @@ -73,7 +75,8 @@ public ServerSideMetricsInternal GetServerSideMetrics()
documentLoadTime: documentLoadTime,
vmExecutionTime: vMExecutionTime,
runtimeExecutionTimes: runtimeExecutionTimesAccumulator.GetRuntimeExecutionTimes(),
documentWriteTime: documentWriteTime);
documentWriteTime: documentWriteTime,
requestCharge: requestCharge);
}

public List<ServerSideMetricsInternal> GetPartitionedServerSideMetrics()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1289,7 +1289,7 @@ public async Task QuerySinglePartitionItemStreamTest(int perPKItemCount, int max
Assert.IsTrue(metrics.PartitionedMetrics[0].RequestCharge > 0);
Assert.IsTrue(metrics.CumulativeMetrics.TotalTime > TimeSpan.Zero);
Assert.IsTrue(metrics.CumulativeMetrics.QueryPreparationTime > TimeSpan.Zero);
Assert.IsTrue(metrics.TotalRequestCharge > 0);
Assert.IsTrue(metrics.CumulativeMetrics.RequestCharge > 0);

if (metrics.CumulativeMetrics.RetrievedDocumentCount >= 1)
{
Expand Down Expand Up @@ -1377,7 +1377,7 @@ public async Task ItemMultiplePartitionQuery()
Assert.IsTrue(metrics.PartitionedMetrics.Count == 3);
Assert.IsTrue(metrics.CumulativeMetrics.TotalTime > TimeSpan.Zero);
Assert.IsTrue(metrics.CumulativeMetrics.QueryPreparationTime > TimeSpan.Zero);
Assert.IsTrue(metrics.TotalRequestCharge > 0);
Assert.IsTrue(metrics.CumulativeMetrics.RequestCharge > 0);

foreach (ServerSidePartitionedMetrics partitionedMetrics in metrics.PartitionedMetrics)
{
Expand Down Expand Up @@ -1459,7 +1459,7 @@ public async Task ItemSinglePartitionQueryGateway()
Assert.IsTrue(metrics.PartitionedMetrics.Count == 1);
Assert.IsTrue(metrics.CumulativeMetrics.TotalTime > TimeSpan.Zero);
Assert.IsTrue(metrics.CumulativeMetrics.QueryPreparationTime > TimeSpan.Zero);
Assert.IsTrue(metrics.TotalRequestCharge > 0);
Assert.IsTrue(metrics.CumulativeMetrics.RequestCharge > 0);

foreach (ServerSidePartitionedMetrics partitionedMetrics in metrics.PartitionedMetrics)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9235,16 +9235,6 @@
"Microsoft.Azure.Cosmos.ServerSideCumulativeMetrics;System.Object;IsAbstract:True;IsSealed:False;IsInterface:False;IsEnum:False;IsClass:True;IsValueType:False;IsNested:False;IsGenericType:False;IsSerializable:False": {
"Subclasses": {},
"Members": {
"Double get_TotalRequestCharge()": {
"Type": "Method",
"Attributes": [],
"MethodInfo": "Double get_TotalRequestCharge();IsAbstract:True;IsStatic:False;IsVirtual:True;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
},
"Double TotalRequestCharge": {
"Type": "Property",
"Attributes": [],
"MethodInfo": "Double TotalRequestCharge;CanRead:True;CanWrite:False;Double get_TotalRequestCharge();IsAbstract:True;IsStatic:False;IsVirtual:True;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
},
"Microsoft.Azure.Cosmos.ServerSideMetrics CumulativeMetrics": {
"Type": "Property",
"Attributes": [],
Expand Down Expand Up @@ -9276,11 +9266,21 @@
"Attributes": [],
"MethodInfo": "Double get_IndexHitRatio();IsAbstract:True;IsStatic:False;IsVirtual:True;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
},
"Double get_RequestCharge()": {
"Type": "Method",
"Attributes": [],
"MethodInfo": "Double get_RequestCharge();IsAbstract:True;IsStatic:False;IsVirtual:True;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
},
"Double IndexHitRatio": {
"Type": "Property",
"Attributes": [],
"MethodInfo": "Double IndexHitRatio;CanRead:True;CanWrite:False;Double get_IndexHitRatio();IsAbstract:True;IsStatic:False;IsVirtual:True;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
},
"Double RequestCharge": {
"Type": "Property",
"Attributes": [],
"MethodInfo": "Double RequestCharge;CanRead:True;CanWrite:True;Double get_RequestCharge();IsAbstract:True;IsStatic:False;IsVirtual:True;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
},
"Int64 get_OutputDocumentCount()": {
"Type": "Method",
"Attributes": [],
Expand Down

0 comments on commit 2999084

Please sign in to comment.