@@ -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