Exemplo n.º 1
0
        // Boostraping conveyor
        private static Finalizer BootstrapContainer()
        {
            var logger    = LogManager.GetCurrentClassLogger();
            var container = new IoCContainer();

            container.SetLogger(logger);
            Injection.RegisterInjectionProvider(container);

            // Preparing jobs and finalizer
            // This will be our jobs
            var processingInts = Enumerable.Range(0, 1000).ToList();

            container.RegisterSingle <IEnumerable <int> >(processingInts);
            // And in "collector" we will accumulate results.
            container.RegisterSingle("collector", new ConcurrentBag <int>());
            // To find out when we can close application we use CountFinalizer
            Action inTheEnd =
                () => logger.Info($"Result: {string.Join(",", container.Get<IEnumerable<int>>("collector"))}");

            var finalizer = new CountFinalizer(processingInts.Count, inTheEnd);

            // And boostrapping Conveyor itself
            Conveyor.Init(logger)
            .ScanForBlueprints()
            .WithMetricsService(new MetricsServiceSettings
            {
                BaseAddress   = "http://localhost:5001/",
                CorsAddresses = new List <string> {
                    "http://localhost/*"
                },
                MetricsConfig = new MetricsConfig
                {
                    IncludeLastLogsFrom = new List <string> {
                        "mainLogFile"
                    },
                    CountOfLogLines = 100
                }
            })
            .WithSupplier("IntsSupplier", Injection.InjectionProvider.Get <IntegersSupplier>())
            .WithFinalizer(finalizer)
            .Start();

            return(finalizer);
        }
Exemplo n.º 2
0
        public void ConveyorWithPipelineCallShouldWorksWell()
        {
            Stopwatch timer = Stopwatch.StartNew();
            // GIVEN
            var injectionProvider = new IoCContainer();
            var listCollector     = new ListCollector();

            injectionProvider.RegisterSingle(new List <int> {
                1, 2, 3, 4, 5
            });
            injectionProvider.Register <TestIntSource>();
            injectionProvider.Register <TestMultiplicatorStep>();
            injectionProvider.Register <TestPipelinesBuilder>();
            injectionProvider.RegisterSingle(listCollector);

            Contracts.Dependencies.Injection.RegisterLogger(mLogger);
            Contracts.Dependencies.Injection.RegisterInjectionProvider(injectionProvider, false);

            var count = 10;
            var range = Enumerable.Range(1, count).ToList();

            var builder = new TestPipelinesBuilder();

            // WHEN
            var countFinalizer = new CountFinalizer(count);

            Conveyor.Init(mLogger)
            .WithBlueprint(builder.CreateIntMultPipeline())
            .WithBlueprint(builder.CreatePipelineWithCallOfAnother())
            .WithPipelineFinalizer("TestPipelineWithCallOfAnother", countFinalizer.Finalization)
            .WithSupplier("IntsSupplier", new LabeledIntSupplier(range, "TestPipelineWithCallOfAnother"))
            .Start();

            countFinalizer.GetWaitTask().Wait();

            // THEN
            listCollector.Lists.Count.Should().Be(count, "All lists should be added to list collector");
            listCollector.Lists.Values.ToList().ForEach(el => el.ShouldAllBeEquivalentTo(new List <int> {
                2, 4, 6, 8, 10
            }));
            listCollector.Lists.Keys.ToList().ShouldBeEquivalentTo(range.Select(el => $"id:{el}").ToList());
            timer.Stop();
        }
Exemplo n.º 3
0
        public void SimpleConveyorShouldWorksWell()
        {
            // GIVEN
            var injectionProvider = new IoCContainer();
            var listCollector     = new ListCollector();

            injectionProvider.RegisterSingle(new List <int> {
                1, 2, 3, 4, 5
            });
            injectionProvider.Register <TestIntSource>();
            injectionProvider.Register <TestMultiplicatorStep>();
            injectionProvider.Register <TestPipelinesBuilder>();
            injectionProvider.RegisterSingle(listCollector);

            Contracts.Dependencies.Injection.RegisterLogger(mLogger);
            Contracts.Dependencies.Injection.RegisterInjectionProvider(injectionProvider, false);

            var range = new List <int> {
                1, 2, 3, 4, 5, 6, 7
            };

            // WHEN
            var countFinalizer = new CountFinalizer(range.Count);

            Conveyor.Init(mLogger)
            .ScanForBlueprints()
            .WithSupplier("IntsSupplier", new IntSupplier(range))
            .WithFinalizer(countFinalizer)
            .Start();

            countFinalizer.GetWaitTask().Wait();

            // THEN
            listCollector.Lists.Count.Should().Be(7, "All lists should be added to list collector");
            listCollector.Lists.Values.ToList().ForEach(el => el.ShouldAllBeEquivalentTo(new List <int> {
                2, 4, 6, 8, 10
            }));
            listCollector.Lists.Keys.ShouldBeEquivalentTo(range.Select(el => $"id:{el}"));
        }