Skip to content

Commit e25cbee

Browse files
committed
Changed to Task
1 parent 2275ff5 commit e25cbee

File tree

5 files changed

+1442
-1672
lines changed

5 files changed

+1442
-1672
lines changed

PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public static void OnMenuClick(int index)
185185
{
186186
var testResultWindow = new TestRunnerWindow(testRunner);
187187
windows.Add(testResultWindow);
188-
testResultWindow.RunTests("_ALL", username, null, null, false);
188+
testResultWindow.RunTestsAsync("_ALL", username, null, null, false);
189189
}
190190
}
191191
else if (index == PLUGIN_MENU_INDEX_ALLTESTS_WITH_COVERAGE)
@@ -194,7 +194,7 @@ public static void OnMenuClick(int index)
194194
{
195195
var testResultWindow = new TestRunnerWindow(testRunner);
196196
windows.Add(testResultWindow);
197-
testResultWindow.RunTests("_ALL", username, null, null, true);
197+
testResultWindow.RunTestsAsync("_ALL", username, null, null, true);
198198
}
199199
}
200200
else if (index == PLUGIN_POPUP_INDEX)
@@ -209,7 +209,7 @@ public static void OnMenuClick(int index)
209209

210210
var testResultWindow = new TestRunnerWindow(testRunner);
211211
windows.Add(testResultWindow);
212-
testResultWindow.RunTests(Marshal.PtrToStringAnsi(type), Marshal.PtrToStringAnsi(owner), Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), false);
212+
testResultWindow.RunTestsAsync(Marshal.PtrToStringAnsi(type), Marshal.PtrToStringAnsi(owner), Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), false);
213213
}
214214
}
215215
}

PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/TestRunnerWindow.cs

Lines changed: 97 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Drawing;
55
using System.IO;
66
using System.Text;
7-
using System.Threading;
7+
using System.Threading.Tasks;
88
using System.Windows.Forms;
99
using utPLSQL;
1010

@@ -39,7 +39,7 @@ public TestRunnerWindow(RealTimeTestRunner testRunner)
3939
gridResults.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
4040
}
4141

42-
internal void RunTests(string type, string owner, string name, string procedure, bool coverage)
42+
internal async Task RunTestsAsync(string type, string owner, string name, string procedure, bool coverage)
4343
{
4444
Running = true;
4545

@@ -55,34 +55,115 @@ internal void RunTests(string type, string owner, string name, string procedure,
5555
DialogResult dialogResult = codeCoverateReportDialog.ShowDialog();
5656
if (dialogResult == DialogResult.OK)
5757
{
58-
new Thread(() =>
59-
{
60-
var schemas = ConvertToVarcharList(codeCoverateReportDialog.GetSchemas());
61-
var includes = ConvertToVarcharList(codeCoverateReportDialog.GetIncludes());
62-
var excludes = ConvertToVarcharList(codeCoverateReportDialog.GetExcludes());
63-
64-
testRunner.RunTestsWithCoverage(type, owner, name, procedure, schemas, includes, excludes);
65-
}).Start();
58+
RunWithCoverage(type, owner, name, procedure, codeCoverateReportDialog);
6659

6760
Show();
6861

6962
CollectResults(coverage);
70-
CollectReport(coverage);
63+
CollectReport();
7164
}
7265
}
7366
else
7467
{
75-
new Thread(() =>
76-
{
77-
testRunner.RunTests(type, owner, name, procedure);
78-
}).Start();
68+
RunTests(type, owner, name, procedure);
7969

8070
Show();
8171

8272
CollectResults(coverage);
8373
}
8474
}
8575

