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");
        }
示例#2
0
        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");
        }
示例#3
0
        /// <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();
            });
        }
示例#6
0
        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();
            });
        }
示例#7
0
        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();
            });
        }