Пример #1
0
        public void SetUp()
        {
            cm.Clear(false);
            cm.LoadFile(CONF);
            cm.LoadFile("../../test_files/stress/ConnectionFactory.xml");

            string name =
                cm.GetValue("HermesNS.TC.Services.ScheduleItem.Persistence.HermesScheduleItemPersistenceProvider",
                            "connectionName");

            provider = new HermesScheduleItemPersistenceProvider(name, new HermesScheduleItemPersistenceHelper());
            group    = CreateActivityGroup();

            provider.SaveActivityGroup(group);

            activityType = CreateActivityType();
            provider.SaveActivityType(activityType);
            activity = CreateActivity();
            provider.SaveActivity(activity);

            itemStatus = CreateScheduleItemStatus();
            provider.SaveScheduleItemStatus(itemStatus);
            requestStatus = CreateScheduleItemRequestStatus();
            provider.SaveScheduleItemRequestStatus(requestStatus);
            scheduleItem = CreateScheduleItem();
            provider.SaveScheduleItem(scheduleItem);
        }
Пример #2
0
        public void BenchmarkSaveScheduleItems()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);
            HermesActivity      activity      = client.CreateActivity("Test", activityType);

            // Create the item
            HermesScheduleItem item = client.CreateScheduleItem(DateTime.Today, activity);

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                item.Duration = i;

                IList <HermesScheduleItem> items = new List <HermesScheduleItem>();
                items.Add(item);

                // Save the item.
                IList <HermesScheduleItem> result = client.SaveScheduleItems(items);

                // Verify the result.
                Assert.IsNotNull(result, "Should not be null.");
            }
            StressTestsHelper.Stop("SaveScheduleItems");
        }
Пример #3
0
        public void BenchmarkDeleteScheduleItems()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);
            HermesActivity      activity      = client.CreateActivity("Test", activityType);

            HermesScheduleItem[] items = new HermesScheduleItem[StressTestsHelper.Iteration];

            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                // Create the item
                items[i] = client.CreateScheduleItem(DateTime.Today, activity);
            }

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                IList <string> ids = new List <string>();
                ids.Add(items[i].Id);

                // Delete the items.
                client.DeleteScheduleItems(ids);
            }
            StressTestsHelper.Stop("DeleteScheduleItems");
        }
Пример #4
0
        public void TestGetActivityType_Accuracy2()
        {
            HermesActivityType first = AccuracyTestsHelper.CreateHermesActivityType();

            // Verify
            HermesActivityType second = instance.GetActivityType(first.Id);

            Assert.IsNull(second);
        }
Пример #5
0
        public void TestGetAllActivityTypes_Accuracy2()
        {
            HermesActivityType first = AccuracyTestsHelper.CreateHermesActivityType();

            // Verify
            IList <HermesActivityType> second = instance.GetAllActivityTypes();

            Assert.AreEqual(0, second.Count, "GetAllActivityTypes is wrong.");
        }
Пример #6
0
 /// <summary>
 /// Validates HermesActivityType.
 /// </summary>
 /// <param name="first">The first entity.</param>
 /// <param name="second">>The second entity.</param>
 internal static void VerifyHermesActivityType(HermesActivityType first, HermesActivityType second)
 {
     Assert.AreEqual(first.Abbreviation, second.Abbreviation, "Abbreviation is wrong.");
     Assert.AreEqual(first.Id, second.Id, "Id is wrong.");
     Assert.AreEqual(first.LastModifiedBy, second.LastModifiedBy, "LastModifiedBy is wrong.");
     Assert.AreEqual(first.LastModifiedDate.Date, second.LastModifiedDate.Date, "LastModifiedDate is wrong.");
     Assert.AreEqual(first.Name, second.Name, "Name is wrong.");
     VerifyHermesActivityGroup(first.ActivityGroup, second.ActivityGroup);
 }
Пример #7
0
        public void TestGetActivityType_Accuracy1()
        {
            HermesActivityType first = AccuracyTestsHelper.CreateHermesActivityType();

            instance.SaveActivityGroup(first.ActivityGroup);
            instance.SaveActivityType(first);

            // Verify
            HermesActivityType second = instance.GetActivityType(first.Id);

            AccuracyTestsHelper.VerifyHermesActivityType(first, second);
        }
Пример #8
0
        public void BenchmarkCreateActivityType()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                HermesActivityType activityType = client.CreateActivityType("AT" + i, activityGroup);
                Assert.IsNotNull(activityType, "activityType should have been created.");
            }
            StressTestsHelper.Stop("CreateActivityType");
        }