76+
private void RunTests(string type, string owner, string name, string procedure)
77+
{
78+
Task.Factory.StartNew(() => testRunner.RunTests(type, owner, name, procedure));
79+
}
80+
81+
private void RunWithCoverage(string type, string owner, string name, string procedure, CodeCoverateReportDialog codeCoverateReportDialog)
82+
{
83+
var schemas = ConvertToVarcharList(codeCoverateReportDialog.GetSchemas());
84+
var includes = ConvertToVarcharList(codeCoverateReportDialog.GetIncludes());
85+
var excludes = ConvertToVarcharList(codeCoverateReportDialog.GetExcludes());
86+
87+
Task.Factory.StartNew(() => testRunner.RunTestsWithCoverage(type, owner, name, procedure, schemas, includes, excludes));
88+
}
89+
90+
private void CollectResults(bool coverage)
91+
{
92+
var completetedTests = 0;
93+
94+
Task.Factory.StartNew(() => testRunner.ConsumeResult(@event =>
95+
{
96+
gridResults.BeginInvoke((MethodInvoker)delegate ()
97+
{
98+
if (@event.type.Equals("pre-run"))
99+
{
100+
totalNumberOfTests = @event.totalNumberOfTests;
101+
102+
progressBar.Minimum = 0;
103+
progressBar.Maximum = totalNumberOfTests * STEPS;
104+
progressBar.Step = STEPS;
105+
106+
CreateTestResults(@event);
107+
108+
gridResults.Rows[0].Selected = false;
109+
}
110+
else if (@event.type.Equals("post-test"))
111+
{
112+
completetedTests++;
113+
txtTests.Text = (completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests) + "/" + totalNumberOfTests;
114+
115+
UpdateProgressBar(completetedTests);
116+
117+
UpdateTestResult(@event);
118+
}
119+
else if (@event.type.Equals("post-run"))
120+
{
121+
txtStart.Text = @event.run.startTime.ToString();
122+
txtEnd.Text = @event.run.endTime.ToString();
123+
txtTime.Text = @event.run.executionTime + " s";
124+
125+
txtTests.Text = (completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests) + "/" + totalNumberOfTests;
126+
txtFailures.Text = @event.run.counter.failure + "";
127+
txtErrors.Text = @event.run.counter.error + "";
128+
txtDisabled.Text = @event.run.counter.disabled + "";
129+
130+
if (@event.run.counter.failure > 0 || @event.run.counter.error > 0)
131+
{
132+
progressBar.ForeColor = Color.DarkRed;
133+
}
134+
135+
if (!coverage)
136+
{
137+
txtStatus.Text = "Finished";
138+
Running = false;
139+
}
140+
}
141+
});
142+
}));
143+
}
144+
145+
private void CollectReport()
146+
{
147+
Task.Factory.StartNew(() =>
148+
{
149+
var start = DateTime.Now;
150+
txtStatus.Text = "Running with Coverage...";
151+
152+
string report = testRunner.GetCoverageReport();
153+
154+
string filePath = $"{Path.GetTempPath()}\\utPLSQL_Coverage_Report_{Guid.NewGuid()}.html";
155+
using (StreamWriter sw = new StreamWriter(filePath))
156+
{
157+
sw.WriteLine(report);
158+
}
159+
160+
txtStatus.Text = $"Finished in {(DateTime.Now - start)}";
161+
Running = false;
162+
163+
System.Diagnostics.Process.Start(filePath);
164+
});
165+
}
166+
86167
private string ConvertToVarcharList(string listValue)
87168
{
88169
if (String.IsNullOrWhiteSpace(listValue))
@@ -132,90 +213,6 @@ private static string JoinParts(string[] parts)
132213
}
133214
return sb.ToString();
134215
}
135-
136-
private void CollectReport(bool coverage)
137-
{
138-
new Thread(() =>
139-
{
140-
if (coverage)
141-
{
142-
var start = DateTime.Now;
143-
txtStatus.Text = "Running with Coverage...";
144-
145-
string report = testRunner.GetCoverageReport();
146-
147-
string filePath = $"{Path.GetTempPath()}\\utPLSQL_Coverage_Report_{Guid.NewGuid()}.html";
148-
using (StreamWriter sw = new StreamWriter(filePath))
149-
{
150-
sw.WriteLine(report);
151-
}
152-
153-
txtStatus.Text = $"Finished in {(DateTime.Now - start)}";
154-
Running = false;
155-
156-
System.Diagnostics.Process.Start(filePath);
157-
}
158-
}).Start();
159-
}
160-
161-
private void CollectResults(bool coverage)
162-
{
163-
new Thread(() =>
164-
{
165-
var completetedTests = 0;
166-
167-
testRunner.ConsumeResult(@event =>
168-
{
169-
gridResults.BeginInvoke((MethodInvoker)delegate ()
170-
{
171-
if (@event.type.Equals("pre-run"))
172-
{
173-
totalNumberOfTests = @event.totalNumberOfTests;
174-
175-
progressBar.Minimum = 0;
176-
progressBar.Maximum = totalNumberOfTests * STEPS;
177-
progressBar.Step = STEPS;
178-
179-
CreateTestResults(@event);
180-
181-
gridResults.Rows[0].Selected = false;
182-
}
183-
else if (@event.type.Equals("post-test"))
184-
{
185-
completetedTests++;
186-
txtTests.Text = (completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests) + "/" + totalNumberOfTests;
187-
188-
UpdateProgressBar(completetedTests);
189-
190-
UpdateTestResult(@event);
191-
}
192-
else if (@event.type.Equals("post-run"))
193-
{
194-
txtStart.Text = @event.run.startTime.ToString();
195-
txtEnd.Text = @event.run.endTime.ToString();
196-
txtTime.Text = @event.run.executionTime + " s";
197-
198-
txtTests.Text = (completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests) + "/" + totalNumberOfTests;
199-
txtFailures.Text = @event.run.counter.failure + "";
200-
txtErrors.Text = @event.run.counter.error + "";
201-
txtDisabled.Text = @event.run.counter.disabled + "";
202-
203-
if (@event.run.counter.failure > 0 || @event.run.counter.error > 0)
204-
{
205-
progressBar.ForeColor = Color.DarkRed;
206-
}
207-
208-
if (!coverage)
209-
{
210-
txtStatus.Text = "Finished";
211-
Running = false;
212-
}
213-
}
214-
});
215-
});
216-
}).Start();
217-
}
218-
219216
private void UpdateProgressBar(int completetedTests)
220217
{
221218
int newValue = (completetedTests * STEPS) + 1;
@@ -502,7 +499,7 @@ private void menuItemRunTests_Click(object sender, EventArgs e)
502499
TestResult testResult = testResults[rowIndexOnRightClick];
503500

504501
var testResultWindow = new TestRunnerWindow(testRunner);
505-
testResultWindow.RunTests(RealTimeTestRunner.PROCEDURE, testResult.Owner, testResult.Package, testResult.Procedure, false);
502+
testResultWindow.RunTestsAsync(RealTimeTestRunner.PROCEDURE, testResult.Owner, testResult.Package, testResult.Procedure, false);
506503
}
507504
}
508505
}

0 commit comments

Comments
 (0)