Exemple #1
0
        public static void AssemblyInit(TestContext context)
        {
            //overriding bug-containing default azure provider with the fixed one
            Type t    = typeof(DataSetFactory);
            var  dict = (IDictionary)t.InvokeMember("providersByName", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField, null, null, null);

            dict.Remove("az");
            DataSetFactory.Register(typeof(Microsoft.Research.Science.Data.Azure.AzureDataSet));

            Trace.WriteLine("Registered Dmitrov Providers");
            Trace.WriteLine(DataSetFactory.RegisteredToString());
        }
        public void RegisterFactory()
        {
            Type provider = null;

            try
            {
                provider = System.Type.GetType(Type);
            }
            catch (Exception exc)
            {
                Trace.WriteLineIf(DataSet.TraceDataSet.TraceError, "DataSet factory: unable to load factory type " + Type + ": " + exc.Message);
                return;
            }
            if (provider == null)
            {
                Trace.WriteLineIf(DataSet.TraceDataSet.TraceError, "DataSet factory: type " + Type + " is not found.");
                return;
            }
            try
            {
                if (!String.IsNullOrEmpty(Name))
                {
                    DataSetFactory.Register(Name, provider);
                }
                else if (!String.IsNullOrEmpty(Extension))
                {
                    DataSetFactory.RegisterExtension(Extension, provider);
                }
                else
                {
                    DataSetFactory.Register(provider);
                }
            }
            catch (Exception exc)
            {
                Trace.WriteLineIf(DataSet.TraceDataSet.TraceError, "DataSet factory " + this.ToString() + ": unable register factory: " + exc.Message);
            }
        }