Пример #9
0
        /// <summary>
        /// Creates HermesActivityType.
        /// </summary>
        internal static HermesActivityType CreateHermesActivityType()
        {
            HermesActivityType entity = new HermesActivityType();

            entity.Abbreviation     = "Abbreviation 1";
            entity.Id               = Guid.NewGuid().ToString();
            entity.LastModifiedBy   = "zaixiang";
            entity.LastModifiedDate = DateTime.Now;
            entity.Name             = "HermesActivityType";
            entity.ActivityGroup    = CreateHermesActivityGroup();
            return(entity);
        }
Пример #10
0
        /// <summary>
        /// Create the HermesActivityType for the test
        /// </summary>
        /// <returns>the instance of the HermesActivityType</returns>
        private HermesActivityType CreateActivityType()
        {
            HermesActivityType activityType = new HermesActivityType();

            activityType.Id               = Guid.NewGuid().ToString("n");
            activityType.Abbreviation     = "HAT1";
            activityType.Name             = "HermesActivityType1";
            activityType.LastModifiedBy   = "my";
            activityType.LastModifiedDate = new DateTime(2007, 11, 7);
            activityType.ActivityGroup    = group;

            return(activityType);
        }
Пример #11
0
        public void TestGetAllActivityTypes_Accuracy1()
        {
            HermesActivityType first = AccuracyTestsHelper.CreateHermesActivityType();

            instance.SaveActivityGroup(first.ActivityGroup);
            instance.SaveActivityType(first);

            // Verify
            IList <HermesActivityType> second = instance.GetAllActivityTypes();

            Assert.AreEqual(1, second.Count, "GetAllActivityGroups is wrong.");
            AccuracyTestsHelper.VerifyHermesActivityType(first, second[0]);
        }
Пример #12
0
        /// <summary>
        /// Create an instance of <see cref="HermesActivityType"/>.
        /// </summary>
        /// <returns>The created HermesActivityType instance.</returns>
        private static HermesActivityType CreateType()
        {
            HermesActivityType type = new HermesActivityType();

            type.Abbreviation     = "C#";
            type.Name             = "CShape";
            type.LastModifiedBy   = "failureTester";
            type.LastModifiedDate = DateTime.UtcNow;
            type.Id            = Guid.NewGuid().ToString("N");
            type.ActivityGroup = CreateGroup();

            return(type);
        }
Пример #13
0
        public void BenchmarkGetActivityType()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                HermesActivityType result = client.GetActivityType(activityType.Id);
                Assert.IsNotNull(result, "result should have been created.");
            }
            StressTestsHelper.Stop("GetActivityType");
        }
Пример #14
0
        public void BenchmarkGetAllActivities()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);

            for (int i = 0; i < 10; i++)
            {
                client.CreateActivity("Test" + i, activityType);
            }

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                IList <HermesActivity> result = client.GetAllActivities(true);
                Assert.IsNotNull(result, "result should have been created.");
            }
            StressTestsHelper.Stop("GetAllActivities");
        }
Пример #15
0
        public void BenchmarkDeleteActivity()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);

            HermesActivity[] activities = new HermesActivity[StressTestsHelper.Iteration];
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                activities[i] = client.CreateActivity("Test", activityType);
            }

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                client.DeleteActivity(activities[i].Id);
            }
            StressTestsHelper.Stop("DeleteActivity");
        }
Пример #16
0
        public void TestDeleteActivityType_Accuracy()
        {
            HermesActivityType first = AccuracyTestsHelper.CreateHermesActivityType();

            instance.SaveActivityGroup(first.ActivityGroup);
            instance.SaveActivityType(first);

            // Verify
            HermesActivityType second = instance.GetActivityType(first.Id);

            Assert.IsNotNull(second, "SaveActivityType is wrong.");

            instance.DeleteActivityType(first.Id);

            // Verify
            second = instance.GetActivityType(first.Id);
            Assert.IsNull(second, "DeleteActivityType is wrong.");
        }
Пример #17
0
        public void TestActivityType()
        {
            DateTime           start = DateTime.Now;
            HermesActivityType hermesActivityType = CreateActivityType();

            for (int i = 1; i <= ITERATION; i++)
            {
                hermesActivityType.LastModifiedBy = "test" + i;
                provider.SaveActivityType(hermesActivityType);
                HermesActivityType result = provider.GetActivityType(hermesActivityType.Id);
                Assert.AreEqual(hermesActivityType.LastModifiedBy, result.LastModifiedBy);
                provider.DeleteActivityType(hermesActivityType.Id);
                Assert.IsNull(provider.GetActivityType(hermesActivityType.Id));
                IList <HermesActivityType> list = provider.GetAllActivityTypes();
            }
            Console.WriteLine("ActivityType run {0} times, taking {1}ms.", ITERATION,
                              (DateTime.Now - start).TotalMilliseconds.ToString("n"));
        }
