/**********************************************************************************/

        public void updateEventOpt(List <oadrDistributeEventTypeOadrEvent> evts, OptTypeType optType, OptReasonEnumeratedType optReason, string resourceID)
        {
            Thread thread = new Thread(delegate()
            {
                try
                {
                    CreateOpt createOpt;

                    foreach (oadrDistributeEventTypeOadrEvent evt in evts)
                    {
                        lock (m_ven)
                        {
                            createOpt = m_ven.createOptEvent(RandomHex.instance().generateRandomHex(10), RandomHex.instance().generateRandomHex(10),
                                                             evt, optType, optReason, resourceID);
                        }

                        m_callbacks.processCreateOpt(createOpt);
                    }
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }
            });

            thread.Start();
        }
        /**********************************************************************************/

        private bool doCreatePartyRegistration()
        {
            // if we've previously registered, the VTN should return our VEN ID and
            // Registration ID in the queryRegistration message
            // We shouldn't need to call CreatePartyRegistration at this point, but the
            // test set will n1_0020 will fail if we don't send the query message
            CreatePartyRegistration createPartyRegistration;

            lock (m_ven)
            {
                createPartyRegistration = m_ven.createPartyRegistration(RandomHex.instance().generateRandomHex(10), oadrProfileType.Item20b, oadrTransportType.simpleHttp, "", false, false, true);
            }

            m_callbacks.processCreatePartyRegisteration(createPartyRegistration);

            // exit if registration failed
            if (createPartyRegistration.eiResponseCode != 200)
            {
                return(false);
            }

            setPollinterval(createPartyRegistration.response);

            return(true);
        }
Пример #3
0
        /**********************************************************/

        public string createdOadrCreatedEvent(CreatedEventHelper createdEventHelper, string venID, int responseCode = 200, string responseDescription = "OK")
        {
            request = new oadrCreatedEventType();

            request.schemaVersion = "2.0b";

            request.eiCreatedEvent = new eiCreatedEvent();

            request.eiCreatedEvent.eiResponse = new EiResponseType();

            if (createdEventHelper.EventResponses.Count != 0)
            {
                request.eiCreatedEvent.eiResponse.requestID = "";
            }
            else
            {
                request.eiCreatedEvent.eiResponse.requestID = RandomHex.instance().generateRandomHex(10); //requestID;
            }
            request.eiCreatedEvent.eiResponse.responseCode        = responseCode.ToString();
            request.eiCreatedEvent.eiResponse.responseDescription = responseDescription;

            request.eiCreatedEvent.venID = venID;

            request.eiCreatedEvent.eventResponses = new eventResponsesEventResponse[createdEventHelper.EventResponses.Count];

            int index = 0;

            foreach (eventResponsesEventResponse eventResponse in createdEventHelper.EventResponses)
            {
                request.eiCreatedEvent.eventResponses[index] = eventResponse;
                index++;
            }

            return(serializeObject((object)request));
        }
Пример #4
0
        public string createOadrRequestEvent(string venID, uint replyLimit = 0, string requestID = "")
        {
            requestEvent = new oadrRequestEvent();

            requestEvent.eiRequestEvent = new eiRequestEvent();

            requestEvent.eiRequestEvent.venID     = venID;
            requestEvent.eiRequestEvent.requestID = (requestID == "" ? RandomHex.instance().generateRandomHex(10) : requestID);

            if (replyLimit > 0)
            {
                requestEvent.eiRequestEvent.replyLimit          = replyLimit;
                requestEvent.eiRequestEvent.replyLimitSpecified = true;
            }

            XmlSerializer serializer;

            // serialize the event
            serializer = new XmlSerializer(typeof(oadrRequestEvent));

            // StringWriter sw = new StringWriter();
            StringWriterWithEncoding sw = new StringWriterWithEncoding(Encoding.UTF8);

            serializer.Serialize(sw, requestEvent);

            requestBody = sw.ToString();

            return(requestBody);
        }
Пример #5
0
        /**********************************************************/

        public string createQueryRegistration(string requestID = "")
        {
            request = new oadrQueryRegistrationType();

            request.schemaVersion = "2.0b";

            request.requestID = (requestID != "" ? requestID : RandomHex.instance().generateRandomHex(10));

            return(serializeObject(request));
        }
Пример #6
0
        /********************************************************************************/

        public ucLoad(string resourceID)
        {
            InitializeComponent();

            if (resourceID == null || resourceID == "")
            {
                resourceID = RandomHex.instance().generateRandomHex(10);
            }

            initResource(resourceID);
        }
Пример #7
0
        public string createPartyRegistration(string requestID, string venID, string registrationID)
        {
            request = new oadrCancelPartyRegistrationType();

            request.schemaVersion = "2.0b";

            request.requestID      = (requestID != "" ? requestID : RandomHex.instance().generateRandomHex(10));
            request.registrationID = registrationID;
            request.venID          = venID;

            return(serializeObject((object)request));
        }
Пример #8
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);
        }
Пример #9
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));
        }
