public Simulation <MaternityBenefitSimulationCase> Build(SimulationRequest <MaternityBenefitSimulationCaseRequest> simulationRequest)
        {
            var regionDict = _helperStore.GetBestWeeksDict();

            var baseCase = new MaternityBenefitSimulationCase()
            {
                Id = Guid.NewGuid(),
                MaxWeeklyAmount = simulationRequest.BaseCaseRequest.MaxWeeklyAmount,
                Percentage      = simulationRequest.BaseCaseRequest.Percentage,
                NumWeeks        = simulationRequest.BaseCaseRequest.NumWeeks,
                RegionDict      = regionDict
            };

            var variantCase = new MaternityBenefitSimulationCase()
            {
                Id = Guid.NewGuid(),
                MaxWeeklyAmount = simulationRequest.VariantCaseRequest.MaxWeeklyAmount,
                Percentage      = simulationRequest.VariantCaseRequest.Percentage,
                NumWeeks        = simulationRequest.VariantCaseRequest.NumWeeks,
                RegionDict      = regionDict
            };

            return(new Simulation <MaternityBenefitSimulationCase>()
            {
                Id = Guid.NewGuid(),
                Name = simulationRequest.SimulationName,
                DateCreated = DateTime.Now,
                BaseCase = baseCase,
                VariantCase = variantCase,
            });
        }
예제 #2
0
        public void ShouldWorkNormally()
        {
            // Arrange
            string fakeName        = "Sim Name";
            double fakeOtherWeekly = 5;
            double fakeOtherDaily  = 6;
            double fakeCmvoWeekly  = 8;
            double fakeCmvoDaily   = 9;

            // Act
            var sut = new MotorVehicleSimulationBuilder();

            var simulationRequest = new SimulationRequest <MotorVehicleSimulationCaseRequest>()
            {
                BaseCaseRequest = new MotorVehicleSimulationCaseRequest()
                {
                    StandardCmvoWeekly = fakeCmvoWeekly,
                    StandardCmvoDaily  = fakeCmvoDaily
                },
                VariantCaseRequest = new MotorVehicleSimulationCaseRequest()
                {
                    StandardOtherDaily  = fakeOtherDaily,
                    StandardOtherWeekly = fakeOtherWeekly
                },
                SimulationName = fakeName
            };
            var result = sut.Build(simulationRequest);

            // Assert
            Assert.Equal(fakeName, result.Name);
            Assert.Equal(fakeCmvoDaily, result.BaseCase.StandardCmvoDaily);
            Assert.Equal(fakeCmvoWeekly, result.BaseCase.StandardCmvoWeekly);
            Assert.Equal(fakeOtherDaily, result.VariantCase.StandardOtherDaily);
            Assert.Equal(fakeOtherWeekly, result.VariantCase.StandardOtherWeekly);
        }
예제 #3
0
    private static SimulationResponse CreateGameSimulation(string unityProjectId, string accessToken, BuildResponse buildResponse)
    {
        var simulationsUrl = string.Format("{0}/v1/jobs?projectId={1}", GAME_SIMULATION_API_HOST, unityProjectId);

        // TODO - load request from json asset
        var simulationRequest = new SimulationRequest();

        simulationRequest.jobName = "Sample Test Project Simulation";
        simulationRequest.buildId = buildResponse.id;
        simulationRequest.decisionEngineMetadata            = new DecisionEngineMetadata();
        simulationRequest.decisionEngineMetadata.engineType = "gridsearch";
        var setting = new Setting();

        setting.key    = "Increment Counter By";
        setting.type   = "int";
        setting.values = new string[] { "1", "2", "3", "4" };
        simulationRequest.decisionEngineMetadata.settings = new Setting[] { setting };
        simulationRequest.maxRuntimeSeconds = "300";
        simulationRequest.runsPerParamCombo = 10;

        using (var request = CreatePostJsonRequest(simulationsUrl, simulationRequest))
        {
            SetAuthorizationHeader(request, accessToken);

            return(Execute <SimulationResponse>(request));
        }
    }
 /// <summary>
 /// the simulator sending simulation request of arrival/departure plane:
 /// </summary>
 /// <param name="simulationRequest"></param>
 public void SendSimulation(SimulationRequest simulationRequest)
 {
     //adding callback of simulator:
     if (simulatorCallback == null)
     {
         simulatorCallback = OperationContext.Current.GetCallbackChannel <ISimulatorCallback>();
     }
     //telling the airport about the simulation:
     serviceLogic.GetSimulation(simulationRequest.SimulatedPlane);
 }
