Esempio n. 1
0
        public static ReportDescription generateReportDescription()
        {
            ReportDescription reportDescription = new ReportDescription();
            string            reportSpecifierID = RandomHex.instance().generateRandomHex(10);

            // add a status report
            reportDescription.addReport(reportSpecifierID, ReportName.TELEMETRY_STATUS, 10, DurationModifier.MINUTES);

            reportDescription.addDescription(reportSpecifierID, RandomHex.instance().generateRandomHex(10), "resource1", ReportEnumeratedType.xresourceStatus,
                                             ReadingTypeEnumeratedType.xnotApplicable, "http://MarketContext1", 1, 1, false, DurationModifier.MINUTES);


            // history usage report
            reportSpecifierID = RandomHex.instance().generateRandomHex(10);

            reportDescription.addReport(reportSpecifierID, ReportName.HISTORY_USAGE, 10, DurationModifier.MINUTES);

            reportDescription.addDescriptionEnergyItem(reportSpecifierID, RandomHex.instance().generateRandomHex(10), "resource1", ReportEnumeratedType.usage,
                                                       ReadingTypeEnumeratedType.DirectRead, "http://MarketContext1", 1, 10, false, DurationModifier.MINUTES, eEnergyItemType.EnergyReal,
                                                       "RealEnergy", "Wh", SiScaleCodeType.n);

            reportDescription.addDescriptionPowerItem(reportSpecifierID, RandomHex.instance().generateRandomHex(10), "resource1", ReportEnumeratedType.usage,
                                                      ReadingTypeEnumeratedType.DirectRead, "http://MarketContext1", 1, 10, false, DurationModifier.MINUTES, ePowerItemType.PowerReal,
                                                      "RealPower", "W", SiScaleCodeType.n, 60, 110, true);

            // the test set will fail if reactive or appparent power/energy are telemetry or history reports

            /*reportDescription.addDescriptionPowerItem(reportSpecifierID, RandomHex.instance().generateRandomHex(10), "resource1", ReportEnumeratedType.usage,
             *  ReadingTypeEnumeratedType.DirectRead, "http://MarketContext1", 1, 10, false, ePowerItemType.PowerApparent,
             *  "ApparentPower", "VA", SiScaleCodeType.n, 60, 110, true);
             *
             * reportDescription.addDescriptionPowerItem(reportSpecifierID, RandomHex.instance().generateRandomHex(10), "resource1", ReportEnumeratedType.usage,
             *  ReadingTypeEnumeratedType.DirectRead, "http://MarketContext1", 1, 10, false, ePowerItemType.PowerReactive,
             *  "ReactivePower", "VAR", SiScaleCodeType.n, 60, 110, true);*/

            // telemetry usage
            reportSpecifierID = RandomHex.instance().generateRandomHex(10);

            reportDescription.addReport(reportSpecifierID, ReportName.TELEMETRY_USAGE, 10, DurationModifier.MINUTES);

            reportDescription.addDescriptionPowerItem(reportSpecifierID, RandomHex.instance().generateRandomHex(10), "resource1", ReportEnumeratedType.usage,
                                                      ReadingTypeEnumeratedType.DirectRead, "http://MarketContext1", 1, 10, false, DurationModifier.MINUTES, ePowerItemType.PowerReal,
                                                      "RealPower", "W", SiScaleCodeType.n, 60, 110, true);



            return(reportDescription);
        }
Esempio n. 2
0
        public void reportGeneration()
        {
            ReportDescription reportDescription = ReportHelper.generateReportDescription();

            RegisterReport registerReport = new RegisterReport();

            string output = registerReport.createRegisterReport(RandomHex.instance().generateRandomHex(10),
                                                                "TH_VEN", reportDescription);

            Console.Out.WriteLine(output);

            Assert.IsTrue(output.Contains("x-notApplicable"));
            Assert.IsTrue(output.Contains("x-resourceStatus"));

            object oadrObject = SerializeOadrObject.deserializeObject(output, typeof(oadrPayload));
        }
