1515 System . Func <
1616 System . Collections . Generic . IDictionary < string , object > ,
1717 System . Threading . Tasks . Task > > ;
18+
1819 using BuildFunc = System . Action <
1920 System . Func <
2021 System . Func <
@@ -44,24 +45,24 @@ public static async Task<int> Main(string[] args)
4445 using ( var server = new KestrelOwinServer ( options ) )
4546 using ( var streamStore = new InMemoryStreamStore ( ) )
4647 {
47- await server . Start ( new UriBuilder
48- {
49- Port = port
50- } . Uri . ToString ( ) , Configure ( streamStore ) , CancellationToken . None ) ;
48+ var url = new UriBuilder { Port = port } . Uri . ToString ( ) ;
49+ var owinPipeline = Configure ( streamStore ) ;
50+
51+ await server . Start ( url , owinPipeline , CancellationToken . None ) ;
5152
52- DisplayMenu ( streamStore ) ;
53+ DisplayMenu ( streamStore , url ) ;
5354 }
5455
5556 return 0 ;
5657 }
5758
5859 private static Action < BuildFunc > Configure ( IStreamStore streamStore )
5960 => builder => builder
60- . Use ( DisplayErrors )
61+ . Use ( CatchAndDisplayErrors )
6162 . Use ( AllowAllOrigins )
6263 . Use ( SqlStreamStoreHalMiddleware . UseSqlStreamStoreHal ( streamStore ) ) ;
6364
64- private static MidFunc DisplayErrors => next => async env =>
65+ private static MidFunc CatchAndDisplayErrors => next => async env =>
6566 {
6667 try
6768 {
@@ -87,10 +88,11 @@ private static Action<BuildFunc> Configure(IStreamStore streamStore)
8788 return next ( env ) ;
8889 } ;
8990
90- private static void DisplayMenu ( IStreamStore streamStore )
91+ private static void DisplayMenu ( IStreamStore streamStore , string url )
9192 {
9293 while ( true )
9394 {
95+ Console . WriteLine ( "Using stream store: {0}" , streamStore . GetType ( ) . Name ) ;
9496 Console . WriteLine ( "Press w to write 10 messages each to 100 streams" ) ;
9597 Console . WriteLine ( "Press t to write 100 messages each to 10 streams" ) ;
9698 Console . WriteLine ( "Press ESC to exit" ) ;
@@ -102,10 +104,10 @@ private static void DisplayMenu(IStreamStore streamStore)
102104 case ConsoleKey . Escape :
103105 return ;
104106 case ConsoleKey . W :
105- Write ( streamStore , 10 , 100 ) ;
107+ Write ( streamStore , url , 10 , 100 ) ;
106108 break ;
107109 case ConsoleKey . T :
108- Write ( streamStore , 100 , 10 ) ;
110+ Write ( streamStore , url , 100 , 10 ) ;
109111 break ;
110112 default :
111113 Console . WriteLine ( "Computer says no" ) ;
@@ -114,21 +116,32 @@ private static void DisplayMenu(IStreamStore streamStore)
114116 }
115117 }
116118
117- private static void Write ( IStreamStore streamStore , int messageCount , int streamCount )
118- => Task . Run ( ( ) => Task . WhenAll (
119- from streamId in Enumerable . Range ( 0 , streamCount ) . Select ( _ => $ "test-{ Guid . NewGuid ( ) : n} ")
119+ private static void Write ( IStreamStore streamStore , string url , int messageCount , int streamCount )
120+ {
121+ var streams = Enumerable . Range ( 0 , streamCount ) . Select ( _ => $ "test-{ Guid . NewGuid ( ) : n} ") . ToList ( ) ;
122+
123+ var streamIds = string . Join ( "\n " , streams . Select ( streamid => $ "{ url } streams/{ streamid } ") ) ;
124+
125+ Console . WriteLine ( "\n About to create the following streams: " ) ;
126+ Console . WriteLine ( streamIds ) ;
127+
128+ Task . Run ( ( ) => Task . WhenAll (
129+ from streamId in streams
120130 select streamStore . AppendToStream ( streamId ,
121131 ExpectedVersion . NoStream ,
122132 GenerateMessages ( messageCount ) ) ) ) ;
133+ }
123134
124135 private static NewStreamMessage [ ] GenerateMessages ( int messageCount )
125- => Enumerable . Range ( 0 , messageCount )
136+ {
137+ return Enumerable . Range ( 0 , messageCount )
126138 . Select ( _ => new NewStreamMessage (
127139 Guid . NewGuid ( ) ,
128140 "test" ,
129141 $@ "{{ ""foo"": ""{ Guid . NewGuid ( ) } "", ""baz"": {{ }}, ""qux"": [ { string . Join ( ", " , Enumerable
130142 . Range ( 0 , messageCount ) . Select ( max => s_random . Next ( max ) ) ) } ] }}" ,
131143 "{}" ) )
132144 . ToArray ( ) ;
145+ }
133146 }
134147}
0 commit comments