void SetCurrentTime() { SystemDateTime testDateTimeValue = new SystemDateTime(); Proxies.Onvif.DateTime dateTime = new Proxies.Onvif.DateTime(); dateTime.Date = new Date(); dateTime.Time = new Time(); System.DateTime nowUtc = System.DateTime.Now.ToUniversalTime(); dateTime.Time.Hour = nowUtc.Hour; dateTime.Time.Minute = nowUtc.Minute; dateTime.Time.Second = nowUtc.Second; dateTime.Date.Day = nowUtc.Day; dateTime.Date.Month = nowUtc.Month; dateTime.Date.Year = nowUtc.Year; testDateTimeValue.DateTimeType = SetDateTimeType.Manual; testDateTimeValue.DaylightSavings = false; testDateTimeValue.UTCDateTime = dateTime; SetSystemDateAndTime(testDateTimeValue, "Synchronize time"); }
void SynchronizeTime(SystemDateTime initialSettings = null) { var dateTime = new Proxies.Onvif.DateTime { Date = new Date(), Time = new Time() }; System.DateTime nowUtc = System.DateTime.UtcNow; dateTime.Time.Hour = nowUtc.Hour; dateTime.Time.Minute = nowUtc.Minute; dateTime.Time.Second = nowUtc.Second; dateTime.Date.Day = nowUtc.Day; dateTime.Date.Month = nowUtc.Month; dateTime.Date.Year = nowUtc.Year; //If initial settings were not retrieved then use DaylightSavings = false and DateTimeType = SetDateTimeType.Manual if (null == initialSettings) { initialSettings = new SystemDateTime() { DaylightSavings = false, DateTimeType = SetDateTimeType.Manual }; } initialSettings.LocalDateTime = null; initialSettings.UTCDateTime = dateTime; SetSystemDateAndTime(initialSettings, "Synchronize time"); }
/// <summary> /// Checks if DateTime structure represents valid date and time. /// </summary> /// <param name="serverDateTime">Date and time gone from the DUT</param> /// <param name="fieldName">Field name (for generation failure reason)</param> /// <param name="reason">Failure reason.</param> /// <returns></returns> public static bool IsValidDateTime(this Proxies.Onvif.DateTime serverDateTime, string fieldName, out string reason) { bool bDateTimeValid = true; reason = string.Empty; if (serverDateTime.Date == null) { reason = "Date is null"; } else if (serverDateTime.Time == null) { reason = "Time is null"; } else { try { System.DateTime dt = new System.DateTime(serverDateTime.Date.Year, serverDateTime.Date.Month, serverDateTime.Date.Day, serverDateTime.Time.Hour, serverDateTime.Time.Minute, serverDateTime.Time.Second); } catch (Exception) { bDateTimeValid = false; reason = string.Format( "{0} is invalid (Year: {1}, Month: {2}, Day: {3}, Hour: {4}, Minute: {5}, Seconds: {6})", fieldName, serverDateTime.Date.Year, serverDateTime.Date.Month, serverDateTime.Date.Day, serverDateTime.Time.Hour, serverDateTime.Time.Minute, serverDateTime.Time.Second); } } return(bDateTimeValid); }
public void SetSystemDateTimeInvalidDateTimeTest() { RunTest( () => { SystemDateTime testDateTimeSettins = new SystemDateTime(); Proxies.Onvif.DateTime dateTime = new Proxies.Onvif.DateTime(); Proxies.Onvif.TimeZone timeZone = new Proxies.Onvif.TimeZone(); timeZone.TZ = "PST8PDT,M3.2.0,M11.1.0"; dateTime.Date = new Date(); dateTime.Time = new Time(); dateTime.Date.Day = 32; dateTime.Date.Month = 13; dateTime.Date.Year = 2001; dateTime.Time.Hour = 25; dateTime.Time.Minute = 65; dateTime.Time.Second = 70; testDateTimeSettins.DateTimeType = SetDateTimeType.Manual; testDateTimeSettins.DaylightSavings = false; testDateTimeSettins.TimeZone = timeZone; testDateTimeSettins.UTCDateTime = dateTime; bool fault = false; string reason = "The DUT did not return SOAP FAULT"; try { SetSystemDateAndTime(testDateTimeSettins); } catch (FaultException exc) { string faultDump; fault = exc.IsValidOnvifFault("Sender/InvalidArgVal/InvalidDateTime", out faultDump); if (!fault) { reason = string.Format("The SOAP FAULT returned from the DUT is invalid: {0}", faultDump); } SaveStepFault(exc); StepPassed(); } Assert(fault, reason, "Verify that correct SOAP FAULT is returned"); SystemDateTime actualDateTime = GetSystemDateAndTime(); Assert(actualDateTime != null, "Date and time settings not found", "Check that DUT returned date and time settings"); //Assert(actualDateTime.TimeZone != null, "The DUT did not return TimeZone settings", // "Check that DUT returned TimeZone settings"); //ValidateTimeZone(testDateTimeSettins.TimeZone.TZ, actualDateTime.TimeZone.TZ); if (actualDateTime.TimeZone != null) { TimeZoneDescription actualDescription = new TimeZoneDescription(); string tzdump; bool bParseOk = ParseTimeZone(actualDateTime.TimeZone.TZ, actualDescription, out tzdump); Assert(bParseOk, string.Format("Time zone format is not correct: {0}", tzdump), "Validate TimeZone string", string.Format("TimeZone: {0}", actualDateTime.TimeZone.TZ)); } else { WriteStep("Validate TimeZone", "TimeZone is null"); } bool bCorrect = true; string dump = null; if (actualDateTime.DateTimeType == SetDateTimeType.Manual) { bCorrect = (actualDateTime.UTCDateTime != null); dump = string.Format("DateTimeType: Manual; LocalDateTime: {0}; UTCDateTime: {1}", actualDateTime.LocalDateTime == null ? "NOT PRESENT" : "PRESENT", actualDateTime.UTCDateTime == null ? "NOT PRESENT" : "PRESENT"); } else { dump = "DateTimeType: NTP"; } Assert(bCorrect, "DateTimeType is Manual but UTCDateTime is not set", "Check if settings are self-consistent", dump); if (actualDateTime.LocalDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.LocalDateTime.IsValidDateTime("LocalDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate LocalDateTime"); } else { WriteStep("Validate LocalDateTime", "LocalDateTime is NULL"); } if (actualDateTime.UTCDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.UTCDateTime.IsValidDateTime("UTCDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate UTCDateTime"); } else { WriteStep("Validate UTCDateTime", "UTCDateTime is NULL"); } }, () => { // set current time SetCurrentTime(); }); }
public void SetSystemDateTimeInvalidTimezoneTest() { RunTest(() => { SystemDateTime testDateTimeSettins = new SystemDateTime(); Proxies.Onvif.DateTime dateTime = new Proxies.Onvif.DateTime(); Proxies.Onvif.TimeZone timeZone = new Proxies.Onvif.TimeZone(); timeZone.TZ = "INVALIDTIMEZONE"; dateTime.Date = new Date(); dateTime.Time = new Time(); dateTime.Date.Day = System.DateTime.Now.Day; dateTime.Date.Month = System.DateTime.Now.Month; dateTime.Date.Year = System.DateTime.Now.Year; dateTime.Time.Hour = System.DateTime.Now.Hour; dateTime.Time.Minute = System.DateTime.Now.Minute; dateTime.Time.Second = System.DateTime.Now.Second; testDateTimeSettins.DateTimeType = SetDateTimeType.Manual; testDateTimeSettins.DaylightSavings = true; testDateTimeSettins.UTCDateTime = dateTime; testDateTimeSettins.TimeZone = timeZone; bool fault = false; string reason = "The DUT did not return SOAP FAULT"; try { SetSystemDateAndTime(testDateTimeSettins); } catch (FaultException exc) { string faultDump; fault = exc.IsValidOnvifFault("Sender/InvalidArgVal/InvalidTimeZone", out faultDump); if (!fault) { reason = string.Format("The SOAP FAULT returned from the DUT is invalid: {0}", faultDump); } SaveStepFault(exc); StepPassed(); } Assert(fault, reason, "Verify that correct SOAP FAULT is returned"); SystemDateTime actualDateTime = GetSystemDateAndTime(); Assert(actualDateTime != null, "Date and time settings not found", "Check that DUT returned date and time settings"); Assert(actualDateTime.TimeZone != null, "The DUT did not return TimeZone settings", "Check that DUT returned TimeZone settings"); bool bCorrect = true; string dump = null; if (actualDateTime.DateTimeType == SetDateTimeType.Manual) { bCorrect = (actualDateTime.UTCDateTime != null); dump = string.Format("DateTimeType: Manual; LocalDateTime: {0}; UTCDateTime: {1}", actualDateTime.LocalDateTime == null ? "NOT PRESENT" : "PRESENT", actualDateTime.UTCDateTime == null ? "NOT PRESENT" : "PRESENT"); } else { dump = "DateTimeType: NTP"; } Assert(bCorrect, "DateTimeType is Manual but UTCDateTime is not set", "Check if settings are self-consistent", dump); if (actualDateTime.LocalDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.LocalDateTime.IsValidDateTime("LocalDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate LocalDateTime"); } else { WriteStep("Validate LocalDateTime", "LocalDateTime is NULL"); } if (actualDateTime.UTCDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.UTCDateTime.IsValidDateTime("UTCDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate UTCDateTime"); } else { WriteStep("Validate UTCDateTime", "UTCDateTime is NULL"); } }, () => { SetCurrentTime(); }); }
public void SetSystemDateTimeInvalidDateTimeTest() { RunTest( () => { Proxies.Onvif.DateTime dateTime = new Proxies.Onvif.DateTime(); Proxies.Onvif.TimeZone timeZone = new Proxies.Onvif.TimeZone(); timeZone.TZ = "PST8PDT,M3.2.0,M11.1.0"; dateTime.Date = new Date(); dateTime.Time = new Time(); dateTime.Date.Day = 32; dateTime.Date.Month = 13; dateTime.Date.Year = 2001; dateTime.Time.Hour = 25; dateTime.Time.Minute = 65; dateTime.Time.Second = 70; RunStep(() => { Client.SetSystemDateAndTime(SetDateTimeType.Manual, true, timeZone, dateTime); }, "Set system date and time - negative test", "Sender/InvalidArgVal/InvalidDateTime", false); SystemDateTime actualDateTime = GetSystemDateAndTime(); Assert(actualDateTime != null, "Date and time settings not found", "Check that DUT returned date and time settings"); //Assert(actualDateTime.TimeZone != null, "The DUT did not return TimeZone settings", // "Check that DUT returned TimeZone settings"); //ValidateTimeZone(testDateTimeSettins.TimeZone.TZ, actualDateTime.TimeZone.TZ); if (actualDateTime.TimeZone != null) { TimeZoneDescription actualDescription = new TimeZoneDescription(); string tzdump; bool bParseOk = ParseTimeZone(actualDateTime.TimeZone.TZ, actualDescription, out tzdump); Assert(bParseOk, string.Format("Time zone format is not correct: {0}", tzdump), "Validate TimeZone string", string.Format("TimeZone: {0}", actualDateTime.TimeZone.TZ)); } else { WriteStep("Validate TimeZone", "TimeZone is null"); } bool bCorrect = true; string dump = null; if (actualDateTime.DateTimeType == SetDateTimeType.Manual) { bCorrect = (actualDateTime.UTCDateTime != null); dump = string.Format("DateTimeType: Manual; LocalDateTime: {0}; UTCDateTime: {1}", actualDateTime.LocalDateTime == null ? "NOT PRESENT" : "PRESENT", actualDateTime.UTCDateTime == null ? "NOT PRESENT" : "PRESENT"); } else { dump = "DateTimeType: NTP"; } Assert(bCorrect, "DateTimeType is Manual but UTCDateTime is not set", "Check if settings are self-consistent", dump); if (actualDateTime.LocalDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.LocalDateTime.IsValidDateTime("LocalDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate LocalDateTime"); } else { WriteStep("Validate LocalDateTime", "LocalDateTime is NULL"); } if (actualDateTime.UTCDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.UTCDateTime.IsValidDateTime("UTCDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate UTCDateTime"); } else { WriteStep("Validate UTCDateTime", "UTCDateTime is NULL"); } }, () => { // set current time SetCurrentTime(); }); }
public void SetSystemDateTimeInvalidTimezoneTest() { RunTest(() => { Proxies.Onvif.DateTime dateTime = new Proxies.Onvif.DateTime(); Proxies.Onvif.TimeZone timeZone = new Proxies.Onvif.TimeZone(); timeZone.TZ = "INVALIDTIMEZONE"; dateTime.Date = new Date(); dateTime.Time = new Time(); dateTime.Date.Day = System.DateTime.Now.Day; dateTime.Date.Month = System.DateTime.Now.Month; dateTime.Date.Year = System.DateTime.Now.Year; dateTime.Time.Hour = System.DateTime.Now.Hour; dateTime.Time.Minute = System.DateTime.Now.Minute; dateTime.Time.Second = System.DateTime.Now.Second; RunStep(() => { Client.SetSystemDateAndTime(SetDateTimeType.Manual, true, timeZone, dateTime); }, "Set system date and time - negative test", "Sender/InvalidArgVal/InvalidTimeZone", false); SystemDateTime actualDateTime = GetSystemDateAndTime(); Assert(actualDateTime != null, "Date and time settings not found", "Check that DUT returned date and time settings"); Assert(actualDateTime.TimeZone != null, "The DUT did not return TimeZone settings", "Check that DUT returned TimeZone settings"); bool bCorrect = true; string dump = null; if (actualDateTime.DateTimeType == SetDateTimeType.Manual) { bCorrect = (actualDateTime.UTCDateTime != null); dump = string.Format("DateTimeType: Manual; LocalDateTime: {0}; UTCDateTime: {1}", actualDateTime.LocalDateTime == null ? "NOT PRESENT" : "PRESENT", actualDateTime.UTCDateTime == null ? "NOT PRESENT" : "PRESENT"); } else { dump = "DateTimeType: NTP"; } Assert(bCorrect, "DateTimeType is Manual but UTCDateTime is not set", "Check if settings are self-consistent", dump); if (actualDateTime.LocalDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.LocalDateTime.IsValidDateTime("LocalDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate LocalDateTime"); } else { WriteStep("Validate LocalDateTime", "LocalDateTime is NULL"); } if (actualDateTime.UTCDateTime != null) { string errorMessage; bool bDateTimeValid = actualDateTime.UTCDateTime.IsValidDateTime("UTCDateTime", out errorMessage); Assert(bDateTimeValid, errorMessage, "Validate UTCDateTime"); } else { WriteStep("Validate UTCDateTime", "UTCDateTime is NULL"); } }, () => { SetCurrentTime(); }); }