コード例 #1
0
        public void DirectMigrationTest()
        {
            ConsoleLogger.LogLevel = 5;

            var orgService = ConnectionHelper.GetOrganizationalServiceSource();
            var repo       = new EntityRepository(orgService, new ServiceRetryExecutor());

            List <string> fetchXMLQueries = new List <string>
            {
                "<fetch><entity name=\"contact\" ><attribute name=\"ownerid\" /><attribute name=\"firstname\" /></entity></fetch>"
            };

            var readerConfig = new CrmStoreReaderConfig(fetchXMLQueries)
            {
                BatchSize = 2,
                PageSize  = 2,
                TopCount  = 2,
            };

            var writerConfig = new CrmStoreWriterConfig
            {
                SaveBatchSize = 200,
            };


            var reader = new DataCrmStoreReader(logger, repo, readerConfig);
            var writer = new DataCrmStoreWriter(logger, repo, writerConfig);

            var migrator           = new GenericDataMigrator <Entity, EntityWrapper>(logger, reader, writer);
            var obfuscateProcessor = new ObfuscateFieldsProcessor(repo.GetEntityMetadataCache, GetImporterConfig().FieldsToObfuscate);

            migrator.AddProcessor(obfuscateProcessor);

            migrator.MigrateData();
        }
コード例 #2
0
        public void ReadBatchDataFromStore()
        {
            var orgService = ConnectionHelper.GetOrganizationalServiceSource();

            var               entRepo            = new EntityRepository(orgService, retryExecutor);
            string            folderPath         = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;
            string            fetchXMLFolderPath = Path.Combine(folderPath, "TestData\\FetchXmlFolder");
            CrmExporterConfig config             = new CrmExporterConfig()
            {
                FetchXMLFolderPath = fetchXMLFolderPath
            };

            DataCrmStoreReader crmStore = new DataCrmStoreReader(new ConsoleLogger(), entRepo, config);

            List <EntityWrapper> results = new List <EntityWrapper>();

            List <EntityWrapper> batch = crmStore.ReadBatchDataFromStore();

            while (batch.Count > 0)
            {
                results.AddRange(batch);
                batch = crmStore.ReadBatchDataFromStore();
            }

            Assert.IsTrue(results.Count > 0);
        }
コード例 #3
0
        public void CrmFileDataExporterTarget()
        {
            ConsoleLogger.LogLevel = 0;

            var orgService = ConnectionHelper.GetOrganizationalServiceTarget();

            EntityRepository entityRepo = new EntityRepository(orgService, new ServiceRetryExecutor());

            string            folderPath         = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;
            string            fetchXMLFolderPath = Path.Combine(folderPath, "TestData\\FetchXmlFolder");
            CrmExporterConfig config             = new CrmExporterConfig()
            {
                FetchXMLFolderPath = fetchXMLFolderPath,
                BatchSize          = 1000,
                PageSize           = 100,
                TopCount           = 10000
            };

            DataCrmStoreReader  storeReader = new DataCrmStoreReader(new ConsoleLogger(), entityRepo, config);
            DataFileStoreWriter storeWriter = new DataFileStoreWriter(new ConsoleLogger(), $"{DateTime.UtcNow.ToString("yyMMmmss", CultureInfo.InvariantCulture)}testexportTarget", @"TestData");

            CrmFileDataExporter fileExporter = new CrmFileDataExporter(new ConsoleLogger(), storeReader, storeWriter);

            FluentActions.Invoking(() => fileExporter.MigrateData())
            .Should()
            .NotThrow();
        }
コード例 #4
0
        public void Setup()
        {
            InitializeProperties();

            dataCrmStoreReader = new DataCrmStoreReader(MockLogger.Object, MockEntityRepo.Object, 500, 500, 1000, true, new List <string>(), EmptyFieldsToObfuscate);

            dataCrmStoreWriter = new DataCrmStoreWriter(MockLogger.Object, MockEntityRepo.Object, 500, new List <string>(), new List <string>());
        }
コード例 #5
0
        public void Reset()
        {
            systemUnderTest = new DataCrmStoreReader(MockLogger.Object, MockEntityRepo.Object, pageSize, batchSize, topCount, oneEntityPerBatch, FetchXMlQueries, EmptyFieldsToObfuscate);

            FluentActions.Invoking(() => systemUnderTest.Reset())
            .Should()
            .NotThrow();

            MockLogger.VerifyAll();
        }