Exemple #3
0
        public static void RtofsForeCastInsertProxy()
        {
            DataSetFactory.Register(typeof(NetCDFDataSet));

            using (DataSet diag = DataSet.Open(_decodeList[0][6]))
            {
                using (DataSet prog = DataSet.Open(_decodeList[1][6]))
                {
                    var UTCtemp          = prog.Variables.ElementAt(10).GetData().GetValue(0);
                    var SSStemp          = prog.Variables.ElementAt(1).GetData();
                    var SSTtemp          = prog.Variables.ElementAt(2).GetData();
                    var CURRENT_UVtemp   = prog.Variables.ElementAt(4).GetData();
                    var CURRENT_VVtemp   = prog.Variables.ElementAt(3).GetData();
                    var ICETHICKNESStemp = diag.Variables.ElementAt(5).GetData();

                    var lonLen = 4500;
                    var latLen = 3298;

                    var utcTime = new DateTime(Convert.ToInt16(_decodeList[0][0]), Convert.ToInt16(_decodeList[0][1]), Convert.ToInt16(_decodeList[0][2]), Convert.ToInt16(_decodeList[0][3]), 0, 0);
                    int offset  = 0;

                    var KEY           = new int[14841000];
                    var SSS           = new float[14841000];
                    var SST           = new float[14841000];
                    var CURRENT_UV    = new float[14841000];
                    var CURRENT_VV    = new float[14841000];
                    var ICE_THICKNESS = new float[14841000];

                    for (int i = 0; i < latLen; i++)
                    {
                        for (int j = 0; j < lonLen; j++)
                        {
                            offset                = i * lonLen + j;
                            SSS[offset]           = (float)SSStemp.GetValue(0, i, j) > 1000 ? 9999 : (float)SSStemp.GetValue(0, i, j);
                            SST[offset]           = (float)SSTtemp.GetValue(0, i, j) > 1000 ? 9999 : (float)SSTtemp.GetValue(0, i, j);
                            CURRENT_UV[offset]    = (float)CURRENT_UVtemp.GetValue(0, 0, i, j) > 1000 ? 9999 : (float)CURRENT_UVtemp.GetValue(0, 0, i, j);
                            CURRENT_VV[offset]    = (float)CURRENT_VVtemp.GetValue(0, 0, i, j) > 1000 ? 9999 : (float)CURRENT_VVtemp.GetValue(0, 0, i, j);
                            ICE_THICKNESS[offset] = (float)ICETHICKNESStemp.GetValue(0, i, j) > 1000 ? 9999 : (float)ICETHICKNESStemp.GetValue(0, i, j);
                        }
                    }
                    var rtofsproxy = new List <RTOFS_FORECAST>();
                    var rtofs      = new List <RTOFS_FORECAST_PROXY>();
                    foreach (var item in rtofsPostion)
                    {
                        rtofs.Add(new RTOFS_FORECAST_PROXY
                        {
                            UTC           = utcTime,
                            LAT           = item.LAT,
                            LON           = item.LON,
                            SSS           = SSS[item.KEY],
                            SST           = SST[item.KEY],
                            ICE_THICKNESS = ICE_THICKNESS[item.KEY],
                            CURRENT_UV    = CURRENT_UV[item.KEY],
                            CURRENT_VV    = CURRENT_VV[item.KEY]
                        });

                        rtofsproxy.Add(new RTOFS_FORECAST
                        {
                            UTC           = utcTime,
                            LAT           = item.LAT,
                            LON           = item.LON,
                            SSS           = SSS[item.KEY],
                            SST           = SST[item.KEY],
                            ICE_THICKNESS = ICE_THICKNESS[item.KEY],
                            CURRENT_UV    = CURRENT_UV[item.KEY],
                            CURRENT_VV    = CURRENT_VV[item.KEY]
                        });
                    }

                    RtofsMakeJson(rtofsproxy);

                    _oceanModel.Database.CommandTimeout = 99999;

                    var rtofsSplit = Split(rtofs, 10000);
                    foreach (var item in rtofsSplit.Select((value, index) => new { value, index }))
                    {
                        EFBatchOperation.For(_oceanModel, _oceanModel.RTOFS_FORECAST_PROXY).InsertAll(item.value);
                        Thread.Sleep(10);
                        var progress = Math.Round((double)item.index / 0.259, 2);
                        _log.Info($"Rtofs Nowcast Db insert :{_decodeList[0][0]}-{_decodeList[0][1]}-{_decodeList[0][2]} {_decodeList[0][3]}:00 / {progress} %");
                    }

                    rtofsSplit = null;
                    rtofs      = null;
                    _log.Info($"Rtofs Forecast Db insert Finish");

                    var conditionWeatherDb = _logModel.CONDITION_OCEAN_WEATHER.First();
                    if (conditionWeatherDb.DATE_LAST_OF_RTOFS_JSON < utcTime)
                    {
                        conditionWeatherDb.DATE_LAST_FILE_OF_RTOFS_FORECAST = _dateNextRtofsForecastFileToGet;
                        conditionWeatherDb.FILE_NAME_LAST_OF_RTOFS_FORECAST = _decodeList[0][4];
                        if (_decodeList[1][4] == "rtofs_glo_2ds_f192_3hrly_prog.nc" || _decodeList[1][4] == "rtofs_glo_2ds_f192_3hrly_diag.nc")
                        {
                            conditionWeatherDb.DB_OF_RTOFS_FORECAST    = "BASIC";
                            conditionWeatherDb.DATE_LAST_OF_RTOFS_JSON = utcTime;
                            conditionWeatherDb.DATE_LAST_OF_RTOFS      = utcTime;
                        }
                    }
                    _logModel.SaveChanges();
                }
            }
        }