Esempio n. 3
0
        async Task <System.Net.Mail.Attachment> IReportRunner.ExecuteAsync(string reportName, IDictionary <string, string> paramValueByParamName)
        {
            ReportDescription report = null;

            try
            {
                report = (await PortalHelpers.GetReportsAsync(reportName)).FirstOrDefault();
                using (var conn = new SqlConnection(PortalHelpers.DefaultUloConnectionString))
                {
                    LogInformation("Executing report {ReportName} with {SprocSchema}.{SprocName}", reportName, report.SprocSchema, report.SprocName);
                    await conn.OpenAsync();

                    using (var cmd = new SqlCommand($"[{report.SprocSchema}].[{report.SprocName}]", conn)
                    {
                        CommandType = CommandType.StoredProcedure,
                        CommandTimeout = ConfigOptions.Value.TimeoutInSeconds
                    })
                    {
                        foreach (var pd in report.Parameters)
                        {
                            var sval = pd.IsHardcoded ? pd.HardCodedValue : paramValueByParamName[pd.SqlParameterName];
                            var oval = Convert.ChangeType(sval, pd.ClrType);
                            cmd.Parameters.Add(new SqlParameter("@" + pd.SqlParameterName, oval));
                        }
                        var ds = cmd.ExecuteReadDataSet(Logger);
                        var st = new MemoryStream();
                        ds.ToSpreadSheet(st);
                        st.Position = 0;
                        var    now      = DateTime.UtcNow;
                        string filename = report.FilenamePattern == null ?
                                          report.Name :
                                          string.Format(
                            report.FilenamePattern,
                            now,
                            now.ToLocalTime(),
                            now.ToTimeZone(PortalHelpers.DisplayTimeZone));
                        filename += MimeType.Application.SpreadSheet.Xlsx.PrimaryFileExtension;
                        return(new System.Net.Mail.Attachment(st, filename, MimeType.Application.SpreadSheet.Xlsx));
                    }
                }
            }
            catch (Exception ex)
            {
                LogError(ex, "error running report {name}", report.Name);
                throw;
            }
        }
Esempio n. 4
0
        public void serializeReportIntervalsTelemetryStatus()
        {
            ReportDescription reportDescription = new ReportDescription();

            reportDescription.addReport("specifierID", ReportName.TELEMETRY_STATUS, 0, DurationModifier.MINUTES);

            reportDescription.addIntervalResourceStatus("specifierID", DateTime.UtcNow, 0, DurationModifier.SECONDS, "rid", 1, (float)1.0, DataQuality.qualityGoodNonSpecific,
                                                        true, false, (float)1.0, (float)2.0, (float)3.0, (float)4.0, (float)5.0, (float)6.0, (float)7.0, (float)8.0, (float)9.0,
                                                        (float)10.0, (float)11.0, (float)12.0, (float)13.0, (float)14.0, (float)15.0, (float)16.0);

            oadrReportType report = reportDescription.generateReport("specifierID", DateTime.UtcNow);

            string output = SerializeOadrObject.serializeOjbect(report, typeof(oadrReportType));

            Assert.IsTrue(output.Contains("<oadrReportPayload"));
            Assert.IsTrue(output.Contains("<oadrPayloadResourceStatus"));
        }
Esempio n. 5
0
        private void InitReportMap()
        {
            var reportTypes = Enum.GetValues(typeof(ReportType));

            _reportMap = new ReportDescription[reportTypes.Length];
            foreach (var reportType in reportTypes)
            {
                _reportMap[(int)reportType] = new ReportDescription(GenericPrintThread);
            }
            _reportMap[(int)ReportType.FailedControlRelations] = new ReportDescription(GenericPrintThread,
                                                                                       reportParameters => _electionManager.SourceData.
                                                                                       BindAutoLinesAndChecksCountMethods((Election)reportParameters[PRN_ELECTION]),
                                                                                       reportParameters => { });
            _reportMap[(int)ReportType.ElectionProtocol] = new ReportDescription(GenericPrintThread,
                                                                                 reportParameters => _electionManager.SourceData.
                                                                                 BindAutoLinesAndChecksCountMethods((Election)reportParameters[PRN_ELECTION]),
                                                                                 reportParameters => { });
        }
        /**********************************************************/

        private void validateReportDescription(ReportDescription reportDescription, int numStatusDescription, int numDataDescriptions)
        {
            foreach (string reportSpecifierID in reportDescription.ReportSpecifierIDs)
            {
                oadrReportType report = reportDescription.generateReportDescription(reportSpecifierID);

                if (report.reportName.Contains("STATUS"))
                {
                    // each resource should add one status description
                    Assert.AreEqual(numStatusDescription, report.oadrReportDescription.Length);
                }
                else
                {
                    // each resource should add 2 data descriptions
                    Assert.AreEqual(numDataDescriptions, report.oadrReportDescription.Length);
                }
            }
        }
        public void N1_0020_TH_VTN_1()
        {
            VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venName, TestProperties.venID, TestProperties.venPassword);

            // register
            CreatePartyRegistration createPartyRegistration = ven.createPartyRegistration(RandomHex.instance().generateRandomHex(10), oadrProfileType.Item20b, oadrTransportType.simpleHttp, "", false, false, true);

            Assert.IsTrue(createPartyRegistration.response != null);

            Console.Out.WriteLine(createPartyRegistration.responseBody);

            // POLL
            OadrPoll oadrPoll = ven.poll();

            Assert.IsNotNull(oadrPoll.response);

            Console.Out.WriteLine(oadrPoll.responseBody);

            // First request is registerReport
            Assert.IsTrue(oadrPoll.responseTypeIs(typeof(oadrRegisterReportType)));

            oadrRegisterReportType registerReportType = oadrPoll.getRegisterReportResponse();

            RegisteredReport registeredReport = ven.registeredReport(registerReportType.requestID, "200", "OK");

            Assert.IsNotNull(registeredReport.response);
            Assert.AreEqual(registeredReport.response.eiResponse.responseCode, "200");

            // register our own report
            ReportDescription reportDescription = ReportHelper.generateReportDescription();

            RegisterReport registerReport = ven.registerReport(RandomHex.instance().generateRandomHex(10), reportDescription);

            Assert.IsNotNull(registerReport.response);

            Assert.AreEqual("200", registerReport.response.eiResponse.responseCode);

            Assert.AreEqual(registerReport.request.requestID, registerReport.response.eiResponse.requestID);
        }
