/**********************************************************/ private bool eventValid(oadrDistributeEventTypeOadrEvent evt, VEN2b ven, string requestID, CreatedEventHelper createdEventHelper) { // TODO: log event message when these checks fail if (!targetMatches(evt, ven)) { m_callbacks.logSystemMessage("Invalid target in event " + evt.eiEvent.eventDescriptor.eventID, UserControls.Log.WebLogView.eWebLogMessageStatus.WARNING); createdEventHelper.addEvent(evt, requestID, OptTypeType.optOut, 452, "Invalid ID"); return(false); } if (!m_marketContexts.Contains(evt.eiEvent.eventDescriptor.eiMarketContext.marketContext)) { m_callbacks.logSystemMessage("Invalid Market Context in event " + evt.eiEvent.eventDescriptor.eventID + ", " + evt.eiEvent.eventDescriptor.eiMarketContext.marketContext, UserControls.Log.WebLogView.eWebLogMessageStatus.WARNING); createdEventHelper.addEvent(evt, requestID, OptTypeType.optOut, 453, "Not Recognized"); return(false); } if (!signalsValid(evt)) { createdEventHelper.addEvent(evt, requestID, OptTypeType.optOut, 460, ""); return(false); } return(true); }
public frmMain() { InitializeComponent(); // string[] args = Environment.GetCommandLineArgs(); //if (args.Length==4) // { // try // { // VenAccount = args[3]; // NumberOfLoad = int.Parse(args[2]); // VenNum = int.Parse(args[1]); // } catch // { // Application.Exit(); // } // } // frmSplash splash = new frmSplash(); this.FormClosing += new FormClosingEventHandler(frmMain_FormClosing); ucEvents1.setCallbackHandler(this); m_clearLog = new ClearLog(this); tsVersion.Text = "Version: " + Assembly.GetExecutingAssembly().GetName().Version.ToString(); ucQueryRegistration1.setCallbackHandler(this); ucManageOptSchedulesView1.setCreateOptScheduleCallback(this); oadrucManageOptSchedulesView1.setCreateOptScheduleCallback(this); ucResources1.setCallback(this); ucReportRequests.setCallback(this); VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), tbURL.TextBoxText, tbVENName.TextBoxText, "", tbVENID.TextBoxText, new HttpSecuritySettings()); m_venWrapper = new VenWrapper(ven, this); setVENParameters(); // ucResources1.addResource("resource1", "Load"); ucMarketContexts.OnAddItem += new EventHandler(ucMarketContext_addItem); ucMarketContexts.OnRemoveItems += new EventHandler(ucMarketContext_removeItems); ucCustomSignals.OnAddItem += new EventHandler(ucCustomSignal_addItem); ucCustomSignals.OnRemoveItems += new EventHandler(ucCustomSignal_removeItems); ucMarketContexts.addItem("http://MarketContext1"); }
public void A_EI_0020_TH_VTN_1() { VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venName, TestProperties.venID, TestProperties.venPassword); RequestEvent requestEvent = ven.requestEvent(); Assert.IsTrue(requestEvent.response.eiResponse.responseCode == "200"); // on events returned so don't send createdEvent Assert.IsTrue(requestEvent.response.oadrEvent == null); }
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); }
/**********************************************************************************/ public VenWrapper(VEN2b ven, IVenWrapper callbacks) { m_ven = ven; m_callbacks = callbacks; m_resources.setCallback(this); m_processEvents = new ProcessEvents(callbacks); m_resources.startThread(); }
/**********************************************************/ public CreatedEvent processOptUpdate(VEN2b ven, string requestID) { lock (m_qOptUpdate) { if (m_qOptUpdate.Count == 0) { return(null); } OptUpdate optUpdate = m_qOptUpdate.Dequeue(); return(ven.createdEvent(requestID, optUpdate.Evts, optUpdate.OptType)); } }
/**********************************************************/ 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 targetMatches(oadrDistributeEventTypeOadrEvent evt, VEN2b ven) { try { if (evt.eiEvent.eiTarget.venID != null) { if (evt.eiEvent.eiTarget.venID[0] != ven.VENID) { return(false); } } } catch (Exception ex) { oadrlib.lib.helper.Logger.logException(ex); return(false); } return(true); }
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 frmMain() { InitializeComponent(); frmSplash splash = new frmSplash(); this.FormClosing += new FormClosingEventHandler(frmMain_FormClosing); ucEvents1.setCallbackHandler(this); m_clearLog = new ClearLog(this); tsVersion.Text = "Version: " + Assembly.GetExecutingAssembly().GetName().Version.ToString(); ucQueryRegistration1.setCallbackHandler(this); ucManageOptSchedulesView1.setCreateOptScheduleCallback(this); oadrucManageOptSchedulesView1.setCreateOptScheduleCallback(this); ucResources1.setCallback(this); ucReportRequests.setCallback(this); VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), tbURL.TextBoxText, tbVENName.TextBoxText, "", tbVENID.TextBoxText, new HttpSecuritySettings()); m_venWrapper = new VenWrapper(ven, this); setVENParameters(); ucResources1.addResource("resource1", "Load"); ucMarketContexts.OnAddItem += new EventHandler(ucMarketContext_addItem); ucMarketContexts.OnRemoveItems += new EventHandler(ucMarketContext_removeItems); ucCustomSignals.OnAddItem += new EventHandler(ucCustomSignal_addItem); ucCustomSignals.OnRemoveItems += new EventHandler(ucCustomSignal_removeItems); ucMarketContexts.addItem("http://MarketContext1"); }
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); }
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); }
static void startConsole(VEN2b ven2b) { consoleMain console = new consoleMain(ven2b); }
/**********************************************************/ public void processEvents(oadrDistributeEventType distributeEvent, string requestID, eOptType optType, VEN2b ven) { List <string> eventIDs = new List <string>(); // track list of valid events from distributeEvent object // will use to match against our list of active events // validate the VTN id if (distributeEvent.vtnID != ven.VTNID) { // the VTN ID was invalid; remove all events and send an error message checkForRemovedEvents(eventIDs); m_callbacks.logSystemMessage("Invalid VTN ID: " + distributeEvent.vtnID, UserControls.Log.WebLogView.eWebLogMessageStatus.WARNING); CreatedEvent createdEvent = ven.createdEvent(requestID, 452, "Invalid ID"); m_callbacks.processCreatedEvent(createdEvent, m_idToEvent, requestID); return; } // the VTN didn't send any events; clear all events we have stored if (distributeEvent.oadrEvent == null) { checkForRemovedEvents(eventIDs); m_callbacks.processCreatedEvent(null, m_idToEvent, requestID); return; } OptTypeType oadrOptType = (optType == eOptType.OptIn ? OptTypeType.optIn : OptTypeType.optOut); // send a createdEvent with an opt type of the incoming optType for all new events // that aren't canceled or completed. optIn/out of cancelled and completed events as appropriate CreatedEventHelper createdEventHelper = new CreatedEventHelper(); foreach (oadrDistributeEventTypeOadrEvent evt in distributeEvent.oadrEvent) { string eventID = evt.eiEvent.eventDescriptor.eventID; // validate that the event is for this VEN and MarketContext if (!eventValid(evt, ven, requestID, createdEventHelper)) { continue; } eventIDs.Add(eventID); if (!m_idToEvent.ContainsKey(eventID)) { processNewEvent(requestID, oadrOptType, createdEventHelper, evt); } else { processExistingEvent(requestID, createdEventHelper, evt); } OadrEventWrapper eventWrapper = m_idToEvent[eventID]; if (eventWrapper.RandomizedMinutes != 0) { m_callbacks.logSystemMessage(string.Format("Event start time delayed due to start after parameter: event ID={0}, start after={1}, randomized minutes={2}", eventWrapper.OadrEvent.eiEvent.eventDescriptor.eventID, eventWrapper.OadrEvent.eiEvent.eiActivePeriod.properties.tolerance.tolerate.startafter, eventWrapper.RandomizedMinutes), UserControls.Log.WebLogView.eWebLogMessageStatus.INFO); } } // events in m_idToEvent but not in the incoming distributeEvent message must be // implicitly canceled checkForRemovedEvents(eventIDs); if (createdEventHelper.EventResponses.Count > 0) { CreatedEvent createdEvent = ven.createdEvent(createdEventHelper); m_callbacks.processCreatedEvent(createdEvent, m_idToEvent, requestID); } else { // still need to call this function to ensure the UI is updated with any event status changes m_callbacks.processCreatedEvent(null, m_idToEvent, requestID); } }
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); } } }
public abstract void executeCommand(VEN2b ven);
/**********************************************************/ public override void executeCommand(VEN2b ven) { }
//VEN2b ven2b; static void Main(string[] args) { // specify where appsettings comes from as input parameter? //List Args Console.WriteLine("Begin Main...\n"); Logger.logMessage("Begin Main...\n", "main.log"); int i = 0; if (args.Length == 0) { Console.WriteLine($"No Command Args\n"); Logger.logMessage($"No Command Args\n", "main.log"); } while (args.Length != 0) { Console.WriteLine($"args[{i}] = {args[i]}\n"); Logger.logMessage($"args[{i}] = {args[i]}\n", "main.log"); i = i + 1; } // initialize components for http connections // from app.config string url = ConfigurationManager.AppSettings["url"]; // "http://172.16.25.51:8080/OpenADR2/Simple/2.0b"; string venName = ConfigurationManager.AppSettings["venName"]; // "Test_VEN_Name"; string venID = ConfigurationManager.AppSettings["venID"]; // "6f130342def6d658567c"; string password = ConfigurationManager.AppSettings["password"]; // ""; string connectionString = $"{url}::{venName}::{venID}::{password}"; Console.WriteLine($"Using {connectionString}"); Logger.logMessage($"Connection String = [{connectionString}]\n", "main.log"); VEN2b ven2b = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), url, venName, venID, password); //this.ven2b = ven2b; startConsole(ven2b); // //string url = "http://172.16.25.51:8080/OpenADR2/Simple/2.0b"; // //string venName = "Test_VEN_Name"; // //string venID = "6f130342def6d658567c"; // //string password = ""; // /// VEN = new VEN(http, url, venName, venID, password); // /// VEN2A = new VEN2a(); // /// VEN2B = new VEN2b(); // /// // //Logger.logMessage($"Create new VEN with params {url} {venName}\n"); // //Console.WriteLine($"Create new VEN with params {url} {venName}\n"); // //Logger.logMessage($"Create new VEN with params {url} {venName}\n", "ven.log"); // //VEN ven = new VEN(http, url, venName, venID, password); // string str = "Create new VEN2A\n"; // Logger.logMessage(str); // Logger.logMessage(str, "ven.log"); //// oadrlib.lib.oadr2a.VEN2a ven2a = new VEN2a(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), url, venID, password); // VEN2b ven2b = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), url, venName, venID, password); // str = "Create new RequestEvent\n"; // Logger.logMessage(str); // Console.WriteLine(str); // //Console.WriteLine($"Press Enter (or any key) to continue:\n"); // //string x = Console.ReadLine(); //// oadrlib.lib.oadr2a.RequestEvent requestEvent = ven2a.requestEvent(); // oadrlib.lib.oadr2b.RequestEvent requestEvent = ven2b.requestEvent(); // str = "Read new RequestEvent\n"; // Console.WriteLine(str); // Console.WriteLine(requestEvent.requestBody); // Logger.logMessage(str); // Logger.logMessage("\nRequest Event Request Body:: \n", "requestEvent.log"); // Logger.logMessage(requestEvent.requestBody, "requestEvent.log"); // Logger.logMessage("\nRequest Event Response Body:: \n", "requestEvent.log"); // Logger.logMessage(requestEvent.responseBody, "requestEvent.log"); // Logger.logMessage("\n\n", "requestEvent.log"); // Logger.logMessage(distributeEvent.requestBody, "requestEvent.log"); ////Logger.logMessage(requestEvent); //Logger.logMessage(requestEvent.requestBody.ToString()); //Console.WriteLine($"Press Enter (or any key) to continue:\n"); //string x = Console.ReadLine(); /// VEN( new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12) , string url = "http://172.16.25.51:8080/OpenADR2/Simple/2.0b", string venName = "Test_VEN_Name", string venID = "6f130342def6d658567c", string password = "") /// http://172.16.25.51:8080/OPENADR2/Simple/2.0b/oadrPoll /// //Console.WriteLine($"Press Enter (or any key) to continue:\n"); //string y = Console.ReadLine(); //Console.WriteLine($"\nStart New Command: {y}\n"); //Logger.logMessage($"\nStart New Command: {y}\n"); //// chooseCommand(y); //Console.WriteLine($"\nStart New main console thread:\n"); //Logger.logMessage($"\nStart New main console thread:\n"); // consoleMain console = new consoleMain(); return; /// Application.EnableVisualStyles(); /// Application.SetCompatibleTextRenderingDefault(false); ///#if (!DEBUG) /// frmSplash splash = new frmSplash(); /// DialogResult result = splash.ShowDialog(); /// if (result != System.Windows.Forms.DialogResult.OK) /// return; ///#endif /// Application.Run(new frmMain()); }