Exemple #4
0
        public void Initialize()
        {
            if (!DataSetFactory.ContainsProvider("memory"))
            {
                DataSetFactory.Register(typeof(MemoryDataSet));
            }
            if (!DataSetFactory.ContainsProvider("ab"))
            {
                DataSetFactory.Register(typeof(AzureBlobDataSet));
            }
            string customTempLocalResourcePath =
                RoleEnvironment.GetLocalResource("localStorage1").RootPath;

            Environment.SetEnvironmentVariable("TMP", customTempLocalResourcePath);
            Environment.SetEnvironmentVariable("TEMP", customTempLocalResourcePath);

            string jobsDatabaseConnectionString = RoleEnvironment.GetConfigurationSettingValue("FetchClimate.JobsDatabaseConnectionString");
            string jobsStorageConnectionString  = RoleEnvironment.GetConfigurationSettingValue("FetchClimate.JobsStorageConnectionString");

            foreach (TraceListener item in Trace.Listeners)
            {
                if (!(item is DefaultTraceListener)) // The default trace listener is always in any TraceSource.Listeners collection.
                {
                    AutoRegistratingTraceSource.RegisterTraceListener(item);
                    WorkerTrace.TraceEvent(TraceEventType.Information, 19, string.Format("TraceListener \"{0}\" registered for accepting data from all AutoRegistratingTraceSources", item.ToString()));
                }
            }

            JobManager.InitializeJobTable(jobsDatabaseConnectionString, false);

            configProvider = new SqlExtendedConfigurationProvider(
                RoleEnvironment.GetConfigurationSettingValue("ConfigurationDatabaseConnectionString"));
            WorkerTrace.TraceEvent(TraceEventType.Information, 6, string.Format("Connected to configuration database. Latest timestamp {0}",
                                                                                configProvider.GetConfiguration(DateTime.MaxValue).TimeStamp));

            azureGAC = new AssemblyStore(RoleEnvironment.GetConfigurationSettingValue("FetchWorker.AssemblyStoreConnectionString"));


            //overriding bug-containing default azure provider with the fixed one
            Type t    = typeof(DataSetFactory);
            var  dict = (System.Collections.IDictionary)t.InvokeMember("providersByName", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField, null, null, null);

            dict.Remove("az");
            DataSetFactory.Register(typeof(Microsoft.Research.Science.Data.Azure.AzureDataSet));
            WorkerTrace.TraceEvent(TraceEventType.Verbose, 9, "Available Scientific DataSet providers:\n" + DataSetFactory.RegisteredToString());


            if (int.TryParse(RoleEnvironment.GetConfigurationSettingValue("JobTouchPeriod"), out touchPeriodInSeconds))
            {
                WorkerTrace.TraceEvent(TraceEventType.Verbose, 10, string.Format("Touch period for processing job is set to {0}", touchPeriodInSeconds));
            }
            else
            {
                WorkerTrace.TraceEvent(TraceEventType.Warning, 11, string.Format("Failed to read touch period from config. Parsing of value failed. touch period is set to {0}", touchPeriodInSeconds));
            }

            manager = new JobManager(jobsDatabaseConnectionString, jobsStorageConnectionString);

            //Scheduling cleanup
            string instanceId = RoleEnvironment.CurrentRoleInstance.Id;

            int.TryParse(instanceId.Substring(instanceId.LastIndexOf(".") + 1), out instanceIndex);
            if (instanceIndex == 0)
            {
                double cleanPeriod = 0;
                if (!double.TryParse(RoleEnvironment.GetConfigurationSettingValue("HoursBetweenCleanup"), out cleanPeriod))
                {
                    cleanPeriod = 23;
                    WorkerTrace.TraceEvent(TraceEventType.Warning, 12, "Failed to parse period between clean-ups from configuration. Setting it to default 23 hours.");
                }
                cleanupTimeSpan = TimeSpan.FromHours(cleanPeriod);
                lastCleanUpTime = manager.LastCleanUpTime;
                DateTime now = DateTime.UtcNow;
                if (now - lastCleanUpTime >= cleanupTimeSpan)
                {
                    manager.SubmitCleanUp();
                    lastCleanUpTime = now;
                }
            }

            WorkerTrace.TraceEvent(TraceEventType.Verbose, 13, string.Format("starting Allocated memory: {0}Mb", GC.GetTotalMemory(false) / 1024 / 1024));
        }
