Example #1
0
        //[TestMethod] This is a bad test. This assumes there is already data in Graphene
        public void GivenATrackerWithNoCustomFields_WhenIncrementingTraker_ThenTotalReflectsIncrementAndNoOccurencesIsSet()
        {
            var generator = new MongoReportGenerator("mongodb://localhost:9001/Graphene", _fakeLogger);

            var spec = new ReportSpecification(new[] { typeof(PatientDemographicSearchMatchesTracker) },
                                               DateTime.UtcNow.AddDays(-100), DateTime.UtcNow, ReportResolution.Hour);


            ITrackerReportResults newresult = generator.BuildReport(spec);

            Assert.IsTrue(newresult.AggregationResults.Any());
        }
Example #2
0
        //[TestMethod]
        public void ReportOnTrackerWithBlankFilters()
        {
            var generator = new MongoReportGenerator("mongodb://localhost:9001/Graphene", _fakeLogger);

            var spec = new ReportSpecification(new[] { typeof(PatientDemographicSearchMatchesTracker) },
                                               new[] { new OrgAndVendorFilter {
                                                           Vendor = "", OrgId = ""
                                                       } },
                                               DateTime.UtcNow.AddDays(-100), DateTime.UtcNow, ReportResolution.Hour);

            ITrackerReportResults newresult = generator.BuildReport(spec);

            Assert.IsTrue(newresult.AggregationResults.Any());
        }
Example #3
0
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional }
                                       );

            // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
            // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
            // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
            //config.EnableQuerySupport();

            // To disable tracing in your application, please comment out or remove the following line of code
            // For more information, refer to: http://www.asp.net/web-api
            config.EnableSystemDiagnosticsTracing();

            config.Formatters.JsonFormatter.Indent = true;
            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new JsonConverterReportSpecificationConverter());
            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new JsonConverterMeasurementConverter());
            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new JsonConverterFilterCombinationsConverter());

            var builder = new ContainerBuilder();

            // Register the Web API controllers.
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());


            builder.RegisterType <GrapheneLog4NetLogger>().As <ILogger>();

            // Build the container.

            // Configure Web API with the dependency resolver.

            var offsetHours = 0;
            var useBuckets  = false;
            TimespanRoundingMethod roundingMethod;
            ReportSourceType       reportSourceType;


            _mongoConnectionStringSettings = ConfigurationManager.ConnectionStrings["MongoConnectionString"];
            if (_mongoConnectionStringSettings != null && !string.IsNullOrWhiteSpace(
                    _mongoConnectionStringSettings.ConnectionString))
            {
                builder.Register(x =>
                {
                    var logger         = x.Resolve <ILogger>();
                    var mongoPersister =
                        new PersistToMongo(
                            _mongoConnectionStringSettings.ConnectionString, logger);
                    return(mongoPersister);
                }).As <IPersist>();

                builder.Register(x =>
                {
                    var logger = x.Resolve <ILogger>();
                    var mongoReportGenerator =
                        new MongoReportGenerator(
                            _mongoConnectionStringSettings.ConnectionString, logger);
                    return(mongoReportGenerator);
                }).As <IReportGenerator>();
            }

            _sqlConnectionStringSettings = ConfigurationManager.ConnectionStrings["SQLServerConnectionString"];
            if (_sqlConnectionStringSettings != null && !string.IsNullOrWhiteSpace(
                    _sqlConnectionStringSettings.ConnectionString))
            {
                var tempNumber       = 5;
                var maxRetries       = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_MaxRetries"], 5);
                var minBackoff       = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_PersistMinBackoff"], 1);
                var maxBackoff       = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_PersistMaxBackoff"], 30);
                var deltaBackoff     = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_PersistDeltaBackoff"], 2);
                var initialRetry     = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_ReportInitialRetryTime"], 200);
                var incrementalRetry = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_ReportIncrementalRetryTime"], 400);
                var commandTimeout   = tempNumber.TryParse(ConfigurationManager.AppSettings["SQLServer_ReportCommandTimeout"], 300);

                builder.Register(x =>
                {
                    var _logger      = x.Resolve <ILogger>();
                    var sqlPersister =
                        new PersistToSQLServer(
                            _sqlConnectionStringSettings.ConnectionString, _logger, maxRetries: maxRetries, minBackoff: minBackoff, maxBackoff: maxBackoff, deltaBackoff: deltaBackoff);
                    return(sqlPersister);
                }).As <IPersist>();

                builder.Register(x =>
                {
                    var _logger            = x.Resolve <ILogger>();
                    var sqlReportGenerator =
                        new SQLReportGenerator(
                            _sqlConnectionStringSettings.ConnectionString, _logger, maxRetries, initialRetry, incrementalRetry, commandTimeout);
                    return(sqlReportGenerator);
                }).As <IReportGenerator>();
            }

            var container = builder.Build();

            Configurator.Initialize(new Settings
            {
                Persister              = container.Resolve <IPersist>(),
                DefaultReportSource    = Enum.TryParse(ConfigurationManager.AppSettings["DefaultReportSource"], out reportSourceType) ? reportSourceType : ReportSourceType.SQLReportGenerator,
                GrapheneRoundingMethod = Enum.TryParse(ConfigurationManager.AppSettings["RoundingMethod"], out roundingMethod) ? roundingMethod : TimespanRoundingMethod.Start,
                UseBuckets             = bool.TryParse(ConfigurationManager.AppSettings["UseBuckets"], out useBuckets) ? useBuckets : false,
                DayTotalTZOffset       = int.TryParse(ConfigurationManager.AppSettings["MidnightOffsetForTotals"], out offsetHours) ? getDayTotalTimeZoneOffset(offsetHours) : getDayTotalTimeZoneOffset(8)
            });

            // Create the depenedency resolver.
            var resolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = resolver;

            container.Resolve <ILogger>().Info("Autofac Registered");
        }