public void Fetch()
        {
            TimeRunner.Run(async(time, th) =>
            {
                var downloader = new FakeElexonDownloader();
                var dir        = new FakeDirectory(th);
                var fetcher    = new FetchB1610(th, downloader, dir, time, null);

                var cts     = new CancellationTokenSource();
                Task unused = th.Run(async() =>
                {
                    await th.Delay(NodaTime.Duration.FromMinutes(5)).ConfigureAwait(th);
                    cts.Cancel();
                });

                await fetcher.Start(cts.Token).ConfigureAwaitHideCancel(th);

                var reader = new B1610.Reader(th, dir);
                Assert.Equal(100 + 103, await reader.CountAsync().ConfigureAwait(th));
                Assert.Equal(new B1610.Data("GRAI-6", Instant.FromUtc(2017, 7, 31, 23, 0), Power.FromKilowatts(226_200)),
                             await(await reader.ReadAsync(0, 1)).First());
                Assert.Equal(new B1610.Data("GRGBW-1", Instant.FromUtc(2017, 7, 31, 23, 30), Power.FromKilowatts(43_390)),
                             await(await reader.ReadAsync(100 + 103 - 1, 100 + 103)).First());
            }, startInstant: NodaTime.Instant.FromUtc(2017, 8, 10, 22, 30));
        }
Exemplo n.º 2
0
 public FetchB1610(ITaskHelper taskHelper, IElexonDownloader downloader, IDirectory dir, ITime time,
                   string errorLogFilename)
 {
     _taskHelper       = taskHelper;
     _time             = time;
     _scheduler        = new Scheduler(time, taskHelper);
     _b1610            = new B1610(taskHelper, downloader);
     _reader           = new B1610.Reader(taskHelper, dir);
     _writer           = new B1610.Writer(taskHelper, dir);
     _errorLogFilename = errorLogFilename;
 }
Exemplo n.º 3
0
        static async Task <int> ShowB1610(ShowB1610Options opts)
        {
            var taskHelper = SystemTaskHelper.Instance;
            var dir        = new SystemDirectory(taskHelper, opts.DataDirectory);
            var reader     = new B1610.Reader(taskHelper, dir);
            var count      = opts.Count;
            var totalCount = (int)await reader.CountAsync();

            Console.WriteLine($"B1610 data count: {totalCount}");
            Console.WriteLine($"Latest {count} data readings:");
            var data = await reader.ReadAsync(totalCount - count, totalCount);

            data.ForEach(r => Console.WriteLine(r));
            return(0);
        }
Exemplo n.º 4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            services.AddResponseCompression(options =>
            {
                options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
                {
                    MediaTypeNames.Application.Octet,
                    WasmMediaTypeNames.Application.Wasm,
                });
            });

            services.AddSingleton <ITime>(SystemTime.Instance);
            services.AddSingleton <ITaskHelper>(SystemTaskHelper.Instance);

            services.AddSingleton <Db <FuelInstHhCur.Data> >(svcs =>
            {
                var taskHelper = svcs.GetRequiredService <ITaskHelper>();
                var options    = svcs.GetRequiredService <CmdLineOptions>();
                var dir        = new SystemDirectory(taskHelper, options.FuelInstHhCurDataDirectory);
                var reader     = new FuelInstHhCur.Reader(taskHelper, dir);
                return(new Db <FuelInstHhCur.Data>(taskHelper, reader));
            });
            services.AddSingleton <Db <Freq.Data> >(svcs =>
            {
                var taskHelper = svcs.GetRequiredService <ITaskHelper>();
                var options    = svcs.GetRequiredService <CmdLineOptions>();
                var dir        = new SystemDirectory(taskHelper, options.FreqDataDirectory);
                var reader     = new Freq.Reader(taskHelper, dir);
                return(new Db <Freq.Data>(taskHelper, reader));
            });
            services.AddSingleton <InstantaneousFlow.Reader>(svcs =>
            {
                var taskHelper = svcs.GetRequiredService <ITaskHelper>();
                var options    = svcs.GetRequiredService <CmdLineOptions>();
                var dir        = new SystemDirectory(taskHelper, options.GasFlowDataDirectory);
                return(new InstantaneousFlow.Reader(taskHelper, dir));
            });
            services.AddSingleton <Db <InstantaneousFlow.Data> >(svcs =>
            {
                var taskHelper = svcs.GetRequiredService <ITaskHelper>();
                var reader     = svcs.GetRequiredService <InstantaneousFlow.Reader>();
                return(new Db <InstantaneousFlow.Data>(taskHelper, reader));
            });
            services.AddSingleton <Db <B1610.Data> >(svcs =>
            {
                var taskHelper = svcs.GetRequiredService <ITaskHelper>();
                var options    = svcs.GetRequiredService <CmdLineOptions>();
                var dir        = new SystemDirectory(taskHelper, options.B1610DataDirectory);
                var reader     = new B1610.Reader(taskHelper, dir);
                return(new Db <B1610.Data>(taskHelper, reader));
            });
            services.AddSingleton <Db <PhyBmData.FpnData> >(svcs =>
            {
                var taskHelper = svcs.GetRequiredService <ITaskHelper>();
                var options    = svcs.GetRequiredService <CmdLineOptions>();
                var dir        = new SystemDirectory(taskHelper, options.FpnDataDirectory);
                var reader     = new PhyBmData.FpnReader(taskHelper, dir);
                return(new Db <PhyBmData.FpnData>(taskHelper, reader, pollInterval: Duration.FromMinutes(5)));
            });

            services.AddSingleton <PostBag>();
        }