diff --git a/benchmarks/TimescaleBenchmark/TimescaleBenchmark.csproj b/benchmarks/TimescaleBenchmark/TimescaleBenchmark.csproj index 8d10663..6ee4d3b 100644 --- a/benchmarks/TimescaleBenchmark/TimescaleBenchmark.csproj +++ b/benchmarks/TimescaleBenchmark/TimescaleBenchmark.csproj @@ -8,7 +8,7 @@ - + diff --git a/examples/Demo/Demo.csproj b/examples/Demo/Demo.csproj index ad19093..54310a6 100644 --- a/examples/Demo/Demo.csproj +++ b/examples/Demo/Demo.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/NBomber.Sinks.Timescale/Contracts/ColumnNames.cs b/src/NBomber.Sinks.Timescale/Contracts/ColumnNames.cs index 0eaebae..150e967 100644 --- a/src/NBomber.Sinks.Timescale/Contracts/ColumnNames.cs +++ b/src/NBomber.Sinks.Timescale/Contracts/ColumnNames.cs @@ -6,6 +6,7 @@ public static class ColumnNames public const string ScenarioTimestamp = "scenario_timestamp"; public const string SessionId = "session_id"; public const string CurrentOperation = "current_operation"; + public const string Metadata = "metadata"; public const string NodeInfo = "node_info"; public const string TestSuite = "test_suite"; @@ -13,7 +14,9 @@ public static class ColumnNames public const string Scenario = "scenario"; public const string Step = "step"; - + public const string SortIndex = "sort_index"; + + public const string AllReqCount = "all_req_count"; public const string AllDataAll = "all_data_all"; diff --git a/src/NBomber.Sinks.Timescale/Contracts/PointDbRecord.cs b/src/NBomber.Sinks.Timescale/Contracts/PointDbRecord.cs index 875567d..7144746 100644 --- a/src/NBomber.Sinks.Timescale/Contracts/PointDbRecord.cs +++ b/src/NBomber.Sinks.Timescale/Contracts/PointDbRecord.cs @@ -15,6 +15,7 @@ public class PointDbRecord [Column(ColumnNames.Scenario)] public string Scenario { get; set; } [Column(ColumnNames.Step)] public string Step { get; set; } + [Column(ColumnNames.SortIndex)] public int SortIndex { get; set; } [Column(ColumnNames.AllReqCount)] public int AllReqCount { get; set; } [Column(ColumnNames.AllDataAll)] public long AllDataAll { get; set; } @@ -71,5 +72,6 @@ public class NodeInfoDbRecord [Column(ColumnNames.CurrentOperation)] public OperationType CurrentOperation { get; set; } [Column(ColumnNames.TestSuite)] public string TestSuite { get; set; } [Column(ColumnNames.TestName)] public string TestName { get; set; } + [Column(ColumnNames.Metadata)] public string Metadata{ get; set; } [Column(ColumnNames.NodeInfo)] public string NodeInfo { get; set; } } \ No newline at end of file diff --git a/src/NBomber.Sinks.Timescale/NBomber.Sinks.Timescale.csproj b/src/NBomber.Sinks.Timescale/NBomber.Sinks.Timescale.csproj index 9bc40de..d5dff2f 100644 --- a/src/NBomber.Sinks.Timescale/NBomber.Sinks.Timescale.csproj +++ b/src/NBomber.Sinks.Timescale/NBomber.Sinks.Timescale.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/NBomber.Sinks.Timescale/SqlQueries.cs b/src/NBomber.Sinks.Timescale/SqlQueries.cs index 1e50e5b..69e7a2d 100644 --- a/src/NBomber.Sinks.Timescale/SqlQueries.cs +++ b/src/NBomber.Sinks.Timescale/SqlQueries.cs @@ -18,7 +18,8 @@ CREATE TABLE IF NOT EXISTS ""{StepStatsTable}"" ""{ColumnNames.CurrentOperation}"" TEXT, ""{ColumnNames.Scenario}"" TEXT, - ""{ColumnNames.Step}"" TEXT, + ""{ColumnNames.Step}"" TEXT, + ""{ColumnNames.SortIndex}"" INT, ""{ColumnNames.AllReqCount}"" INT, ""{ColumnNames.AllDataAll}"" BIGINT, @@ -79,6 +80,7 @@ CREATE TABLE IF NOT EXISTS ""{SessionsTable}"" ""{ColumnNames.CurrentOperation}"" TEXT, ""{ColumnNames.TestSuite}"" TEXT, ""{ColumnNames.TestName}"" TEXT, + ""{ColumnNames.Metadata}"" JSONB, ""{ColumnNames.NodeInfo}"" JSONB ); "; diff --git a/src/NBomber.Sinks.Timescale/TimescaleDbSink.cs b/src/NBomber.Sinks.Timescale/TimescaleDbSink.cs index 15ecb86..050793b 100644 --- a/src/NBomber.Sinks.Timescale/TimescaleDbSink.cs +++ b/src/NBomber.Sinks.Timescale/TimescaleDbSink.cs @@ -68,7 +68,7 @@ public async Task Init(IBaseContext context, IConfiguration infraConfig) await migration.Run(); } - public async Task Start() + public async Task Start(SessionStartInfo sessionInfo) { if (_mainConnection != null) { @@ -82,6 +82,7 @@ public async Task Start() CurrentOperation = OperationType.Bombing, TestSuite = testInfo.TestSuite, TestName = testInfo.TestName, + Metadata = Json.serialize(sessionInfo), NodeInfo = Json.serialize(nodeInfo) }; @@ -91,6 +92,7 @@ public async Task Start() ""{ColumnNames.CurrentOperation}"", ""{ColumnNames.TestSuite}"", ""{ColumnNames.TestName}"", + ""{ColumnNames.Metadata}"", ""{ColumnNames.NodeInfo}"") VALUES ('{record.Time}', @@ -98,6 +100,7 @@ public async Task Start() '{record.CurrentOperation}', '{record.TestSuite}', '{record.TestName}', + '{record.Metadata}'::jsonb, '{record.NodeInfo}'::jsonb)"; try { @@ -164,7 +167,7 @@ private async Task SaveScenarioStats(ScenarioStats[] stats, bool isFinal = false private ScenarioStats AddGlobalInfoStep(ScenarioStats scnStats) { - var globalStepInfo = new StepStats("global information", scnStats.Ok, scnStats.Fail); + var globalStepInfo = new StepStats("global information", scnStats.Ok, scnStats.Fail, 0); scnStats.StepStats = scnStats.StepStats.Append(globalStepInfo).ToArray(); return scnStats; @@ -197,6 +200,7 @@ private PointDbRecord[] MapToPoint(ScenarioStats scnStats, DateTime currentTime) CurrentOperation = nodeInfo.CurrentOperation, Scenario = scnStats.ScenarioName, Step = step.StepName, + SortIndex = step.SortIndex, AllReqCount = step.Ok.Request.Count + step.Fail.Request.Count, AllDataAll = step.Ok.DataTransfer.AllBytes + step.Fail.DataTransfer.AllBytes, diff --git a/tests/Nbomber.Sinks.Timescale.Tests/Nbomber.Sinks.Timescale.Tests.csproj b/tests/Nbomber.Sinks.Timescale.Tests/Nbomber.Sinks.Timescale.Tests.csproj index f5a73b1..02d30d5 100644 --- a/tests/Nbomber.Sinks.Timescale.Tests/Nbomber.Sinks.Timescale.Tests.csproj +++ b/tests/Nbomber.Sinks.Timescale.Tests/Nbomber.Sinks.Timescale.Tests.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -16,7 +16,7 @@ - +