Пример #10
0
        /**********************************************************/

        public CreateOpt processOptSchedule(VEN2b ven)
        {
            OptSchedule optSchedule;

            lock (m_qOptSchedule)
            {
                if (m_qOptSchedule.Count == 0)
                {
                    return(null);
                }

                optSchedule = m_qOptSchedule.Dequeue();
            }

            return(ven.createOptSchedule(RandomHex.instance().generateRandomHex(10), optSchedule));
        }
        /**********************************************************************************/

        private bool doRegisterReports(string reportRequestID = null)
        {
            //ReportDescription reportDescription = m_resources.ReportDescription;
            Dictionary <string, ReportWrapper> reports = m_resources.Reports;

            RegisterReport registerReport;
            CreatedReport  createdReport = null;

            lock (m_ven)
            {
                registerReport = m_ven.registerReport(RandomHex.instance().generateRandomHex(10), reports, reportRequestID);

                // check for piggy backed report requests
                if (registerReport.response.oadrReportRequest != null)
                {
                    // send the createReport callback immediately to allow UI's to update
                    // if there's a one shot or history report request, these reports
                    // need to be registered before processCreatedReport() is called below
                    m_callbacks.processCreateReport(registerReport.response.oadrReportRequest);

                    m_resources.createReport(registerReport.response.oadrReportRequest);

                    // issue a createdReport message using the requestID from the registerReport message
                    createdReport = m_ven.createdReport(registerReport.request.requestID, 200, "OK", m_resources.PendingReports);
                }
            }

            m_callbacks.processRegisterReport(registerReport);

            // the registerReport response included a piggy-backed reportRequest
            if (createdReport != null)
            {
                m_callbacks.processCreatedReport(createdReport);

                // the new report might have a start date of NOW; call sendReports to force
                // the report to be sent immediately
                m_resources.sendReports(DateTime.Now);
            }


            if (registerReport.eiResponseCode != 200)
            {
                return(false);
            }

            return(true);
        }
Пример #12
0
        /**********************************************************/

        public string createOadrRequestEvent(string venID, uint replyLimit = 0, string requestID = "")
        {
            request = new oadrRequestEventType();

            request.schemaVersion = "2.0b";

            request.eiRequestEvent = new eiRequestEvent();

            request.eiRequestEvent.venID     = venID;
            request.eiRequestEvent.requestID = (requestID == "" ? RandomHex.instance().generateRandomHex(10) : requestID);

            if (replyLimit > 0)
            {
                request.eiRequestEvent.replyLimit          = replyLimit;
                request.eiRequestEvent.replyLimitSpecified = true;
            }

            return(serializeObject((object)request));
        }
Пример #13
0
        /**********************************************************/

        private void btnAddResource_Click(object sender, EventArgs e)
        {
            string resourceID = tbResourceID.TextBoxText;

            if (resourceID != "")
            {
                // check that resourceID is unique
                if (m_resources.ContainsKey(resourceID))
                {
                    MessageBox.Show("The selected Resource ID is not unique.  Please select a new Resource ID.", "Resource ID is not unique", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                resourceID = RandomHex.instance().generateRandomHex(10);
            }

            addResource(resourceID, cmbResourceType.SelectedItem.ToString());
        }
Пример #14
0
        public void P1_2015_VTN_1()
        {
            VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venID, TestProperties.venPassword);

            OptSchedule optSchedule = new OptSchedule();

            optSchedule.addOptSchedule(DateTime.UtcNow.AddDays(1), 0);

            optSchedule.OptType       = OptTypeType.optIn;
            optSchedule.OptReason     = OptReasonEnumeratedType.notParticipating;
            optSchedule.MarketContext = "http://marketcontext1";
            optSchedule.ResourceID    = "resource1";

            CreateOpt createOpt = ven.createOptSchedule(RandomHex.instance().generateRandomHex(10), optSchedule);

            Console.Out.WriteLine(createOpt.responseBody);

            Assert.IsNotNull(createOpt.response);

            Assert.AreEqual(createOpt.request.optID, createOpt.response.optID);
        }
        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);
        }
        /**********************************************************************************/

        private void doSendUpdateReport(oadrReportType report, oadrReportRequestType reportRequest)
        {
            UpdateReport updateReport;

            lock (m_ven)
            {
                updateReport = m_ven.updateReport(RandomHex.instance().generateRandomHex(10), report, reportRequest.reportRequestID);
            }

            m_callbacks.processUpdateReport(updateReport);

            // UpdatedReports can contain a CancelReport piggybacked message; process
            // the message if it exists
            // since the VTN is not expecting a cancelledReport response so we can't call processCancelReport(...) directly
            if (updateReport.response.oadrCancelReport != null)
            {
                // cancel the report request
                List <string> pendingReports = m_resources.addCancelReport(updateReport.response.oadrCancelReport);

                // call the callback to update the UI
                m_callbacks.processCancelReport(updateReport.response.oadrCancelReport);
            }
        }
        /**********************************************************************************/

        public void createOptSchedule(OptSchedule optSchedule)
        {
            Thread thread = new Thread(delegate()
            {
                try
                {
                    CreateOpt createOpt;

                    lock (m_ven)
                    {
                        createOpt = m_ven.createOptSchedule(RandomHex.instance().generateRandomHex(10), optSchedule);
                    }

                    m_callbacks.processCreateOptSchedule(createOpt);
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }
            });

            thread.Start();
        }
        /**********************************************************************************/

        public void cancelOptSchedule(string optID)
        {
            Thread thread = new Thread(delegate()
            {
                try
                {
                    CancelOpt cancelOpt;

                    lock (m_ven)
                    {
                        cancelOpt = m_ven.createCancelOpt(RandomHex.instance().generateRandomHex(10), optID);
                    }

                    m_callbacks.processCancelOpt(cancelOpt);
                }
                catch (Exception ex)
                {
                    m_callbacks.processException(ex);
                }
            });

            thread.Start();
        }
        public void N1_0010_TH_VTN_1()
        {
            VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venName, TestProperties.venID, TestProperties.venPassword);

            QueryRegistration queryRegistration = ven.queryRegistration();

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

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

            Assert.IsTrue(createPartyRegistration.response != null);
        }
Пример #20
0
        public ucLoad()
        {
            InitializeComponent();

            initResource(RandomHex.instance().generateRandomHex(10));
        }
Пример #21
0
        /********************************************************************************/

        public oadrOptScheduleModel()
        {
            OptID = RandomHex.instance().generateRandomHex(10);
        }