Beispiel #1
0
        private void ExecuteTest(string treeName)
        {
            SyncTask      task            = new SyncTask();
            DirectoryInfo toDirectory     = new DirectoryInfo(_todirectory);
            DirectoryInfo sourceDirectory = new DirectoryInfo(_sourcedirectory);
            XmlDocument   doc             = new XmlDocument();
            int           expected;

            LoadTree(treeName);
            expected = GetDescendantCount(sourceDirectory);
            doc.LoadXml(Properties.Resources.build);
            task.Project         = new Project(doc, Level.Info, 0);
            task.ToDirectory     = toDirectory;
            task.SourceDirectory = sourceDirectory;
            task.Execute();

            Assert.AreEqual(expected, GetDescendantCount(sourceDirectory));
            Assert.AreEqual(expected, GetDescendantCount(toDirectory));
        }
Beispiel #2
0
        public void StressTest()
        {
            var organizationDataSource = new OrganizationDataSource();
            var companyDataTarget      = new CompanyDataTarget();
            var stateStorage           = new SyncStateStorage();
            var keyMapStorage          = new SyncKeyMapStorage();

            var pk = 1;

            for (var times = 0; times < 10; times++)
            {
                Log.Debug($"PREPARING CHANGES");
                var random = new Random();
                for (var i = 0; i < 10; i++)
                {
                    var operation = random.Next(0, 5);

                    switch (operation)
                    {
                    case 0:
                    case 1:
                        //INSERT
                        var organization = new Organization
                        {
                            Id   = pk++,
                            Name = Guid.NewGuid().ToString(),
                            RegistrationNumber = Guid.NewGuid().ToString()
                        };
                        OrganizationStorage.Storage.Add(organization);

                        Log.Debug($"Created organization '{organization.Id}'");
                        break;

                    case 2:
                    case 3:
                        //UPDATE
                        if (OrganizationStorage.Storage.Count > 0)
                        {
                            var itemNr = random.Next(0, OrganizationStorage.Storage.Count);
                            var update = OrganizationStorage.Storage[itemNr];
                            update.Name = Guid.NewGuid().ToString();
                            Log.Debug($"Updated organization '{update.Id}'");
                        }
                        break;

                    case 4:
                        //DELETE
                        if (OrganizationStorage.Storage.Count > 0)
                        {
                            var itemNr = random.Next(0, OrganizationStorage.Storage.Count);
                            OrganizationStorage.Storage.RemoveAt(itemNr);
                            Log.Debug($"Deleted organization");
                        }
                        break;
                    }
                }



                if (OrganizationStorage.Storage.Count > 0)
                {
                    var orgNr = random.Next(0, OrganizationStorage.Storage.Count);

                    var organization = OrganizationStorage.Storage[orgNr];

                    for (var i = 0; i < 10; i++)
                    {
                        var operation = random.Next(0, 5);

                        switch (operation)
                        {
                        case 0:
                        case 1:
                            //INSERT
                            var employee = new Employee
                            {
                                Id        = pk++,
                                Firstname = Guid.NewGuid().ToString(),
                                Lastname  = Guid.NewGuid().ToString()
                            };
                            organization.Employees.Add(employee);
                            Log.Debug($"Created employee '{employee.Id}' in organization '{organization.Id}'");

                            break;

                        case 2:
                        case 3:
                            //UPDATE
                            if (organization.Employees.Count > 0)
                            {
                                var itemNr = random.Next(0, organization.Employees.Count);
                                var update = organization.Employees[itemNr];
                                update.Firstname = Guid.NewGuid().ToString();
                            }
                            break;

                        case 4:
                            //DELETE
                            if (organization.Employees.Count > 0)
                            {
                                var itemNr = random.Next(0, organization.Employees.Count);
                                organization.Employees.RemoveAt(itemNr);
                            }
                            break;
                        }
                    }
                }

                Log.Debug($"DONE PREPARING CHANGES");

                Action <string, string, Organization, Company> nestedTasks = (sourceKey, targetKey, sourceItem, targetItem) =>
                {
                    Log.Debug($"Sync for org {sourceKey}, t= '{targetKey}' started");


                    var organizationId  = int.Parse(sourceKey);
                    var employeeStorage = new EmployeeDataSource(organizationId);

                    var companyId          = int.Parse(targetKey);
                    var companyUserStorage = new CompanyUserDataTarget(companyId);

                    var employeeSyncTask = new SyncTask <Employee, CompanyUser>(
                        "EmployeeSyncTask",
                        employeeStorage,
                        companyUserStorage,
                        stateStorage,
                        keyMapStorage,
                        null,
                        sourceKey);

                    employeeSyncTask.Execute();
                };

                var orgSyncTask = new SyncTask <Organization, Company>(
                    "OrganizationSyncTask",
                    organizationDataSource,
                    companyDataTarget,
                    stateStorage,
                    keyMapStorage,
                    nestedTasks,
                    null
                    );

                orgSyncTask.Execute();


                try
                {
                    CheckCurrentSyncState();
                }
                catch (Exception ex)
                {
                    throw new Exception("State not valid!", ex);
                }
            }
        }
		private void ExecuteTest(string treeName)
		{
			SyncTask task = new SyncTask();
			DirectoryInfo toDirectory = new DirectoryInfo(_todirectory);
			DirectoryInfo sourceDirectory = new DirectoryInfo(_sourcedirectory);
			XmlDocument doc = new XmlDocument();
			int expected;

			LoadTree(treeName);
			expected = GetDescendantCount(sourceDirectory);
			doc.LoadXml(Properties.Resources.build);
			task.Project = new Project(doc, Level.Info, 0);
			task.ToDirectory = toDirectory;
			task.SourceDirectory = sourceDirectory;
			task.Execute();

			Assert.AreEqual(expected, GetDescendantCount(sourceDirectory));
			Assert.AreEqual(expected, GetDescendantCount(toDirectory));
		}