コード例 #1
0
        public static void Go()
        {
            // SAMPLE: Bootstrapping-Basic
            using (var host = JasperHost.Basic())
            {
                // do stuff
            }
            // ENDSAMPLE

            // SAMPLE: Bootstrapping-Basic2
            using (var host = JasperHost.CreateDefaultBuilder()
                              .UseJasper()
                              .StartJasper())
            {
                // do stuff
            }
            // ENDSAMPLE

            // SAMPLE: Bootstrapping-Basic3
            using (var runtime = JasperHost.For(_ =>
            {
                _.Transports.ListenForMessagesFrom("tcp://localhost:2001");
            }))
            {
                // do stuff
            }

            // ENDSAMPLE
        }
コード例 #2
0
        public FastModeRoutingBenchmark()
        {
            var builder = new WebHostBuilder()
                          .ConfigureLogging(x => { x.ClearProviders(); })
                          .UseJasper(x => x.HttpRoutes.AspNetCoreCompliance = ComplianceMode.GoFaster)
                          .Configure(app => app.UseJasper());

            _system = new SystemUnderTest(builder);

            var graph = _system.Services.GetRequiredService <RouteGraph>();

            _routes = graph
                      .Select(x => x.Action.HandlerType)
                      .Where(x => x.IsConcreteWithDefaultCtor())
                      .Distinct()
                      .Select(Activator.CreateInstance)
                      .OfType <IHasUrls>()
                      .SelectMany(x => x.Urls().Select(url => new TestRoute(x.Method, url)))
                      .ToArray();


            var aspnetBuilder = AspNetCorePerfTarget.Program.CreateWebHostBuilder(new string[0])
                                .UseStartup <AspNetCorePerfTarget.Startup>();

            _aspnetSystem = new SystemUnderTest(aspnetBuilder);

            var hybridBuilder = JasperHost.CreateDefaultBuilder().UseJasper <HybridRegistry>();

            _hybridSystem = new SystemUnderTest(hybridBuilder);
        }
コード例 #3
0
        /// <summary>
        /// Helper to quickly attach Alba scenario tests to a Jasper application
        /// </summary>
        /// <param name="registry"></param>
        /// <returns></returns>
        public static SystemUnderTest For(JasperRegistry registry)
        {
            var builder = JasperHost.CreateDefaultBuilder().UseJasper(registry);
            var system  = new SystemUnderTest(builder, registry.ApplicationAssembly);

            system.As <ISystemUnderTest>().Urls = new JasperUrlLookup(system.Services.GetRequiredService <IUrlRegistry>());

            return(system);
        }
コード例 #4
0
        public IntegrationFixture()
        {
            // Bootstrap your application with a few overrides to
            // configuration, and slightly modify the Jasper configuration
            Host = JasperHost.CreateDefaultBuilder()
                   .OverrideConfigValue("outgoing", "stub://outgoing")
                   .OverrideConfigValue("incoming", "stub://incoming")
                   .UseJasper <MyJasperApp>()

                   // This gives you an IJasperHost, but this works as well with an
                   // IWebHost as well
                   .StartJasper();
        }
コード例 #5
0
        public void can_generate_code()
        {
            var input    = new CodeInput();
            var registry = new JasperRegistry();

            registry.Handlers.DisableConventionalDiscovery();
            registry.Handlers.IncludeType <MessageConsumer>();

            input.WebHostBuilder = JasperHost.CreateDefaultBuilder().UseJasper(registry);



            var cmd = new CodeCommand();

            cmd.Execute(input);
        }
コード例 #6
0
        public void read_settings_from_json()
        {
            var builder = JasperHost.CreateDefaultBuilder()
                          .ConfigureAppConfiguration((context, config) => config.AddJsonFile("messaging.json"))
                          .UseJasper();

            using (var runtime = builder.StartJasper())
            {
                var settings = runtime.Get <JasperOptions>();

                // See the messaging.json file
                settings.DisableAllTransports.ShouldBeTrue();
                settings.ScheduledJobs.PollingTime.ShouldBe(10.Seconds());
                settings.Listeners.Contains("tcp://localhost:2000".ToUri()).ShouldBeTrue();
                settings.Subscriptions.Contains(Subscription.All("tcp://localhost:2002".ToUri())).ShouldBeTrue();
            }
        }