Exemple #5
0
        // The Application_Start and Application_End methods are special methods that do not represent HttpApplication events.
        // ASP.NET calls them once for the lifetime of the application domain, not for each HttpApplication instance.
        // see "ASP.NET Application Life Cycle Overview for IIS 5.0 and 6.0" https://msdn.microsoft.com/en-us/library/ms178473.aspx
        // The Global.asax file is used in Integrated mode in IIS 7.0 much as it is used in ASP.NET in IIS 6.0.
        protected void Application_Start()
        {
            Trace.TraceInformation("Global.asax: starting the http application domain (Application_Start).");

            // The System.Diagnostics.Trace object gets listeners from Web.config/configuration/system.diagnostics/trace/listeners section.
            // The below code copies Trace listeners to all AutoRegistratingTraceSource trace sources.
            foreach (TraceListener item in Trace.Listeners)
            {
                if (!(item is DefaultTraceListener)) // The default trace listener is always in any TraceSource.Listeners collection.
                {
                    Microsoft.Research.Science.FetchClimate2.AutoRegistratingTraceSource.RegisterTraceListener(item);
                    Trace.TraceInformation("TraceListener \"{0}\" registered for accepting data from all AutoRegistratingTraceSources", item);
                }
            }

            // Initializing Scientific DataSet registration
            if (!DataSetFactory.ContainsProvider("memory"))
            {
                DataSetFactory.Register(typeof(MemoryDataSet));
            }
            if (!DataSetFactory.ContainsProvider("ab"))
            {
                DataSetFactory.Register(typeof(AzureBlobDataSet));
            }
            Trace.TraceInformation("Scientific DataSet providers: " + string.Join(" ", DataSetFactory.GetRegisteredProviders()));

            // Initialize JobsManager if necessary
            bool firstInstance = RoleEnvironment.CurrentRoleInstance.Id == RoleEnvironment.CurrentRoleInstance.Role.Instances[0].Id;

            // The first Frontend role instance initializes the database if necessary.
            Microsoft.Research.Science.FetchClimate2.JobManager.InitializeJobTable(FrontendSettings.Current.JobsDatabaseConnectionString, firstInstance);

            // Initialize ASP.NET WebAPI
            // enabled by Microsoft.AspNet.WebApi.Tracing package
            if (FrontendSettings.Current.EnableAspnetDiagnosticTrace)
            {
                var tw = new System.Web.Http.Tracing.SystemDiagnosticsTraceWriter();
                tw.MinimumLevel = System.Web.Http.Tracing.TraceLevel.Debug;
                tw.IsVerbose    = true;
                GlobalConfiguration.Configuration.Services.Replace(typeof(System.Web.Http.Tracing.ITraceWriter), tw);
            }
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);

            // enable CORS
            GlobalConfiguration.Configuration.MessageHandlers.Add(new CorsMessageHandler());

            // configure formatters
            var formatters = GlobalConfiguration.Configuration.Formatters;

            //formatters.Remove(formatters.XmlFormatter);

            formatters.Add(new PlainTextFormatter());

            var jsonFormatter = GlobalConfiguration.Configuration.Formatters.OfType <JsonMediaTypeFormatter>().FirstOrDefault();

            if (jsonFormatter == null)
            {
                string msg = "No json media formatter is available due to some internal error";
                Trace.TraceError(msg);
                throw new Exception(msg);
            }
            jsonFormatter.SerializerSettings.Converters.Add(new JsonCompliantNumberConverter());
        }
 public static void ClassInitialize(TestContext dummy)
 {
     DataSetFactory.Register(typeof(Microsoft.Research.Science.Data.Azure.AzureDataSet));
 }
