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));
        }
Example #4
0
        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);
        }
Example #6
0
        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]}");
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #10
0
        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();
        }