コード例 #7
0
        public void pass_the_environment_flag()
        {
            var registry = new JasperRegistry();

            registry.Handlers.DisableConventionalDiscovery();
            registry.HttpRoutes.DisableConventionalDiscovery();

            var input = new JasperInput
            {
                WebHostBuilder  = JasperHost.CreateDefaultBuilder().UseJasper(registry),
                EnvironmentFlag = "Fake"
            };

            using (var runtime = input.BuildHost(StartMode.Lightweight))
            {
                runtime.Get <IHostingEnvironment>()
                .EnvironmentName.ShouldBe("Fake");
            }
        }
コード例 #8
0
        public override void SetUp()
        {
            _envelopes.Clear();
            _nodeLockers.Clear();

            _workers = new RecordingWorkerQueue();

            _host = JasperHost.CreateDefaultBuilder()
                    .UseJasper(_ =>
            {
                _.ServiceName = Guid.NewGuid().ToString();

                _.MartenConnectionStringIs(Servers.PostgresConnectionString);

                _.Services.AddSingleton <IWorkerQueue>(_workers);

                _.Include <MartenBackedPersistence>();

                _.Settings.Alter <JasperOptions>(x =>
                {
                    x.Retries.FirstNodeReassignmentExecution = 30.Minutes();
                    x.ScheduledJobs.FirstExecution           = 30.Minutes();
                    x.Retries.FirstNodeReassignmentExecution = 30.Minutes();
                    x.Retries.NodeReassignmentPollingTime    = 30.Minutes();
                });
            })
                    .StartJasper();


            _admin = _host.Get <IEnvelopePersistence>().Admin;
            _admin.RebuildSchemaObjects();

            _settings    = _host.Get <PostgresqlSettings>();
            _serializers = _host.Get <MessagingSerializationGraph>();

            theStore = _host.Get <IDocumentStore>();
            theStore.Advanced.Clean.DeleteAllDocuments();

            _currentNodeId = _host.Get <JasperOptions>().UniqueNodeId;

            _owners["This Node"] = _currentNodeId;
        }
コード例 #9
0
        public void set_up_verbose_logging()
        {
            var registry = new JasperRegistry();

            registry.Handlers.DisableConventionalDiscovery();
            registry.HttpRoutes.DisableConventionalDiscovery();

            var input = new JasperInput
            {
                WebHostBuilder = JasperHost.CreateDefaultBuilder().UseJasper(registry),
                VerboseFlag    = true
            };

            using (var runtime = input.BuildHost(StartMode.Lightweight))
            {
                var providers = runtime.Container.GetAllInstances <ILoggerProvider>();
                providers.OfType <ConsoleLoggerProvider>().Any().ShouldBeTrue();
                providers.OfType <DebugLoggerProvider>().Any().ShouldBeTrue();
            }
        }
コード例 #10
0
        public async Task will_still_apply_middleware()
        {
            var runtime = JasperHost.CreateDefaultBuilder()
                          .Configure(app => { app.Run(c => c.Response.WriteAsync("Hello")); })
                          .UseJasper(_ => _.Http(opts => opts.DisableConventionalDiscovery()))
                          .ToAlbaSystem();


            try
            {
                await runtime.Scenario(s =>
                {
                    s.Get.Url("/");
                    s.ContentShouldBe("Hello");
                });
            }
            finally
            {
                runtime.Dispose();
            }
        }
コード例 #11
0
        public override void SetUp()
        {
            var admin = new PostgresqlEnvelopeStorageAdmin(new PostgresqlSettings {
                ConnectionString = Servers.PostgresConnectionString
            });

            admin.RecreateAll();

            var registry = new ScheduledMessageApp();

            theReceiver = registry.Receiver;

            var logger = new StorytellerAspNetCoreLogger();

            Context.Reporting.Log(logger);



            theHost = JasperHost
                      .CreateDefaultBuilder()
                      .ConfigureLogging(x => x.AddProvider(logger))
                      .UseJasper(registry)
                      .StartJasper();
        }
