Works, but slow for many connections
This commit is contained in:
+54
-44
@@ -35,65 +35,75 @@ File.AppendAllText("results.txt", $"[SINGLE CBOR WRITER ALLOC] {totalRequests}\r
|
||||
|
||||
async Task<List<ILoadTest>> GetLoadEndpoints(int count)
|
||||
{
|
||||
var loads = new List<ILoadTest>();
|
||||
for (int i = 0; i < count; i++)
|
||||
try
|
||||
{
|
||||
var builder = Host.CreateApplicationBuilder(new HostApplicationBuilderSettings { DisableDefaults = true });
|
||||
builder.Services.AddSingleton<IContextualSerializationToolKit, CborSerializationToolkit>();
|
||||
builder.Services.AddSingleton<IEndPointContext, EndPointContext>();
|
||||
builder.Services.AddSingleton<IRealStoreInstanceRepository, InstanceRepository>(provider =>
|
||||
var loads = new List<ILoadTest>();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var repo = new InstanceRepository(provider.GetService<IRepresentationModuleProducer>());
|
||||
repo.FillSingletons(typeof(Program).Assembly);
|
||||
return repo;
|
||||
});
|
||||
Console.WriteLine($"Initializing {i}");
|
||||
var builder = Host.CreateApplicationBuilder(new HostApplicationBuilderSettings { DisableDefaults = true });
|
||||
builder.Services.AddSingleton<IContextualSerializationToolKit, CborSerializationToolkit>();
|
||||
builder.Services.AddSingleton<IEndPointContext, EndPointContext>();
|
||||
builder.Services.AddSingleton<IRealStoreInstanceRepository, InstanceRepository>(provider =>
|
||||
{
|
||||
var repo = new InstanceRepository(provider.GetService<IRepresentationModuleProducer>());
|
||||
repo.FillSingletons(typeof(Program).Assembly);
|
||||
return repo;
|
||||
});
|
||||
|
||||
builder.Services.AddSingleton<IInstanceRepository, RemoteInstanceRepository>();
|
||||
builder.Services.AddSingleton<IChannelInteractionModule, ChannelInteractionModule>();
|
||||
// builder.Services.AddSingleton<IUntrustedInteractionModule, UdpUntrustedInteraction>();
|
||||
builder.Services.AddSingleton<IRepresentationModule, RepresentationModule>();
|
||||
var serverEndPoint = new IPEndPoint(IPAddress.Loopback, 4567);
|
||||
builder.Services.AddSingleton<IFrontendBridge, NetworkFrontendBridge>();
|
||||
builder.Services.AddOptions();
|
||||
builder.Services.Configure<GatewayOptions>(options => options.Endpoint = serverEndPoint);
|
||||
builder.Services.AddSingleton<IRepresentationModuleProducer, StaticRepresentationModuleProducer>();
|
||||
// builder.Services.AddSingleton<IRequestExtractor, RequestExtractor>();
|
||||
builder.Services.AddSingleton<IExecuteModule, BasicExecutionModule>();
|
||||
builder.Services.AddSingleton<IInstanceRepository, RemoteInstanceRepository>();
|
||||
builder.Services.AddSingleton<IChannelInteractionModule, ChannelInteractionModule>();
|
||||
// builder.Services.AddSingleton<IUntrustedInteractionModule, UdpUntrustedInteraction>();
|
||||
builder.Services.AddSingleton<IRepresentationModule, RepresentationModule>();
|
||||
var serverEndPoint = new IPEndPoint(IPAddress.Loopback, 4567);
|
||||
builder.Services.AddSingleton<IFrontendBridge, NetworkFrontendBridge>();
|
||||
builder.Services.AddOptions();
|
||||
builder.Services.Configure<GatewayOptions>(options => options.Endpoint = serverEndPoint);
|
||||
builder.Services.AddSingleton<IRepresentationModuleProducer, StaticRepresentationModuleProducer>();
|
||||
// builder.Services.AddSingleton<IRequestExtractor, RequestExtractor>();
|
||||
builder.Services.AddSingleton<IExecuteModule, BasicExecutionModule>();
|
||||
|
||||
builder.Services.AddSingleton<IMethodRepository, CollectableMethodRepository>(p =>
|
||||
{
|
||||
var methodRepo = new CollectableMethodRepository();
|
||||
methodRepo.AppendInvokers(new GeneratedInvokersCollection());
|
||||
return methodRepo;
|
||||
});
|
||||
builder.Services.AddSingleton<ICallIndexProvider, GeneratedCallIndexProvider>();
|
||||
builder.Services.AddSingleton<ICancellationRepository, CancellationRepository>();
|
||||
builder.Services.AddSingleton<IMethodRepository, CollectableMethodRepository>(p =>
|
||||
{
|
||||
var methodRepo = new CollectableMethodRepository();
|
||||
methodRepo.AppendInvokers(new GeneratedInvokersCollection());
|
||||
return methodRepo;
|
||||
});
|
||||
builder.Services.AddSingleton<ICallIndexProvider, GeneratedCallIndexProvider>();
|
||||
builder.Services.AddSingleton<ICancellationRepository, CancellationRepository>();
|
||||
|
||||
var app = builder.Build();
|
||||
var app = builder.Build();
|
||||
|
||||
var frontendBridge = app.Services.GetService<IFrontendBridge>()!;
|
||||
await frontendBridge.Connect();
|
||||
// _ = app.Services.GetService<IRequestExtractor>()!.StartExtraction();
|
||||
// _ = app.Services.GetService<IUntrustedInteractionModule>().Start(serverEndPoint);
|
||||
var context = app.Services.GetService<IInstanceRepository>();
|
||||
Console.WriteLine($"Connecting {i}");
|
||||
var frontendBridge = app.Services.GetService<IFrontendBridge>()!;
|
||||
await frontendBridge.Connect();
|
||||
// _ = app.Services.GetService<IRequestExtractor>()!.StartExtraction();
|
||||
// _ = app.Services.GetService<IUntrustedInteractionModule>().Start(serverEndPoint);
|
||||
var context = app.Services.GetService<IInstanceRepository>();
|
||||
Console.WriteLine($"Connected {i}");
|
||||
|
||||
var singletonObject =
|
||||
context.GetSingletonObject<ILoadTest>(
|
||||
app.Services.GetService<IEndPointContext>());
|
||||
loads.Add(singletonObject);
|
||||
}
|
||||
|
||||
var singletonObject =
|
||||
context.GetSingletonObject<ILoadTest>(
|
||||
app.Services.GetService<IEndPointContext>());
|
||||
loads.Add(singletonObject);
|
||||
return loads;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
throw;
|
||||
}
|
||||
return loads;
|
||||
}
|
||||
|
||||
async Task<int> Requests(CancellationToken token, int id, ILoadTest load)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
int count = 0;
|
||||
while (true){
|
||||
while (true)
|
||||
{
|
||||
if (token.IsCancellationRequested)
|
||||
{
|
||||
break;
|
||||
@@ -101,7 +111,7 @@ async Task<int> Requests(CancellationToken token, int id, ILoadTest load)
|
||||
|
||||
await load.Next(2);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine(id);
|
||||
return count;
|
||||
|
||||
Reference in New Issue
Block a user