Пример #18
0
        public void BenchmarkCreateScheduleItem()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);
            HermesActivity      activity      = client.CreateActivity("Test", activityType);

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                // Create the item
                HermesScheduleItem item = client.CreateScheduleItem(DateTime.Today, activity);

                // Verify the result.
                HermesScheduleItem result = client.GetScheduleItem(item.Id);

                Assert.IsNotNull(result, "HermesScheduleItem gotten should not be null.");
            }
            StressTestsHelper.Stop("CreateScheduleItem");
        }
Пример #19
0
        public void BenchmarkSaveActivity()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);

            HermesActivity[] activities = new HermesActivity[StressTestsHelper.Iteration];
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                activities[i] = client.CreateActivity("Test" + i, activityType);
                activities[i].Abbreviation = "abbr" + i;
                activities[i].ActivityType = activityType;
            }

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                HermesActivity activity = client.SaveActivity(activities[i]);
                Assert.IsNotNull(activity, "Should not be null.");
            }
            StressTestsHelper.Stop("SaveActivity");
        }
Пример #20
0
        /// <summary>
        /// Creates entity instances to be used for the tests.
        /// </summary>
        private void CreateReferenceEntities()
        {
            // Get an activity type to be used in tests
            refHermesActivityType = client.GetActivityType("22222222222222222222222222222222");

            // Get an activity group to be used in tests
            refHermesActivityGroup = client.GetActivityGroup("11111111111111111111111111111111");

            // Get an activity to be used in tests
            refHermesActivity = client.GetActivity("33333333333333333333333333333333");

            // Get an activity to be used in tests
            refHermesScheduleItemStatus = client.GetScheduleItemStatus("44444444444444444444444444444444");

            // Get an activity to be used in tests
            refHermesScheduleItemRequestStatus =
                client.GetScheduleItemRequestStatus("55555555555555555555555555555555");

            // Get an activity to be used in tests
            refHermesScheduleItem = client.GetScheduleItem("66666666666666666666666666666666");
        }
Пример #21
0
        public void BenchmarkGetScheduleItemEditCopy()
        {
            HermesActivityGroup activityGroup = client.CreateActivityGroup("AG1");
            HermesActivityType  activityType  = client.CreateActivityType("AT1", activityGroup);
            HermesActivity      activity      = client.CreateActivity("Test", activityType);

            HermesScheduleItem[] items  = new HermesScheduleItem[StressTestsHelper.Iteration];
            HermesScheduleItem   parent = client.CreateScheduleItem(DateTime.Today, activity);

            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                // Create the item
                items[i] = client.CreateScheduleItemEditCopy(parent);
            }

            StressTestsHelper.Start();
            for (int i = 0; i < StressTestsHelper.Iteration; i++)
            {
                client.GetScheduleItemEditCopy(parent);
            }
            StressTestsHelper.Stop("GetScheduleItemEditCopy");
        }
