private static async Task GetAndPostOrganismsAsync(StartTrainingSessionResponse startTrainingSessionResponse, SslTcpNetworkConnector networkConnector, MessageListener <GetOrganismsResponse> getOrganismsResponseListener, MessageListener <PostOrganismsScoreResponse> postOrganismsScoreResponseListener) { GetOrganismsRequest getOrganismsRequest = new GetOrganismsRequest(startTrainingSessionResponse.TrainingSession.Id, 10); await networkConnector.SendMessageAsync(getOrganismsRequest, CancellationToken.None); GetOrganismsResponse getOrganismsResponse = await getOrganismsResponseListener.ReceiveMessageAsync(CancellationToken.None); Console.WriteLine( $"GetOrganismsResponse: \n\tId: {getOrganismsResponse.Id}\n\tRequestId: {getOrganismsResponse.RequestId}\n\tDateTime: {getOrganismsResponse.DateTime}\n\tMessage: {getOrganismsResponse.Message}\n\tSuccess: {getOrganismsResponse.Success}\n\tOrganismsCount: {getOrganismsResponse.Organisms.Count()}\n\tConnectionGenesCount: {getOrganismsResponse.Organisms.Sum(o => o.ConnectionGenes.Count)}"); Dictionary <Guid, double> organismsScoreDictionary = new Dictionary <Guid, double>(); foreach (OrganismDto organism in getOrganismsResponse.Organisms) { organism.Score += Random.NextDouble() + 0.001; organismsScoreDictionary.Add(organism.Id, organism.Score); } PostOrganismsScoreRequest postOrganismsScoreRequest = new PostOrganismsScoreRequest(startTrainingSessionResponse.TrainingSession.Id, organismsScoreDictionary); await networkConnector.SendMessageAsync(postOrganismsScoreRequest, CancellationToken.None); PostOrganismsScoreResponse postOrganismsScoreResponse = await postOrganismsScoreResponseListener.ReceiveMessageAsync(CancellationToken.None); Console.WriteLine( $"PostOrganismsScoreResponse: \n\tId: {postOrganismsScoreResponse.Id}\n\tRequestId: {postOrganismsScoreResponse.RequestId}\n\tDateTime: {postOrganismsScoreResponse.DateTime}\n\tMessage: {postOrganismsScoreResponse.Message}\n\tSuccess: {postOrganismsScoreResponse.Success}"); }
public async Task Run_For_5_Generations() { StartTrainingSessionRequest startTrainingSessionRequest = new StartTrainingSessionRequest { Id = Guid.NewGuid(), DateTime = DateTime.Now, TrainingRoomId = TrainingRoomId, UserId = UserId }; StartTrainingSessionResponse startTrainingSessionResponse = await TrainingSessionService.StartTrainingSessionAsync(startTrainingSessionRequest); Guid trainingSessionId = startTrainingSessionResponse.TrainingSession.Id; int generations = 5; PostOrganismsScoreResponse postOrganismsScoreResponse = default; for (int i = 1; i < generations; i++) { GetOrganismsRequest getOrganismsRequest = GetOrganismsRequest(trainingSessionId); GetOrganismsResponse getOrganismsResponse = await TrainingSessionService.GetOrganismsAsync(getOrganismsRequest); PostOrganismsScoreRequest postOrganismsScoreRequest = PostOrganismsScoreRequest(trainingSessionId, getOrganismsResponse); postOrganismsScoreResponse = await TrainingSessionService.PostOrganismsScoreAsync(postOrganismsScoreRequest); } Assert.IsTrue(postOrganismsScoreResponse.Success); Assert.AreEqual("Successfully updated the organisms and advanced a generation!", postOrganismsScoreResponse.Message); }
public async Task <IActionResult> OrganismsAsync(PostOrganismsScoreRequest postOrganismsScoreRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrorMessages())); } PostOrganismsScoreResponse response = await _trainingSessionService.PostOrganismsScoreAsync(postOrganismsScoreRequest); return(new OkObjectResult(response)); }
public async Task PostOrganismsAsync_Should_Successfully_Start_A_New_Generation() { StartTrainingSessionRequest startTrainingSessionRequest = new StartTrainingSessionRequest { Id = Guid.NewGuid(), DateTime = DateTime.Now, TrainingRoomId = TrainingRoomId, UserId = UserId }; StartTrainingSessionResponse startTrainingSessionResponse = await TrainingSessionService.StartTrainingSessionAsync(startTrainingSessionRequest); Guid trainingSessionId = startTrainingSessionResponse.TrainingSession.Id; GetOrganismsRequest getOrganismsRequest = GetOrganismsRequest(trainingSessionId); GetOrganismsResponse getOrganismsResponse = await TrainingSessionService.GetOrganismsAsync(getOrganismsRequest); PostOrganismsScoreRequest postOrganismsScoreRequest = PostOrganismsScoreRequest(trainingSessionId, getOrganismsResponse); PostOrganismsScoreResponse postOrganismsScoreResponse = await TrainingSessionService.PostOrganismsScoreAsync(postOrganismsScoreRequest); Assert.IsTrue(postOrganismsScoreResponse.Success); Assert.AreEqual("Successfully updated the organisms and advanced a generation!", postOrganismsScoreResponse.Message); }