Esempio n. 8
0
        public void R1_3010_TH_VTN_1()
        {
            VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venName, "", TestProperties.venPassword);

            QueryRegistration queryRegistration = ven.queryRegistration();

            OadrPoll poll = ven.poll();

            poll.responseTypeIs(typeof(oadrCreateReportType));

            oadrCreateReportType createReport = poll.getCreateReportResponse();

            Console.Out.WriteLine(poll.responseBody);

            ReportDescription reportDescription = new ReportDescription();

            reportDescription.addReport(createReport.oadrReportRequest[0].reportSpecifier.reportSpecifierID, ReportName.TELEMETRY_STATUS, 0, DurationModifier.MINUTES);

            DateTime dtstart = DateTime.UtcNow;

            reportDescription.addIntervalResourceStatus(createReport.oadrReportRequest[0].reportSpecifier.reportSpecifierID, dtstart,
                                                        0, DurationModifier.SECONDS, "rid", 1, (float)1.0, DataQuality.qualityGoodNonSpecific, true, false, (float)1.0, (float)1.0, (float)1.0, (float)1.0,
                                                        (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0,
                                                        (float)1.0, (float)1.0);

            CreatedReport createdReport = ven.createdReport(createReport.requestID, 200, "OK");

            Assert.IsNotNull(createdReport.response);

            List <string> reportSpecifierIDs = new List <string>();

            reportSpecifierIDs.Add(createReport.oadrReportRequest[0].reportSpecifier.reportSpecifierID);

            UpdateReport updateReport = ven.updateReport(createReport.requestID, reportDescription, reportSpecifierIDs, dtstart);

            Assert.IsNotNull(updateReport.response);
        }
Esempio n. 9
0
        public void serializeReportIntervalsTelemetryUsage()
        {
            ReportDescription reportDescription = new ReportDescription();

            reportDescription.addReport("specifierID", ReportName.TELEMETRY_USAGE, 0, DurationModifier.MINUTES);

            int uid = reportDescription.addInterval("specifierID", DateTime.UtcNow, 0, DurationModifier.SECONDS);

            reportDescription.addIntervalReportPayload("specifierID", uid, "rid", 1, (float)1.0, (float)22.3, DataQuality.qualityGoodNonSpecific);
            reportDescription.addIntervalReportPayload("specifierID", uid, "rid2", 1, (float)1.0, (float)41.3, DataQuality.qualityGoodNonSpecific);

            reportDescription.addIntervalReportPayload("specifierID", DateTime.UtcNow.AddMinutes(5), 0, DurationModifier.SECONDS, "rid3", 1, (float)1.0, (float)57.6, DataQuality.qualityGoodNonSpecific);

            oadrReportType report = reportDescription.generateReport("specifierID", DateTime.UtcNow);

            // check that the createdDateTime is properly set to the current time
            Console.Out.WriteLine(DateTime.UtcNow - report.createdDateTime);
            Assert.IsTrue((DateTime.UtcNow - report.createdDateTime).Seconds < 5);

            string output = SerializeOadrObject.serializeOjbect(report, typeof(oadrReportType));

            Assert.IsTrue(output.Contains("<oadrReportPayload"));
            Assert.IsTrue(output.Contains("<payloadFloat"));
        }