Пример #22
0
        /// <summary>
        /// <para>Validates the entity for required fields and other validation rules,
        /// using the HermesScheduleItemService to query for data.</para>
        ///
        /// Validates the following rules:
        /// <list type="bullet">
        /// <item>Abbreviation must be non-null, non-empty and must not be more than 20 characters</item>
        /// <item>Name must be non-null, non-empty and must not be more than 50 characters</item>
        /// <item>There must not be existing HermesActivity which has the same abbreviation as the current
        /// HermesActivity but a different id.</item>
        /// <item>There must not be existing HermesActivity which has the same name as the current
        /// HermesActivity but a different id.</item>
        /// <item>The ActivityType property must not be null and must be an existing ActivityType
        /// in the database.</item>
        /// </list>
        ///
        /// </summary>
        /// <exception cref="SelfDocumentingException">Wraps any exception that may occur.</exception>
        /// <returns>True if the validation succeeded. False otherwise.</returns>
        public override bool Validate()
        {
            bool abbrPassed = true;
            bool namePassed = true;
            HermesActivityType     activityType = null;
            IList <HermesActivity> activities   = null;
            HermesActivity         act          = null;

            try
            {
                //Validate the name and abbreviation field
                dataValidationRecords.AddRange(
                    Helper.ValidateAbbreviation(item.Abbreviation, item.GetType().FullName,
                                                "HermesActivityValidator", item.Id, out abbrPassed));
                dataValidationRecords.AddRange(
                    Helper.ValidateName(item.Name, item.GetType().FullName,
                                        "HermesActivityValidator", item.Id, out namePassed));

                //Check ActivityType for null
                if (!Helper.ValidateNotNull(item.ActivityType, null, false))
                {
                    dataValidationRecords.Add(Helper.CreateDataValidationRecord(
                                                  item.Id, item.GetType().FullName, "ActivityType",
                                                  "HermesActivityValidator.MissingActivityType", null));
                }
                //Check if id of ActivityType is actually found.
                else
                {
                    //Get ActivityType by Id.
                    activityType = hermesScheduleItemService.GetActivityType(item.ActivityType.Id);
                    if (!Helper.ValidateNotNull(activityType, null, false))
                    {
                        dataValidationRecords.Add(Helper.CreateDataValidationRecord(
                                                      item.Id, item.GetType().FullName, "ActivityType",
                                                      "HermesActivityValidator.IllegalActivityType", new object[] { item.ActivityType.Id }));
                    }
                }

                //Get data from service for checking duplicates only if we need to validate further
                if (namePassed || abbrPassed)
                {
                    //Get all active HermesActivities and check for duplicate Abbreviation and Name
                    activities = hermesScheduleItemService.GetAllActivities(false);
                    foreach (HermesActivity activity in activities)
                    {
                        //FOR SDE!
                        act = activity;

                        if (activity.Abbreviation != null &&
                            activity.Abbreviation.Equals(item.Abbreviation) &&
                            activity.Id != item.Id && abbrPassed)
                        {
                            dataValidationRecords.Add(Helper.CreateDataValidationRecord(
                                                          item.Id, item.GetType().FullName, "Abbreviation",
                                                          "HermesActivityValidator.AbbreviationNotUnique",
                                                          new object[] { item.Abbreviation, activity.Id }));

                            //Dont look for any more duplicate abbreviations
                            abbrPassed = false;
                        }

                        if (activity.Name != null &&
                            activity.Name.Equals(item.Name) &&
                            activity.Id != item.Id && namePassed)
                        {
                            dataValidationRecords.Add(Helper.CreateDataValidationRecord(
                                                          item.Id, item.GetType().FullName, "Name",
                                                          "HermesActivityValidator.NameNotUnique",
                                                          new object[] { item.Name, activity.Id }));

                            //Dont look for any more duplicate names
                            namePassed = false;
                        }
                    }
                }

                //Nothing failed validation then true, else false
                return(dataValidationRecords.Count == 0);
            }
            catch (Exception e)
            {
                throw Helper.GetSelfDocumentingException(e, "Unable to perform validation.",
                                                         "HermesNS.TC.Services.ScheduleItem.Validators.HermesActivityValidator.Validate",
                                                         new string[] { "hermesScheduleItemService", "item" },
                                                         new object[] { hermesScheduleItemService, item },
                                                         new string[0], new object[0],
                                                         new string[] { "abbrPassed", "namePassed", "activityType", "activities", "act" },
                                                         new object[] { abbrPassed, namePassed, activityType, activities, act });
            }
        }
