55 using System . Threading ;
66 using System . Threading . Tasks ;
77 using Microsoft . AspNetCore . Hosting ;
8- using SqlStreamStore . Streams ;
98
109 internal static class Program
1110 {
12- private static readonly Random s_random = new Random ( ) ;
13- private const int DefaultPort = 8001 ;
14-
1511 public static async Task < int > Main ( string [ ] args )
1612 {
17- if ( ! int . TryParse ( args . FirstOrDefault ( ) , out var port ) )
18- {
19- port = DefaultPort ;
20- }
21-
22- var url = new UriBuilder { Port = port } . Uri . ToString ( ) ;
23-
2413 using ( var cts = new CancellationTokenSource ( ) )
2514 using ( var streamStore = new InMemoryStreamStore ( ) )
2615 using ( var host = new WebHostBuilder ( )
27- . UseUrls ( url )
2816 . UseKestrel ( )
2917 . UseStartup ( new DevServerStartup ( streamStore ) )
3018 . Build ( ) )
3119 {
32-
33- var serverTask = host . RunAsync ( cts . Token ) ;
34-
35- DisplayMenu ( streamStore , url ) ;
36-
37- await serverTask ;
20+ await host . RunAsync ( cts . Token ) ;
3821 }
3922
4023 return 0 ;
4124 }
42-
43- private static void DisplayMenu ( IStreamStore streamStore , string url )
44- {
45- while ( true )
46- {
47- Console . WriteLine ( "Using stream store: {0}" , streamStore . GetType ( ) . Name ) ;
48- Console . WriteLine ( "Press w to write 10 messages each to 100 streams" ) ;
49- Console . WriteLine ( "Press t to write 100 messages each to 10 streams" ) ;
50- Console . WriteLine ( "Press ESC to exit" ) ;
51-
52- var key = Console . ReadKey ( ) ;
53-
54- switch ( key . Key )
55- {
56- case ConsoleKey . Escape :
57- return ;
58- case ConsoleKey . W :
59- Write ( streamStore , url , 10 , 100 ) ;
60- break ;
61- case ConsoleKey . T :
62- Write ( streamStore , url , 100 , 10 ) ;
63- break ;
64- default :
65- Console . WriteLine ( "Computer says no" ) ;
66- break ;
67- }
68- }
69- }
70-
71- private static void Write ( IStreamStore streamStore , string url , int messageCount , int streamCount )
72- {
73- var streams = Enumerable . Range ( 0 , streamCount ) . Select ( _ => $ "test-{ Guid . NewGuid ( ) : n} ") . ToList ( ) ;
74-
75- var streamIds = string . Join ( "\n " , streams . Select ( streamid => $ "{ url } streams/{ streamid } ") ) ;
76-
77- Console . WriteLine ( "\n About to create the following streams: " ) ;
78- Console . WriteLine ( streamIds ) ;
79-
80- Task . Run ( ( ) => Task . WhenAll (
81- from streamId in streams
82- select streamStore . AppendToStream ( streamId ,
83- ExpectedVersion . NoStream ,
84- GenerateMessages ( messageCount ) ) ) ) ;
85- }
86-
87- private static NewStreamMessage [ ] GenerateMessages ( int messageCount )
88- {
89- return Enumerable . Range ( 0 , messageCount )
90- . Select ( _ => new NewStreamMessage (
91- Guid . NewGuid ( ) ,
92- "test" ,
93- $@ "{{ ""foo"": ""{ Guid . NewGuid ( ) } "", ""baz"": {{ }}, ""qux"": [ {
94- string . Join ( ", " ,
95- Enumerable
96- . Range ( 0 , messageCount ) . Select ( max => s_random . Next ( max ) ) )
97- } ] }}",
98- "{}" ) )
99- . ToArray ( ) ;
100- }
10125 }
10226}
0 commit comments