Esempio n. 10
0
 private void InitReportMap()
 {
     var reportTypes = Enum.GetValues(typeof(ReportType));
     _reportMap = new ReportDescription[reportTypes.Length];
     foreach (var reportType in reportTypes)
         _reportMap[(int)reportType] = new ReportDescription(GenericPrintThread);
     _reportMap[(int)ReportType.FailedControlRelations] = new ReportDescription(GenericPrintThread,
         reportParameters => _electionManager.SourceData.
             BindAutoLinesAndChecksCountMethods((Election)reportParameters[PRN_ELECTION]),
         reportParameters => { });
     _reportMap[(int)ReportType.ElectionProtocol] = new ReportDescription(GenericPrintThread,
         reportParameters => _electionManager.SourceData.
             BindAutoLinesAndChecksCountMethods((Election)reportParameters[PRN_ELECTION]),
         reportParameters => { });
 }
Esempio n. 11
0
 public ConfigureReportModel(ULODBEntities db, ReportDescription description = null)
 {
     Description = description;
     RegionItems.AddRange(PortalHelpers.CreateRegionSelectListItems());
     ReviewItems.AddRange(PortalHelpers.CreateReviewSelectListItems());
 }
Esempio n. 12
0
        public void R1_3020_TH_VTN_1()
        {
            VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venName, TestProperties.venID, TestProperties.venPassword);

            OadrPoll poll = ven.poll();

            poll.responseTypeIs(typeof(oadrCreateReportType));

            oadrCreateReportType createReport = poll.getCreateReportResponse();

            Console.Out.WriteLine(poll.responseBody);

            ReportDescription reportDescription = new ReportDescription();

            reportDescription.addReport(createReport.oadrReportRequest[0].reportSpecifier.reportSpecifierID, ReportName.TELEMETRY_STATUS, 0, DurationModifier.MINUTES);


            CreatedReport createdReport = ven.createdReport(createReport.requestID, 200, "OK");

            Assert.IsNotNull(createdReport.response);

            List <string> reportSpecifierIDs = new List <string>();

            int sleepTime = (int)(createReport.oadrReportRequest[0].reportSpecifier.reportInterval.properties.dtstart.datetime - DateTime.UtcNow).TotalSeconds;

            if (sleepTime > 0)
            {
                System.Threading.Thread.Sleep(sleepTime * 1000);
            }

            reportSpecifierIDs.Add(createReport.oadrReportRequest[0].reportSpecifier.reportSpecifierID);

            DateTime endTime = createReport.oadrReportRequest[0].reportSpecifier.reportInterval.properties.dtstart.datetime +
                               System.Xml.XmlConvert.ToTimeSpan(createReport.oadrReportRequest[0].reportSpecifier.reportInterval.properties.duration.duration);

            // convert ISO8601 duration to timespan
            // http://stackoverflow.com/questions/62804/how-to-convert-iso-8601-duration-to-timespan-in-vb-net
            // http://msdn.microsoft.com/en-us/library/system.xml.xmlconvert.totimespan.aspx
            int sleepDelay = (int)System.Xml.XmlConvert.ToTimeSpan(createReport.oadrReportRequest[0].reportSpecifier.reportBackDuration.duration).TotalSeconds;

            // the test should continue until the end time has passed, but the test set exits after it receives 2 updates
            // while (DateTime.Now < endTime)
            for (int count = 0; count < 2; count++)
            {
                DateTime dtstart = DateTime.UtcNow;

                reportDescription.addIntervalResourceStatus(createReport.oadrReportRequest[0].reportSpecifier.reportSpecifierID, dtstart,
                                                            0, DurationModifier.SECONDS, "rid", 1, (float)1.0, DataQuality.qualityGoodNonSpecific, true, false, (float)1.0, (float)1.0, (float)1.0, (float)1.0,
                                                            (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0, (float)1.0,
                                                            (float)1.0, (float)1.0);

                UpdateReport updateReport = ven.updateReport(createReport.requestID, reportDescription, reportSpecifierIDs, dtstart);

                Assert.IsNotNull(updateReport.response);

                if (count == 0)
                {
                    System.Threading.Thread.Sleep(sleepDelay * 1000);
                }
            }
        }