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-
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy