Skip to content

Commit d630c41

Browse files
committed
adding sysbench version
1 parent 94e1423 commit d630c41

1 file changed

Lines changed: 26 additions & 19 deletions

File tree

src/VirtualClient/VirtualClient.Actions/Sysbench/SysbenchMetricsParser.cs

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class SysbenchMetricsParser : MetricsParser
1919
private const string ReconnectsPerSecond = "reconnects/sec";
2020
private const string Second = "seconds";
2121
private const string MilliSecond = "milliseconds";
22+
private Dictionary<string, IConvertible> metricMetadata = new Dictionary<string, IConvertible>();
2223

2324
/// <summary>
2425
/// Constructor for <see cref="SysbenchMetricsParser"/>
@@ -32,29 +33,32 @@ public SysbenchMetricsParser(string rawText)
3233
/// <inheritdoc/>
3334
public override IList<Metric> Parse()
3435
{
36+
var match = Regex.Match(this.RawText, @"sysbench\s+([\d\.]+-[\w\d]+)");
37+
string sysbenchversion = match.Success ? match.Groups[1].Value : string.Empty;
38+
this.metricMetadata["sysbench_version"] = sysbenchversion;
3539
this.Preprocess();
3640
List<Metric> metrics = new List<Metric>();
3741

3842
// Create list of Metrics Info
3943
List<MetricInfo> metricInfoList = new List<MetricInfo>()
4044
{
41-
new MetricInfo("# read queries", string.Empty, MetricRelativity.HigherIsBetter),
42-
new MetricInfo("# write queries", string.Empty, MetricRelativity.HigherIsBetter),
43-
new MetricInfo("# other queries", string.Empty, MetricRelativity.HigherIsBetter),
44-
new MetricInfo("# transactions", string.Empty, MetricRelativity.HigherIsBetter),
45-
new MetricInfo("transactions/sec", TransactionsPerSecond, MetricRelativity.HigherIsBetter),
46-
new MetricInfo("# queries", string.Empty, MetricRelativity.HigherIsBetter),
47-
new MetricInfo("queries/sec", QueriesPerSecond, MetricRelativity.HigherIsBetter),
48-
new MetricInfo("# ignored errors", string.Empty, MetricRelativity.HigherIsBetter),
49-
new MetricInfo("ignored errors/sec", IgnoredErrorsPerSecond, MetricRelativity.HigherIsBetter),
50-
new MetricInfo("# reconnects", string.Empty, MetricRelativity.HigherIsBetter),
51-
new MetricInfo("reconnects/sec", ReconnectsPerSecond, MetricRelativity.HigherIsBetter),
52-
new MetricInfo("elapsed time", Second, MetricRelativity.LowerIsBetter),
53-
new MetricInfo("latency min", MilliSecond, MetricRelativity.LowerIsBetter),
54-
new MetricInfo("latency avg", MilliSecond, MetricRelativity.LowerIsBetter),
55-
new MetricInfo("latency max", MilliSecond, MetricRelativity.LowerIsBetter),
56-
new MetricInfo("latency p95", MilliSecond, MetricRelativity.LowerIsBetter),
57-
new MetricInfo("latency sum", MilliSecond, MetricRelativity.LowerIsBetter),
45+
new MetricInfo("# read queries", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
46+
new MetricInfo("# write queries", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
47+
new MetricInfo("# other queries", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
48+
new MetricInfo("# transactions", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
49+
new MetricInfo("transactions/sec", TransactionsPerSecond, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
50+
new MetricInfo("# queries", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
51+
new MetricInfo("queries/sec", QueriesPerSecond, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
52+
new MetricInfo("# ignored errors", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
53+
new MetricInfo("ignored errors/sec", IgnoredErrorsPerSecond, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
54+
new MetricInfo("# reconnects", string.Empty, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
55+
new MetricInfo("reconnects/sec", ReconnectsPerSecond, MetricRelativity.HigherIsBetter, metadata: this.metricMetadata),
56+
new MetricInfo("elapsed time", Second, MetricRelativity.LowerIsBetter, metadata: this.metricMetadata),
57+
new MetricInfo("latency min", MilliSecond, MetricRelativity.LowerIsBetter, metadata: this.metricMetadata),
58+
new MetricInfo("latency avg", MilliSecond, MetricRelativity.LowerIsBetter, metadata: this.metricMetadata),
59+
new MetricInfo("latency max", MilliSecond, MetricRelativity.LowerIsBetter, metadata: this.metricMetadata),
60+
new MetricInfo("latency p95", MilliSecond, MetricRelativity.LowerIsBetter, metadata: this.metricMetadata),
61+
new MetricInfo("latency sum", MilliSecond, MetricRelativity.LowerIsBetter, metadata: this.metricMetadata),
5862
};
5963

6064
if (!string.IsNullOrEmpty(this.PreprocessedText))
@@ -84,7 +88,7 @@ public override IList<Metric> Parse()
8488
{
8589
MetricInfo metricInfo = metricInfoList[metricInfoIndex];
8690
Match m = mc[mcIndex];
87-
metrics.Add(new Metric($"{metricInfo.Name}", Convert.ToDouble(m.Value), metricInfo.Unit, metricInfo.Relativity));
91+
metrics.Add(new Metric($"{metricInfo.Name}", Convert.ToDouble(m.Value), metricInfo.Unit, metricInfo.Relativity, metadata: metricInfo.Metadata));
8892
metricInfoIndex++;
8993
}
9094

@@ -107,18 +111,21 @@ protected override void Preprocess()
107111
// helper class that contains Metric Name, Unit, and Relativity
108112
private class MetricInfo
109113
{
110-
public MetricInfo(string name, string unit, MetricRelativity relativity)
114+
public MetricInfo(string name, string unit, MetricRelativity relativity, Dictionary<string, IConvertible> metadata)
111115
{
112116
this.Name = name;
113117
this.Unit = unit;
114118
this.Relativity = relativity;
119+
this.Metadata = metadata;
115120
}
116121

117122
public string Name { get; set; }
118123

119124
public string Unit { get; set; }
120125

121126
public MetricRelativity Relativity { get; set; }
127+
128+
public Dictionary<string, IConvertible> Metadata { get; set; }
122129
}
123130
}
124131
}

0 commit comments

Comments
 (0)