예제 #5
0
 public Simulation <MotorVehicleSimulationCase> Build(SimulationRequest <MotorVehicleSimulationCaseRequest> simulationRequest)
 {
     return(new Simulation <MotorVehicleSimulationCase>()
     {
         Id = Guid.NewGuid(),
         Name = simulationRequest.SimulationName,
         DateCreated = DateTime.Now,
         BaseCase = new MotorVehicleSimulationCase(simulationRequest.BaseCaseRequest),
         VariantCase = new MotorVehicleSimulationCase(simulationRequest.VariantCaseRequest),
     });
 }
예제 #6
0
 public void SendSimulation(SimulationRequest simulationRequest)
 {
     try
     {
         proxy.SendSimulation(simulationRequest);
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
예제 #7
0
        public Guid Handle(SimulationRequest <U> request)
        {
            var simulation = _simulationBuilder.Build(request);

            _simulationStore.SaveSimulation(simulation);

            var persons = _personStore.GetAllPersons();
            var result  = _runner.Run(simulation, persons);

            _simulationStore.StoreResults(simulation.Id, result);

            return(simulation.Id);
        }
예제 #8
0
        public void RequestSerializesCorrectly()
        {
            var request = new SimulationRequest
            {
                Device = new SimulationRequestDevice {
                    Locale = "en-GB"
                },
                Input = new SimulationRequestInput {
                    Content = "test content"
                },
                Session = new SimulationSession(SimulationSessionMode.FORCE_NEW_SESSION)
            };

            Assert.True(Utility.CompareJson(request, "SimulationRequest.json"));
        }
예제 #9
0
        public void ShouldWorkNormally()
        {
            // Arrange
            var simulationStore   = A.Fake <IStoreSimulations <ISimulationCase> >();
            var personStore       = A.Fake <IStorePersons <IPerson> >();
            var runner            = A.Fake <IRunSimulations <ISimulationCase, IPerson> >();
            var simulationBuilder = A.Fake <IBuildSimulations <ISimulationCase, ISimulationCaseRequest> >();

            var testId     = Guid.NewGuid();
            var simulation = new Simulation <ISimulationCase>()
            {
                Id = testId
            };

            A.CallTo(() => simulationBuilder.Build(A <SimulationRequest <ISimulationCaseRequest> > ._)).Returns(simulation);


            // Act
            var sut = new SimulationRequestHandler <
                ISimulationCase,
                ISimulationCaseRequest,
                IPerson>
                          (simulationBuilder, simulationStore, personStore, runner);

            var request = new SimulationRequest <ISimulationCaseRequest>();

            var result = sut.Handle(request);


            // Assert
            A.CallTo(() => simulationBuilder.Build(A <SimulationRequest <ISimulationCaseRequest> > ._)).MustHaveHappenedOnceExactly();
            A.CallTo(() => simulationStore.SaveSimulation(A <Simulation <ISimulationCase> > ._)).MustHaveHappenedOnceExactly();
            A.CallTo(() => personStore.GetAllPersons()).MustHaveHappenedOnceExactly();
            A.CallTo(() => runner.Run(A <Simulation <ISimulationCase> > ._, A <IEnumerable <IPerson> > ._)).MustHaveHappenedOnceExactly();
            A.CallTo(() => simulationStore.StoreResults(testId, A <SimulationResult> ._)).MustHaveHappenedOnceExactly();

            Assert.Equal(result, testId);
        }
예제 #10
0
        public async Task <ActionResult <SimulationResponse> > Post([FromBody] SimulationRequest simReq)
        {
            // TODO: Setup logging to file as well (in startup)
            _logger.LogDebug("simulations: " + simReq.NumOfSimulations);

            Simulation sim = new Simulation();

            try
            {
                // run in background just in case it takes time
                await Task.Run(() => sim.Run(simReq.NumOfSimulations, simReq.ChosenDoor, simReq.ChangeDoor));

                _logger.LogDebug($"Simulation done, cars {sim.WonCars}, goats {sim.WonGoats}");
                return(new SimulationResponse()
                {
                    Cars = sim.WonCars, Goats = sim.WonGoats
                });
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error when running simulation");
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
예제 #11
0
 public CustomParam(SimulationRequest request)
 {
     this.request = request;
 }
예제 #12
0
 public Task <SimulationResponse> Simulate(string skillId, SimulationRequest request)
 {
     return(Inner.Simulate(skillId, request));
 }