3
3
using DnsCrypt . Stamps ;
4
4
using System ;
5
5
using System . Collections . Generic ;
6
+ using System . Diagnostics ;
6
7
using System . IO ;
7
8
using System . Linq ;
8
9
using System . Threading . Tasks ;
@@ -116,24 +117,27 @@ private static async Task Main(string[] args)
116
117
if ( File . Exists ( list ) )
117
118
{
118
119
var stamps = StampTools . ReadStampFile ( list , noLogs , noFilter , onlyDnssec ) ;
119
- var measurementResults = new List < MeasurementResult > ( ) ;
120
120
if ( ! json )
121
121
{
122
- Console . WriteLine ( "Stay tuned . . . i`am working " ) ;
122
+ Console . WriteLine ( "measuring . . ." ) ;
123
123
}
124
-
124
+ var stopWatch = new Stopwatch ( ) ;
125
+ stopWatch . Start ( ) ;
126
+ var measurementTasks = new List < Task < MeasurementResult > > ( ) ;
125
127
foreach ( var stamp in stamps )
126
128
{
127
129
if ( stamp . Protocol == StampProtocol . DnsCrypt )
128
130
{
129
- var measurement = await MeasurementTools . Proxy ( stamp ) . ConfigureAwait ( false ) ;
130
- if ( ! measurement . Failed )
131
- {
132
- measurementResults . Add ( measurement ) ;
133
- }
131
+ measurementTasks . Add ( MeasurementTools . Proxy ( stamp ) ) ;
134
132
}
135
133
}
136
- measurementResults . Sort ( ( a , b ) => a . Time . CompareTo ( b . Time ) ) ;
134
+
135
+ var measurements = await Task . WhenAll ( measurementTasks ) ;
136
+ var measurementResults = measurements . Where ( measurement => ! measurement . Failed ) . ToList ( ) ;
137
+
138
+ stopWatch . Stop ( ) ;
139
+ var ts = stopWatch . Elapsed ;
140
+ measurementResults . Sort ( ( a , b ) => a . Time . CompareTo ( b . Time ) ) ;
137
141
if ( ! json )
138
142
{
139
143
Console . WriteLine ( "=====================================" ) ;
@@ -142,6 +146,8 @@ private static async Task Main(string[] args)
142
146
Console . WriteLine ( $ "Only NoLogs: { noLogs } ") ;
143
147
Console . WriteLine ( $ "Only NoFilter: { noFilter } ") ;
144
148
Console . WriteLine ( "=====================================" ) ;
149
+
150
+ Console . WriteLine ( ) ;
145
151
foreach ( var measurement in measurementResults )
146
152
{
147
153
Console . WriteLine (
@@ -151,7 +157,8 @@ private static async Task Main(string[] args)
151
157
$ "DNSSEC: { measurement . Stamp . Properties . DnsSec } , " +
152
158
$ "Certificate Valid: { measurement . Certificate . Valid } ") ;
153
159
}
154
- }
160
+ Console . WriteLine ( "Total processing time: " + string . Format ( "{0} min {1} seconds" , Math . Floor ( ts . TotalMinutes ) , ts . ToString ( "ss\\ .ff" ) ) ) ;
161
+ }
155
162
else
156
163
{
157
164
Console . WriteLine ( JsonConvert . SerializeObject ( measurementResults . Where ( m => m . Failed == false ) . ToList ( ) , Formatting . Indented ) ) ;
@@ -161,7 +168,6 @@ private static async Task Main(string[] args)
161
168
{
162
169
Console . WriteLine ( "Missing resolvers.md" ) ;
163
170
}
164
- Console . ReadLine ( ) ;
165
171
}
166
172
167
173
private static void ShowHelp ( OptionSet p )
0 commit comments