private PipelineContinuation InitializeContainer(ICommunicationContext arg) { var container = new TinyIoCAdapter(new TinyIoCContainer()); //HACK! For now dependencies may need to be in both containers to allow resolution container.Register<IHandleRequests<AddTaskCommand>, AddTaskCommandHandler>().AsMultiInstance(); container.Register<ITaskListRetriever, TaskListRetriever>().AsMultiInstance(); container.Register<ITasksDAO, TasksDAO>().AsMultiInstance(); var logger = LogManager.GetLogger("TaskList"); container.Register<ILog, ILog>(logger); container.Register<IAmARequestContextFactory, InMemoryRequestContextFactory>().AsMultiInstance(); MessageStoreFactory.InstallRavenDbMessageStore(container); container.Register<IAmAMessageStore<Message>, RavenMessageStore>().AsSingleton(); container.Register<IAmAMessagingGateway, RMQMessagingGateway>().AsSingleton(); container.Register<Policy>(CommandProcessor.RETRYPOLICY, GetRetryPolicy()); container.Register<Policy>(CommandProcessor.CIRCUITBREAKER, GetCircuitBreakerPolicy()); var commandProcessor = new CommandProcessorFactory(container).Create(); container.Register<IAmACommandProcessor, IAmACommandProcessor>(commandProcessor); resolver.AddDependencyInstance<IAdaptAnInversionOfControlContainer>(container, DependencyLifetime.Singleton); resolver.AddDependencyInstance<IAmARequestContextFactory>(new InMemoryRequestContextFactory(), DependencyLifetime.PerRequest); resolver.AddDependencyInstance<IAmACommandProcessor>(commandProcessor, DependencyLifetime.Singleton); resolver.AddDependency<ITaskRetriever, TaskRetriever>(DependencyLifetime.Singleton); resolver.AddDependency<ITaskListRetriever, TaskListRetriever>(DependencyLifetime.Singleton); return PipelineContinuation.Continue; }
public void HostingService_MySql() { var date = new DateTime(2019, 2, 1); var optionsBuilder = new DbContextOptionsBuilder <TypiconDBContext>(); optionsBuilder.UseMySql("server=localhost;UserId=root;Password=z2LDCiiEQFDBlkl3eZyb;database=typicondb;", //optionsBuilder.UseMySql("server=31.31.196.160;UserId=u0351_mysqluser;Password=gl7fdQ45GZyqydXrr2BZ;database=u0351320_typicondb;", mySqlOptions => { mySqlOptions.ServerVersion(new Version(8, 0, 15), ServerType.MySql); }); optionsBuilder.EnableSensitiveDataLogging(); var dbContext = new TypiconDBContext(optionsBuilder.Options); var jobRepo = new JobRepository(); //var yearHandler = CalculateModifiedYearJobHandlerTest.Build(dbContext, jobRepo); var yearJob = new CalculateModifiedYearJob(1, 2019); jobRepo.Create(yearJob); //Task task = yearHandler.ExecuteAsync(yearJob); //task.Wait(); //var weekHandler = CalculateOutputFormWeekJobTest.Build(dbContext, jobRepo); var weekJob = new CalculateOutputFormWeekJob(1, 1, date); jobRepo.Create(weekJob); //task = weekHandler.ExecuteAsync(weekJob); //task.Wait(); var service = new JobAsyncHostedService(jobRepo, CommandProcessorFactory.CreateJobProcessor(dbContext, jobRepo)); var token = new CancellationTokenSource(); Task.Factory.StartNew(() => service.StartAsync(token.Token)); while (jobRepo.Create(weekJob).Failure) { Thread.Sleep(50); } token.Cancel(); var queryProcessor = QueryProcessorFactory.Create(); var week = queryProcessor.Process(new OutputWeekQuery(1, date, new OutputFilter() { Language = "cs-ru" })); Assert.AreEqual(true, week.Success); }
public static CalculateModifiedYearJobHandler Build(TypiconDBContext dbContext, JobRepository jobRepo) { var query = DataQueryProcessorFactory.Create(dbContext); var command = CommandProcessorFactory.Create(dbContext); var serializerRoot = TestRuleSerializer.Create(dbContext); var settingsFactory = new RuleHandlerSettingsFactory(serializerRoot); return(new CalculateModifiedYearJobHandler(dbContext, settingsFactory, jobRepo)); }
public void subsequent_robots_should_not_fall_off_planet_at_same_point() { var commandProcessorFactory = new CommandProcessorFactory(); var commandProcessorRobotWorld = commandProcessorFactory.Build<CommandProcessorRobotWorldPoints>(new Mars(_worldCoords)); var robot = new RobotTest.Robot( new Location(new Point(3, 2), Direction.North)); var robotLocation = commandProcessorRobotWorld.ExecuteCommands("FRRFLLFFRRFLL", robot); var robot2 = new RobotTest.Robot( new Location(new Point(3, 2), Direction.North)); var robotLocation2 = commandProcessorRobotWorld.ExecuteCommands("FRRFLLFFRRFLL", robot2); Assert.AreEqual("3 3 North LOST", robotLocation); Assert.IsFalse(robotLocation2.Contains("LOST")); }
public JsonCommand Handle(RawMessage message) { JsonCommand comm = MessageUtils.ParseAsCommandRequest(message.clientNo, message.getBodyText()); ICommand <string> commandProcessor = CommandProcessorFactory.GetProcessor(comm.Directive); if (commandProcessor == null) { logger.ErrorFormat("command#{0} has no command-processor", comm.directiveVal); return(JsonCommands.Fail("no command-processor")); } JsonCommand dr = commandProcessor.Execute(comm); return(dr); }
private void Test(List <string> inputs, List <string[]> args, List <string> outputs, CompilerEnvironment env = null) { var commands = CommandProcessorFactory.GetCommandProcessors(); if (env == null) { env = new CompilerEnvironment(); } for (int i = 0; i < inputs.Count; i++) { env.CurrentAddress = 0; commands[inputs[i].ToLower()](args[i], env); var memory = env.GetMemory(); var str = new string(memory[0].ToBinString().Reverse().ToArray()) + new string( memory[1].ToBinString().Reverse().ToArray()); Assert.AreEqual(outputs[i], str, $"Command: {inputs[i]}"); } }
public void ValidateMenologyRule() { var dbContext = TypiconDbContextFactory.Create(); var menologyRule = dbContext.Set <MenologyRule>().FirstOrDefault(); menologyRule.RuleDefinition = @"<rule><worship1></rule>"; dbContext.Set <MenologyRule>().Update(menologyRule); dbContext.SaveChanges(); var job = new ValidateMenologyRuleJob(menologyRule.Id); var jobRepo = new JobRepository(job); var processor = CommandProcessorFactory.CreateJobProcessor(dbContext, jobRepo); processor.ExecuteAsync(job); Assert.IsTrue(true); }
public void Perform_Full_Test_Using_Edge_Lines() { var commandProcessorFactory = new CommandProcessorFactory(); var commandProcessorRobotWorld = commandProcessorFactory.Build<CommandProcessorRobotWorldLines>(new Mars(_worldCoords)); var robot1 = new RobotTest.Robot(new Location(new Point(1, 1), Direction.East)); var robot2 = new RobotTest.Robot(new Location(new Point(3, 2), Direction.North)); var robot3 = new RobotTest.Robot(new Location(new Point(0, 3), Direction.West)); var robotLocation1 = commandProcessorRobotWorld.ExecuteCommands("RFRFRFRF", robot1); var robotLocation2 = commandProcessorRobotWorld.ExecuteCommands("FRRFLLFFRRFLL", robot2); var robotLocation3 = commandProcessorRobotWorld.ExecuteCommands("LLFFFLFLFL", robot3); Assert.AreEqual("1 1 East", robotLocation1); Assert.AreEqual("3 3 North LOST", robotLocation2); Assert.AreEqual("2 3 South", robotLocation3); }
public async Task HostingService_OutputForm() { var date = new DateTime(2019, 2, 1); var dbContext = TypiconDbContextFactory.Create(); var jobRepo = new JobRepository(); var yearHandler = CalculateModifiedYearJobHandlerTest.Build(dbContext, jobRepo); var yearJob = new CalculateModifiedYearJob(1, 2019); jobRepo.Create(yearJob); Task task = yearHandler.ExecuteAsync(yearJob); task.Wait(); var weekHandler = CalculateOutputFormWeekJobTest.Build(dbContext, jobRepo); var weekJob = new CalculateOutputFormWeekJob(1, 1, date); jobRepo.Create(weekJob); task = weekHandler.ExecuteAsync(weekJob); task.Wait(); var service = new JobAsyncHostedService(jobRepo, CommandProcessorFactory.Create(dbContext)); await service.StartAsync(CancellationToken.None); while (jobRepo.GetAll().Count() > 0) { Thread.Sleep(50); } var queryProcessor = QueryProcessorFactory.Create(); var week = queryProcessor.Process(new OutputWeekQuery(1, date, new OutputFilter() { Language = "cs-ru" })); Assert.AreEqual(true, week.Success); }
static void Main(string[] args) { var commandBus = new CommandBus(); var stream = new EventStream(); RegisterEventListeners(stream); var watch = new Stopwatch(); var watch2 = new Stopwatch(); watch.Start(); foreach (var c in Commands) { watch2.Start(); Console.WriteLine("Command: {0}", c.ToString()); var proc = CommandProcessorFactory.GetForCommand(stream, c); if (proc != null) { var valid = proc.Validate(c); if (!valid.IsValid) { Console.WriteLine("Command {0} is not valid", c); continue; } proc.Process(c); } watch2.Stop(); Console.WriteLine("Processed in: {0}ms", watch2.ElapsedMilliseconds); } watch.Stop(); Console.WriteLine("Processing Commands Took: {0}ms", watch.ElapsedMilliseconds); watch2.Reset(); watch2.Start(); var player = new AggregatePlayer <Animal>(new AnimalMutator(), stream); long avg = 0; foreach (var id in AnimalIds) { watch.Reset(); watch.Start(); var animal = player.PlayToNow(id); var fetchedAnimal = Animals.FirstOrDefault(a => a.Id == id); var history = MobHistories.Where(a => a.AnimalId == id); watch.Stop(); avg += watch.ElapsedMilliseconds; } watch2.Stop(); avg = avg / AnimalIds.Count; Console.WriteLine("Total Time: {0}ms", watch2.ElapsedMilliseconds); Console.WriteLine("Avg Time: {0}ms", avg); Console.ReadLine(); }