コード例 #6
0
        public void DirectMigrationTest()
        {
            ConsoleLogger.LogLevel = 5;

            var orgService = ConnectionHelper.GetOrganizationSprintAutoTest();
            var repo       = new EntityRepository(orgService, new ServiceRetryExecutor());

            List <string> fetchXMLQueries = new List <string>
            {
                "<fetch><entity name=\"contact\" ><attribute name=\"ownerid\" /><filter>" +
                $"<condition attribute=\"ownerid\" operator=\"eq\" value=\"{sourceUserId}\" />" +
                "</filter></entity></fetch>"
            };

            var readerConfig = new CrmStoreReaderConfig(fetchXMLQueries)
            {
                BatchSize = 200,
                PageSize  = 200,
                TopCount  = 200
            };

            var writerConfig = new CrmStoreWriterConfig
            {
                SaveBatchSize = 200
            };

            Dictionary <Guid, Guid> contactMappings =
                new Dictionary <Guid, Guid>()
            {
                { sourceUserId, targetGuidId }
            };

            MappingConfiguration mappingConfig = new MappingConfiguration();

            mappingConfig.Mappings.Add("systemuser", contactMappings);

            var reader = new DataCrmStoreReader(logger, repo, readerConfig);
            var writer = new DataCrmStoreWriter(logger, repo, writerConfig);

            var migrator         = new GenericDataMigrator <Entity, EntityWrapper>(logger, reader, writer);
            var mappingProcessor = new MapEntityProcessor(mappingConfig, logger, repo);

            migrator.AddProcessor(mappingProcessor);

            FluentActions.Invoking(() => migrator.MigrateData())
            .Should()
            .NotThrow();
        }
コード例 #7
0
        public void ReadBatchDataFromStore()
        {
            var entityWrapperList = new List <EntityWrapper>
            {
                new EntityWrapper(new Entity("contact", Guid.NewGuid()))
            };

            MockEntityRepo.Setup(a => a.GetEntitesByFetchXML(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>(), ref It.Ref <string> .IsAny))
            .Returns(entityWrapperList);

            systemUnderTest = new DataCrmStoreReader(MockLogger.Object, MockEntityRepo.Object, pageSize, batchSize, topCount, oneEntityPerBatch, FetchXMlQueries, EmptyFieldsToObfuscate);

            var actual = systemUnderTest.ReadBatchDataFromStore();

            actual.Should().NotBeNull();
            MockLogger.Verify(a => a.LogVerbose(It.IsAny <string>()));
        }
コード例 #8
0
        public void Setup()
        {
            InitializeProperties();

            var entities = new List <CrmEntity>()
            {
                new CrmEntity(), new CrmEntity()
            };

            schemaConfig = new CrmSchemaConfiguration();
            schemaConfig.Entities.AddRange(entities);

            dataCrmStoreReader = new DataCrmStoreReader(MockLogger.Object, MockEntityRepo.Object, 500, 500, 1000, true, new List <string>(), EmptyFieldsToObfuscate);

            string        filePrefix     = "Test";
            string        filesPath      = "TestData";
            List <string> excludedFields = new List <string>();

            dataCrmStoreWriter = new DataFileStoreWriterCsv(MockLogger.Object, filePrefix, filesPath, excludedFields, schemaConfig);
        }
コード例 #9
0
 public CrmDirectMigrator(ILogger logger, DataCrmStoreReader storeReader, DataCrmStoreWriter storeWriter, ICrmGenericImporterConfig config, CancellationToken token)
     : base(logger, storeReader, storeWriter, config, token)
 {
 }
コード例 #10
0
 public CrmDirectMigrator(ILogger logger, DataCrmStoreReader storeReader, DataCrmStoreWriter storeWriter, ICrmGenericImporterConfig config)
     : base(logger, storeReader, storeWriter, config)
 {
 }
コード例 #11
0
 public CrmFileDataExporterCsv(ILogger logger, DataCrmStoreReader storeReader, DataFileStoreWriterCsv storeWriter, CancellationToken cancellationToken)
     : base(logger, storeReader, storeWriter, cancellationToken)
 {
 }
コード例 #12
0
 public CrmFileDataExporterCsv(ILogger logger, DataCrmStoreReader storeReader, DataFileStoreWriterCsv storeWriter)
     : base(logger, storeReader, storeWriter)
 {
 }
コード例 #13
0
 private void SetConfiguration()
 {
     dataCrmStoreReader = (DataCrmStoreReader)GetStoreReader;
     targetEntRepo      = dataCrmStoreReader.GetEntityRepository;
     AddCustomProcessors();
 }
コード例 #14
0
 public CrmFileDataExporter(ILogger logger, DataCrmStoreReader storeReader, DataFileStoreWriter storeWriter, CancellationToken cancellationToken)
     : base(logger, storeReader, storeWriter, cancellationToken)
 {
     SetConfiguration();
 }
コード例 #15
0
 public CrmFileDataExporter(ILogger logger, DataCrmStoreReader storeReader, DataFileStoreWriter storeWriter)
     : base(logger, storeReader, storeWriter)
 {
     SetConfiguration();
 }