コード例 #12
0
        public void with_aspnet_core()
        {
            var builder = JasperHost.CreateDefaultBuilder()

                          .ConfigureAppConfiguration(config =>
            {
                config.SetBasePath(Directory.GetCurrentDirectory());
                config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);
            })
                          .UseJasper();

            var host     = builder.Build();
            var services = host.Services;

            var options = services.GetService <IOptions <LoggerFilterOptions> >();
            var logging = options.Value;



            var logger = services.GetRequiredService <ILogger <Thing> >();


            logger.ShouldNotBeNull();
        }
コード例 #13
0
        public override void SetUp()
        {
            _messageLogger =
                new StorytellerMessageLogger(new MessageHistory(), new LoggerFactory(), new NulloMetrics());

            _messageLogger.Start(Context);

            _senderWatcher = new SenderLatchDetected(new LoggerFactory());

            _receiverStore = DocumentStore.For(_ =>
            {
                _.PLV8Enabled = false;
                _.Connection(Servers.PostgresConnectionString);
                _.DatabaseSchemaName = "receiver";


                _.Schema.For <TraceDoc>();
            });

            _receiverStore.Advanced.Clean.CompletelyRemoveAll();
            _receiverStore.Schema.ApplyAllConfiguredChangesToDatabase();


            _sendingStore = DocumentStore.For(_ =>
            {
                _.PLV8Enabled = false;
                _.Connection(Servers.PostgresConnectionString);
                _.DatabaseSchemaName = "sender";
            });

            new PostgresqlEnvelopeStorageAdmin(new PostgresqlSettings {
                ConnectionString = Servers.PostgresConnectionString, SchemaName = "receiver"
            }).RecreateAll();
            new PostgresqlEnvelopeStorageAdmin(new PostgresqlSettings {
                ConnectionString = Servers.PostgresConnectionString, SchemaName = "sender"
            }).RecreateAll();

            _sendingStore.Advanced.Clean.CompletelyRemoveAll();
            _sendingStore.Schema.ApplyAllConfiguredChangesToDatabase();

            _receivers = new LightweightCache <string, IJasperHost>(key =>
            {
                var registry = new ReceiverApp();
                registry.Services.AddSingleton <IMessageLogger>(_messageLogger);

                var logger = new StorytellerAspNetCoreLogger(key);

                // Tell Storyteller about the new logger so that it'll be
                // rendered as part of Storyteller's results
                Context.Reporting.Log(logger);

                // This is bootstrapping a Jasper application through the
                // normal ASP.Net Core IWebHostBuilder
                return(JasperHost
                       .CreateDefaultBuilder()
                       .ConfigureLogging(x =>
                {
                    x.SetMinimumLevel(LogLevel.Debug);
                    x.AddDebug();
                    x.AddConsole();

                    // Add the logger to the new Jasper app
                    // being built up
                    x.AddProvider(logger);
                })

                       .UseJasper(registry)
                       .StartJasper());
            });

            _senders = new LightweightCache <string, IJasperHost>(key =>
            {
                var logger = new StorytellerAspNetCoreLogger(key);

                // Tell Storyteller about the new logger so that it'll be
                // rendered as part of Storyteller's results
                Context.Reporting.Log(logger);

                var registry = new SenderApp();
                registry.Services.AddSingleton <IMessageLogger>(_messageLogger);

                registry.Services.For <ITransportLogger>().Use(_senderWatcher);


                return(JasperHost.CreateDefaultBuilder()
                       .ConfigureLogging(x =>
                {
                    x.SetMinimumLevel(LogLevel.Debug);
                    x.AddDebug();
                    x.AddConsole();

                    // Add the logger to the new Jasper app
                    // being built up
                    x.AddProvider(logger);
                })
                       .UseJasper(registry)
                       .StartJasper());
            });
        }