Пример #23
0
        public void Demo()
        {
            HermesScheduleItemPersistenceProvider hsipp = new HermesScheduleItemPersistenceProvider();

            ///////////////////INSERT UPDATE GET DELETE/////////////////////////////
            // Create an activity group
            HermesActivityGroup hag = new HermesActivityGroup();

            hag.Id               = new Guid("1234567890ABCDEF1234567890ABCDEF").ToString();
            hag.Abbreviation     = "HAG1";
            hag.Name             = "HermesActivityGroup1";
            hag.LastModifiedBy   = "hagUser";
            hag.LastModifiedDate = new DateTime(2007, 7, 7);
            //Save it into database
            hsipp.SaveActivityGroup(hag);
            //Get it from database
            HermesActivityGroup getFromDb = hsipp.GetActivityGroup("1234567890ABCDEF1234567890ABCDEF");

            //Delete it from database
            hsipp.DeleteActivityGroup("1234567890ABCDEF1234567890ABCDEF");

            //Create an activity type
            HermesActivityType hat = new HermesActivityType();

            hat.Id               = new Guid("34563456345634563456345634563456").ToString();
            hat.Abbreviation     = "HAT1";
            hat.Name             = "HermesActivityType1";
            hat.LastModifiedBy   = "hatUser";
            hat.LastModifiedDate = new DateTime(2007, 11, 7);
            hat.ActivityGroup    = hsipp.GetActivityGroup("11111111111111111111111111111111");
            //Save it into database
            hsipp.SaveActivityType(hat);
            //Get it from database
            HermesActivityType getFromDb2 = hsipp.GetActivityType("34563456345634563456345634563456");

            //Delete it from database
            hsipp.DeleteActivityType("34563456345634563456345634563456");

            //Create an activity
            HermesActivity activity = new HermesActivity();

            activity.Id                = new Guid("99887766998877669988776699887766").ToString();
            activity.Abbreviation      = "ACT";
            activity.ActivityType      = hsipp.GetActivityType("22222222222222222222222222222222");
            activity.DefaultDuration   = new decimal(33.45);
            activity.DefaultExpireDays = 666;
            activity.DefaultStartTime  = 432;
            activity.Enabled           = true;
            activity.ExclusiveFlag     = true;
            activity.LastModifiedBy    = "ACTuser";
            activity.LastModifiedDate  = new DateTime(2007, 8, 8);
            activity.Name              = "CoolAndReallyNiceActivity";
            activity.WorkDayAmount     = 9966;
            //Save it into database
            hsipp.SaveActivity(activity);
            //Get it from database
            HermesActivity getFromDb3 = hsipp.GetActivity("99887766998877669988776699887766");

            //Delete it from database
            hsipp.DeleteActivity("99887766998877669988776699887766");

            //Create a ScheduleItem and save
            HermesScheduleItem hsiParent = new HermesScheduleItem();

            hsiParent.Id               = new Guid("19081908190819081908190819081908").ToString();
            hsiParent.Activity         = hsipp.GetActivity("33333333333333333333333333333333");
            hsiParent.Duration         = new decimal(546.89);
            hsiParent.ExceptionFlag    = 'Y';
            hsiParent.ExpirationDate   = new DateTime(2005, 12, 23);
            hsiParent.LastModifiedBy   = "ivern";
            hsiParent.LastModifiedDate = new DateTime(2007, 12, 1);
            HermesGenericNote note = new HermesGenericNote();

            note.Id        = new Guid("12340987123409871234098712340987").ToString();
            hsiParent.Note = note;
            hsiParent.ScheduleItemRequestStatus = hsipp.GetScheduleItemRequestStatus("55555555555555555555555555555555");
            hsiParent.ScheduleItemStatus        = hsipp.GetScheduleItemStatus("44444444444444444444444444444444");
            hsiParent.Version       = 1;
            hsiParent.WorkDate      = new DateTime(2004, 12, 12);
            hsiParent.WorkDayAmount = new Decimal(86787.23);
            hsipp.SaveScheduleItem(hsiParent);

            //Create another ScheduleItem and save
            HermesScheduleItem hsiEdit = new HermesScheduleItem();

            hsiEdit.Id               = new Guid("23451987234519872345198723451987").ToString();
            hsiEdit.Activity         = hsipp.GetActivity("33333333333333333333333333333333");
            hsiEdit.Duration         = new decimal(546.89);
            hsiEdit.ExceptionFlag    = 'Y';
            hsiEdit.ExpirationDate   = new DateTime(2005, 12, 23);
            hsiEdit.LastModifiedBy   = "ivern";
            hsiEdit.LastModifiedDate = new DateTime(2007, 12, 1);
            HermesGenericNote note2 = new HermesGenericNote();

            note2.Id     = new Guid("12340987123409871234098712340987").ToString();
            hsiEdit.Note = note2;
            hsiEdit.ScheduleItemRequestStatus = hsipp.GetScheduleItemRequestStatus("55555555555555555555555555555555");
            hsiEdit.ScheduleItemStatus        = hsipp.GetScheduleItemStatus("44444444444444444444444444444444");
            hsiEdit.Version       = 1;
            hsiEdit.WorkDate      = new DateTime(2004, 12, 12);
            hsiEdit.WorkDayAmount = new Decimal(86787.23);
            hsipp.SaveScheduleItem(hsiEdit);

            //....and so on for other properties



            /////////////////GET ALL ENTITIES//////////
            IList <HermesScheduleItemRequestStatus> reqStats = hsipp.GetAllScheduleItemRequestStatuses();
            IList <HermesScheduleItemStatus>        statuses = hsipp.GetAllScheduleItemStatuses();
            IList <HermesActivity> items = hsipp.GetAllActivities(false);

            //....and so on for other properties



            //////////////MANAGE SCHEDULE ITEMS RELATIONS////////////////
            hsipp.CreateScheduleItemPublishEditCopyRelationship(hsiParent, hsiEdit);
            hsipp.GetScheduleItemEditCopy(hsiParent);
            hsipp.GetScheduleItemParentCopy(hsiEdit);
            hsipp.DeleteScheduleItemPublishEditCopyRelationship(hsiEdit);
        }