8000 Merge branch 'release/1.5.2' into main · utPLSQL/utPLSQL-dotnet-api@ff2ebe4 · GitHub
[go: up one dir, main page]

Skip to content

Commit ff2ebe4

Browse files
committed
Merge branch 'release/1.5.2' into main
2 parents 83712f7 + b2aae98 commit ff2ebe4

File tree

5 files changed

+133
-121
lines changed

5 files changed

+133
-121
lines changed

utPLSQL.Api/utPLSQL.Api.Test/RealTimeTestRunnerTest.cs

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
23
using Oracle.ManagedDataAccess.Client;
34
using System.Collections.Generic;
45
using System.Linq;
@@ -9,96 +10,122 @@ namespace utPLSQL
910
[TestClass]
1011
public class RealTimeTestRunnerTest
1112
{
13+
1214
[TestMethod]
1315
public async Task TestRunTests()
1416
{
1517
var testRunner = new RealTimeTestRunner();
16-
testRunner.Connect(username: "toscamtest", password: "toscamtest", database: "CA40");
18+
19+
testRunner.Connect(username: "ut3_tester", password: "ut3", database: "orclpdb1");
1720

1821
var events = new List<@event>();
19-
await testRunner.RunTestsAsync("toscamtest", @event =>
22+
await testRunner.RunTestsAsync("ut3_tester.test_ut_test", @event =>
2023
{
2124
events.Add(@event);
2225
});
2326

2427
Assert.AreEqual("pre-run", events[0].type);
2528
Assert.AreEqual("post-run", events.Last().type);
29+
30+
testRunner.Close();
2631
}
2732

2833
[TestMethod]
29-
public async Task TestConnectAsAsync()
34+
public async Task TestConnectAs()
3035
{
3136
var testRunner = new RealTimeTestRunner();
32 F438 -
testRunner.Connect(username: "sys", password: "Oradoc_db1", database: "ORCLPDB1", connectAs: "SYSDBA");
37+
38+
testRunner.Connect(username: "sys", password: "Oradoc_db1", database: "orclpdb1", connectAs: "sysdba");
3339

3440
try
3541
{
36-
await testRunner.RunTestsAsync("toscamtest", @event => { });
42+
await testRunner.RunTestsAsync("ut3_tester.test_ut_test", @event => { });
3743

3844
Assert.Fail();
3945
}
4046
catch (OracleException e)
4147
{
4248
Assert.IsTrue(e.Message.StartsWith("ORA-06598"));
49+
50+
testRunner.Close();
4351
}
4452
}
4553

4654
[TestMethod]
47-
public async Task TestRunTestsWithCoverageAsync()
55+
public async Task TestRunTestsWithCoverage()
4856
{
4957
var testRunner = new RealTimeTestRunner();
50-
testRunner.Connect(username: "toscamtest", password: "toscamtest", database: "CA40");
58+
59+
testRunner.Connect(username: "ut3_tester", password: "ut3", database: "orclpdb1");
5160

5261
var events = new List<@event>();
5362

54-
string report = await testRunner.RunTestsWithCoverageAsync(path: "toscamtest", consumer: @event => { events.Add(@event); },
55-
coverageSchema: "toscam", includeObjects: new List<string>() { "pa_m720", "pa_m770" });
63+
string report = await testRunner.RunTestsWithCoverageAsync(path: "ut3_tester.test_ut_test", consumer: @event => { events.Add(@event); },
64+
coverageSchema: "ut3_develop", includeObjects: new List<string>() { "ut_test" });
65+
Logger.LogMessage(report);
5666

5767
Assert.AreEqual("pre-run", events[0].type);
5868
Assert.AreEqual("post-run", events.Last().type);
5969

60-
System.Diagnostics.Trace.WriteLine(report);
70+
testRunner.Close();
6171
}
6272

63-
6473
[TestMethod]
6574
public void TestRunTestsAndAbort()
6675
{
6776
var testRunner = new RealTimeTestRunner();
68-
testRunner.Connect(username: "toscamtest", password: "toscamtest", database: "CA40");
6977

70-
testRunner.RunTestsAsync("toscamtest", @event => { });
78+
testRunner.Connect(username: "ut3_tester", password: "ut3", database: "orclpdb1");
79+
80+
testRunner.RunTestsAsync("ut3_tester.test_ut_test", @event => { });
7181

7282
testRunner.Close();
7383
}
7484

7585
[TestMethod]
76-
public async Task TestRunTestsTwoTimesAsync()
86+
public async Task TestRunTestsTwoTimes()
7787
{
7888
var testRunner = new RealTimeTestRunner();
79-
testRunner.Connect(username: "toscamtest", password: "toscamtest", database: "CA40");
8089

81-
testRunner.RunTestsAsync("toscamtest", @event => { });
90+
testRunner.Connect(username: "ut3_tester", password: "ut3", database: "orclpdb1");
8291

83-
await testRunner.RunTestsAsync("toscamtest", @event => { });
92+
var events1 = new List<@event>();
93+
Task task1 = testRunner.RunTestsAsync("ut3_tester.test_ut_test", @event =>
94+
{
95+
events1.Add(@event);
96+
});
97+
98+
var events2 = new List<@event>();
99+
Task task2 = testRunner.RunTestsAsync("ut3_tester.test_ut_test", @event =>
100+
{
101+
events2.Add(@event);
102+
});
103+
104+
await Task.WhenAll(task1, task2);
105+
106+
testRunner.Close();
84107
}
85108

86109
[TestMethod]
87110
public void TestGetVersion()
88111
{
89112
var testRunner = new RealTimeTestRunner();
90-
testRunner.Connect(username: "toscamtest", password: "toscamtest", database: "CA40");
113+
114+
testRunner.Connect(username: "ut3_tester", password: "ut3", database: "orclpdb1");
91115

92116
string version = testRunner.GetVersion();
93117

94-
Assert.AreEqual("v3.1.7.3096", version);
118+
Assert.AreEqual("v3.1.11.3469-develop", version);
119+
120+
testRunner.Close();
95121
}
96122

97123
// [TestMethod] Disabled
98124
public void TestGetVersionWhenNotInstalled()
99125
{
100126
var testRunner = new RealTimeTestRunner();
101-
testRunner.Connect(username: "sakila", password: "sakila", database: "ORCLPDB1");
127+
128+
testRunner.Connect(username: "ut3_tester", password: "ut3", database: "orclpdb1");
102129

103130
try
104131
{
@@ -108,6 +135,8 @@ public void TestGetVersionWhenNotInstalled()
108135
catch (OracleException e)
109136
{
110137
Assert.AreEqual("ORA-00904: \"UT\".\"VERSION\": ungültige ID", e.Message);
138+
139+
testRunner.Close();
111140
}
112141
}
113142
}

utPLSQL.Api/utPLSQL.Api/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.5.1.0")]
36-
[assembly: AssemblyFileVersion("1.5.1.0")]
35+
[assembly: AssemblyVersion("1.5.2.0")]
36+
[assembly: AssemblyFileVersion("1.5.2.0")]

utPLSQL.Api/utPLSQL.Api/RealTimeTestRunner.cs

Lines changed: 61 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ public override async Task RunTestsAsync(List<string> paths, Action<@event> cons
1919
{
2020
string realtimeReporterId = Guid.NewGuid().ToString().Replace("-", "");
2121

22-
Task taskRun = UtRunAsync(realtimeReporterId, paths);
23-
24-
Task taskConsume = ConsumeResultAsync(realtimeReporterId, consumer);
22+
Task taskRun = Task.Run(() => { UtRun(realtimeReporterId, paths); });
23+
Task taskConsume = Task.Run(() => { ConsumeResult(realtimeReporterId, consumer); });
2524

2625
await Task.WhenAll(taskRun, taskConsume);
2726
}
@@ -39,25 +38,28 @@ public override async Task<string> RunTestsWithCoverageAsync(List<string> paths,
3938
string realtimeReporterId = Guid.NewGuid().ToString().Replace("-", "");
4039
string coverageReporterId = Guid.NewGuid().ToString().Replace("-", "");
4140

42-
Task taskRun = UtRunWithCoverageAsync(realtimeReporterId, coverageReporterId, paths, coverageSchemas, includeObjects, excludeObjects);
43-
44-
Task taskConsume = ConsumeResultAsync(realtimeReporterId, consumer);
41+
Task taskRun = Task.Run(() => { UtRunWithCoverage(realtimeReporterId, coverageReporterId, paths, coverageSchemas, includeObjects, excludeObjects); });
42+
Task taskConsume = Task.Run(() => { ConsumeResult(realtimeReporterId, consumer); });
43+
Task<string> taskCoverateReport = Task.Run(() => { return GetCoverageReport(coverageReporterId); });
4544

46-
await Task.WhenAll(taskRun, taskConsume);
45+
await Task.WhenAll(taskRun, taskConsume, taskCoverateReport);
4746

48-
return await GetCoverageReportAsync(coverageReporterId);
47+
return taskCoverateReport.Result;
4948
}
5049
else
5150
{
5251
return null;
5352
}
5453
}
5554

56-
private async Task UtRunWithCoverageAsync(string realtimeReporterId, string coverageReporterId, List<string> paths, List<string> coverageSchemas, List<string> includeObjects, List<string> excludeObjects)
55+
public override async Task<string> RunTestsWithCoverageAsync(string path, Action<@event> consumer, string coverageSchema = null, List<string> includeObjects = null, List<string> excludeObjects = null)
5756
{
58-
await Task.Run(() =>
59-
{
60-
var proc = $@"DECLARE
57+
return await RunTestsWithCoverageAsync(new List<string>() { path }, consumer, new List<string>() { coverageSchema }, includeObjects, excludeObjects);
58+
}
59+
60+
private void UtRunWithCoverage(string realtimeReporterId, string coverageReporterId, List<string> paths, List<string> coverageSchemas, List<string> includeObjects, List<string> excludeObjects)
61+
{
62+
var proc = $@"DECLARE
6163
l_rt_rep ut_realtime_reporter := ut_realtime_reporter();
6264
l_cov_rep ut_coverage_html_reporter := ut_coverage_html_reporter();
6365
BEGIN
@@ -68,48 +70,40 @@ await Task.Run(() =>
6870
sys.dbms_output.enable(NULL);
6971
ut_runner.run(a_paths => ut_varchar2_list({ConvertToUtVarchar2List(paths)}), ";
7072

71-
if (coverageSchemas != null && coverageSchemas.Count > 0)
72-
{
73-
proc += $"a_coverage_schemes => ut_varchar2_list({ConvertToUtVarchar2List(coverageSchemas)}), ";
74-
}
73+
if (coverageSchemas != null && coverageSchemas.Count > 0)
74+
{
75+
proc += $"a_coverage_schemes => ut_varchar2_list({ConvertToUtVarchar2List(coverageSchemas)}), ";
76+
}
7577

76-
if (includeObjects != null && includeObjects.Count > 0)
77-
{
78-
proc += $"a_include_objects => ut_varchar2_list({ConvertToUtVarchar2List(includeObjects)}), ";
79-
}
78+
if (includeObjects != null && includeObjects.Count > 0)
79+
{
80+
proc += $"a_include_objects => ut_varchar2_list({ConvertToUtVarchar2List(includeObjects)}), ";
81+
}
8082

81-
if (excludeObjects != null && excludeObjects.Count > 0)
82-
{
83-
proc += $"a_exclude_objects => ut_varchar2_list({ConvertToUtVarchar2List(excludeObjects)}), ";
84-
}
83+
if (excludeObjects != null && excludeObjects.Count > 0)
84+
{
85+
proc += $"a_exclude_objects => ut_varchar2_list({ConvertToUtVarchar2List(excludeObjects)}), ";
86+
}
8587

86-
proc += @" a_reporters => ut_reporters(l_rt_rep, l_cov_rep));
88+
proc += @" a_reporters => ut_reporters(l_rt_rep, l_cov_rep));
8789
sys.dbms_output.disable;
8890
END;";
8991

90-
var cmd = new OracleCommand(proc, produceConnection);
91-
runningCommands.Add(cmd);
92+
var cmd = new OracleCommand(proc, produceConnection);
93+
runningCommands.Add(cmd);
9294

93-
cmd.Parameters.Add("id", OracleDbType.Varchar2, ParameterDirection.Input).Value = realtimeReporterId;
94-
cmd.Parameters.Add("coverage_id", OracleDbType.Varchar2, ParameterDirection.Input).Value = coverageReporterId;
95+
cmd.Parameters.Add("id", OracleDbType.Varchar2, ParameterDirection.Input).Value = realtimeReporterId;
96+
cmd.Parameters.Add("coverage_id", OracleDbType.Varchar2, ParameterDirection.Input).Value = coverageReporterId;
9597

96-
cmd.ExecuteNonQuery();
98+
cmd.ExecuteNonQuery();
9799

98-
runningCommands.Remove(cmd);
99-
cmd.Dispose();
100-
});
101-
}
102-
103-
public override async Task<string> RunTestsWithCoverageAsync(string path, Action<@event> consumer, string coverageSchema = null, List<string> includeObjects = null, List<string> excludeObjects = null)
104-
{
105-
return await RunTestsWithCoverageAsync(new List<string>() { path }, consumer, new List<string>() { coverageSchema }, includeObjects, excludeObjects);
100+
runningCommands.Remove(cmd);
101+
cmd.Dispose();
106102
}
107103

108-
private async Task UtRunAsync(string id, List<string> paths)
104+
private void UtRun(string id, List<string> paths)
109105
{
110-
await Task.Run(() =>
111-
{
112-
var proc = $@"DECLARE
106+
var proc = $@"DECLARE
113107
l_reporter ut_realtime_reporter := ut_realtime_reporter();
114108
BEGIN
115109
l_reporter.set_reporter_id(:id);
@@ -118,53 +112,49 @@ await Task.Run(() =>
118112
a_reporters => ut_reporters(l_reporter));
119113
END;";
120114

121-
var cmd = new OracleCommand(proc, produceConnection);
122-
runningCommands.Add(cmd);
115+
var cmd = new OracleCommand(proc, produceConnection);
116+
runningCommands.Add(cmd);
123117

124-
cmd.Parameters.Add("id", OracleDbType.Varchar2, ParameterDirection.Input).Value = id;
125-
cmd.ExecuteNonQuery();
118+
cmd.Parameters.Add("id", OracleDbType.Varchar2, ParameterDirection.Input).Value = id;
119+
cmd.ExecuteNonQuery();
126120

127-
runningCommands.Remove(cmd);
128-
cmd.Dispose();
129-
});
121+
runningCommands.Remove(cmd);
122+
cmd.Dispose();
130123
}
131124

132-
private async Task ConsumeResultAsync(string id, Action<@event> action)
125+
private void ConsumeResult(string id, Action<@event> action)
133126
{
134-
await Task.Run(() =>
135-
{
136-
var proc = @"DECLARE
127+
var proc = @"DECLARE
137128
l_reporter ut_realtime_reporter := ut_realtime_reporter();
138129
BEGIN
139130
l_reporter.set_reporter_id(:id);
140131
:lines_cursor := l_reporter.get_lines_cursor();
141132
END;";
142133

143-
var cmd = new OracleCommand(proc, consumeConnection);
144-
runningCommands.Add(cmd);
134+
var cmd = new OracleCommand(proc, consumeConnection);
135+
runningCommands.Add(cmd);
145136

146-
cmd.Parameters.Add("id", OracleDbType.Varchar2, ParameterDirection.Input).Value = id;
147-
cmd.Parameters.Add("lines_cursor", OracleDbType.RefCursor, ParameterDirection.Output);
137+
cmd.Parameters.Add("id", OracleDbType.Varchar2, ParameterDirection.Input).Value = id;
138+
cmd.Parameters.Add("lines_cursor", OracleDbType.RefCursor, ParameterDirection.Output);
148139

149-
// https://stackoverflow.com/questions/2226769/bad-performance-with-oracledatareader
150-
cmd.InitialLOBFetchSize = -1;
140+
// https://stackoverflow.com/questions/2226769/bad-performance-with-oracledatareader
141+
cmd.InitialLOBFetchSize = -1;
151142

152-
var reader = cmd.ExecuteReader();
153-
while (reader.Read())
154-
{
155-
var xml = reader.GetString(0);
143+
var reader = cmd.ExecuteReader();
144+
while (reader.Read())
145+
{
146+
var xml = reader.GetString(0);
156147

157-
var serializer = new XmlSerializer(typeof(@event));
158-
var @event = (@event)serializer.Deserialize(new StringReader(xml));
148+
var serializer = new XmlSerializer(typeof(@event));
149+
var @event = (@event)serializer.Deserialize(new StringReader(xml));
159150

160-
action.Invoke(@event);
161-
}
151+
action.Invoke(@event);
152+
}
162153

163-
reader.Close();
154+
reader.Close();
164155

165-
runningCommands.Remove(cmd);
166-
cmd.Dispose();
167-
});
156+
runningCommands.Remove(cmd);
157+
cmd.Dispose();
168158
}
169159
}
170160
}

0 commit comments

Comments
 (0)
0