Exemple #7
0
        public static void RtofsNowCastInsert()
        {
            DataSetFactory.Register(typeof(NetCDFDataSet));

            using (DataSet diag = DataSet.Open(_decodeList[0][6]))
            {
                using (DataSet prog = DataSet.Open(_decodeList[1][6]))
                {
                    var UTCtemp          = prog.Variables.ElementAt(10).GetData().GetValue(0);
                    var SSStemp          = prog.Variables.ElementAt(1).GetData();
                    var SSTtemp          = prog.Variables.ElementAt(2).GetData();
                    var CURRENT_UVtemp   = prog.Variables.ElementAt(4).GetData();
                    var CURRENT_VVtemp   = prog.Variables.ElementAt(3).GetData();
                    var ICETHICKNESStemp = diag.Variables.ElementAt(5).GetData();

                    var lonLen = 4500;
                    var latLen = 3298;

                    var utcTime = new DateTime(Convert.ToInt16(_decodeList[0][0]), Convert.ToInt16(_decodeList[0][1]), Convert.ToInt16(_decodeList[0][2]), Convert.ToInt16(_decodeList[0][3]), 0, 0);
                    int offset  = 0;

                    var KEY           = new int[14841000];
                    var SSS           = new float[14841000];
                    var SST           = new float[14841000];
                    var CURRENT_UV    = new float[14841000];
                    var CURRENT_VV    = new float[14841000];
                    var ICE_THICKNESS = new float[14841000];

                    for (int i = 0; i < latLen; i++)
                    {
                        for (int j = 0; j < lonLen; j++)
                        {
                            offset                = i * lonLen + j;
                            SSS[offset]           = (float)SSStemp.GetValue(0, i, j) > 1000 ? 9999 : (float)SSStemp.GetValue(0, i, j);
                            SST[offset]           = (float)SSTtemp.GetValue(0, i, j) > 1000 ? 9999 : (float)SSTtemp.GetValue(0, i, j);
                            CURRENT_UV[offset]    = (float)CURRENT_UVtemp.GetValue(0, 0, i, j) > 1000 ? 9999 : (float)CURRENT_UVtemp.GetValue(0, 0, i, j);
                            CURRENT_VV[offset]    = (float)CURRENT_VVtemp.GetValue(0, 0, i, j) > 1000 ? 9999 : (float)CURRENT_VVtemp.GetValue(0, 0, i, j);
                            ICE_THICKNESS[offset] = (float)ICETHICKNESStemp.GetValue(0, i, j) > 1000 ? 9999 : (float)ICETHICKNESStemp.GetValue(0, i, j);
                        }
                    }

                    var rtofs = new List <RTOFS>();
                    foreach (var item in rtofsPostion)
                    {
                        rtofs.Add(new RTOFS
                        {
                            UTC           = utcTime,
                            LAT           = item.LAT,
                            LON           = item.LON,
                            SSS           = SSS[item.KEY],
                            SST           = SST[item.KEY],
                            ICE_THICKNESS = ICE_THICKNESS[item.KEY],
                            CURRENT_UV    = CURRENT_UV[item.KEY],
                            CURRENT_VV    = CURRENT_VV[item.KEY]
                        });
                    }

                    //Nww3MakeJson(wavedataout);

                    var rtofsDbInsertCheck = new List <RTOFS_DB_INSERT_CHECK>();
                    int resumeCount        = 0;
                    int insertDataCount    = 259200;
                    var checkDate          = utcTime;
                    _oceanModel.Database.CommandTimeout = 99999;

                    var checkDB = _oceanModel.RTOFS.FirstOrDefault(s => s.UTC == checkDate);

                    if (checkDB != null)
                    {
                        resumeCount = _oceanModel.RTOFS.Count(s => s.UTC == checkDate);

                        if (resumeCount == insertDataCount)
                        {
                            rtofsDbInsertCheck.Add(new RTOFS_DB_INSERT_CHECK
                            {
                                FILE_NAME     = _decodeList[1][4].ToLower(),
                                DATE_OF_FILE  = checkDate,
                                DATE_INSERTED = DateTime.UtcNow
                            });
                            rtofsDbInsertCheck.ForEach(s => _oceanModel.RTOFS_DB_INSERT_CHECK.Add(s));
                            _oceanModel.SaveChanges();
                            return;
                        }
                    }

                    var rtofsSplit = Split(rtofs, 10000);

                    foreach (var item in rtofsSplit.Select((value, index) => new { value, index }))
                    {
                        if (item.index * 10000 >= resumeCount)
                        {
                            EFBatchOperation.For(_oceanModel, _oceanModel.RTOFS).InsertAll(item.value);
                            Thread.Sleep(500);
                        }
                        var progress = Math.Round((double)item.index / 0.259, 2);
                        _log.Info($"Rtofs Nowcast Db insert :{_decodeList[0][0]}-{_decodeList[0][1]}-{_decodeList[0][2]} {_decodeList[0][3]}:00 / {progress} %");
                    }

                    rtofsSplit = null;
                    rtofs      = null;
                    rtofsDbInsertCheck.Add(new RTOFS_DB_INSERT_CHECK
                    {
                        FILE_NAME     = _decodeList[1][4].ToLower(),
                        DATE_OF_FILE  = checkDate,
                        DATE_INSERTED = DateTime.UtcNow
                    });

                    rtofsDbInsertCheck.ForEach(s => _oceanModel.RTOFS_DB_INSERT_CHECK.Add(s));
                    _oceanModel.SaveChanges();
                    _log.Info($"Wave Db insert Finish");
                }
            }
        }