Пример #1
0
        public void Can_Provision_Incrementally_With_SSOMFarmPropertyBagStorage()
        {
            var provisionRunner  = new SSOMProvisionRunner();
            var provisionService = provisionRunner.ProvisionService;

            var incrementalModelId = "m2.regression." + Guid.NewGuid().ToString("N");

            provisionRunner.WithSSOMFarmContext(farm =>
            {
                for (var i = 0; i < 3; i++)
                {
                    var incrementalProvisionConfig = new IncrementalProvisionConfig();
                    incrementalProvisionConfig.PersistenceStorages.Add(new DefaultSSOMFarmPropertyBagStorage(farm));

                    provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

                    var model = SPMeta2Model.NewSiteModel(site =>
                    {
                    });

                    model.SetIncrementalProvisionModelId(incrementalModelId);

                    provisionService.DeployModel(SPMeta2.SSOM.ModelHosts.FarmModelHost.FromFarm(farm), model);
                }
            });
        }
Пример #2
0
        public void Can_Provision_Incrementally_With_FileSystemStorage()
        {
            var provisionRunner  = new O365ProvisionRunner();
            var provisionService = provisionRunner.ProvisionService;

            var incrementalProvisionConfig = new IncrementalProvisionConfig();

            incrementalProvisionConfig.PersistenceStorages.Add(new DefaultFileSystemPersistenceStorage());

            provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

            provisionRunner.SiteUrls.ForEach(siteUrl =>
            {
                var incrementalModelId = "m2.regression." + Guid.NewGuid().ToString("N");

                var model = SPMeta2Model.NewSiteModel(site =>
                {
                });

                model.SetIncrementalProvisionModelId(incrementalModelId);

                provisionRunner.WithO365Context(siteUrl, context =>
                {
                    provisionService.DeployModel(SPMeta2.CSOM.ModelHosts.SiteModelHost.FromClientContext(context), model);
                });
            });
        }
Пример #3
0
        public void Can_Provision_Incrementally_With_SSOMWebPropertyBagStorage()
        {
            var provisionRunner  = new SSOMProvisionRunner();
            var provisionService = provisionRunner.ProvisionService;

            var incrementalModelId = "m2.regression." + Guid.NewGuid().ToString("N");

            provisionRunner.SiteUrls.ForEach(siteUrl =>
            {
                provisionRunner.WithSSOMSiteAndWebContext((spSite, spWeb) =>
                {
                    for (var i = 0; i < 3; i++)
                    {
                        var incrementalProvisionConfig = new IncrementalProvisionConfig();
                        incrementalProvisionConfig.PersistenceStorages.Add(
                            new DefaultSSOMWebPropertyBagStorage(spWeb));

                        provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

                        var model = SPMeta2Model.NewSiteModel(site =>
                        {
                        });

                        model.SetIncrementalProvisionModelId(incrementalModelId);


                        provisionService.DeployModel(SPMeta2.SSOM.ModelHosts.WebModelHost.FromWeb(spWeb), model);
                    }
                });
            });
        }
Пример #4
0
        public void Can_Provision_Incrementally_With_NoIncrementalModelId()
        {
            var provisionRunner  = new O365ProvisionRunner();
            var provisionService = provisionRunner.ProvisionService;

            var incrementalProvisionConfig = new IncrementalProvisionConfig();

            incrementalProvisionConfig.PersistenceStorages.Add(new DefaultFileSystemPersistenceStorage());

            provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

            if (!provisionRunner.SiteUrls.Any())
            {
                throw new Exception("Cannot find any O365 site urls to run with test");
            }

            provisionRunner.SiteUrls.ForEach(siteUrl =>
            {
                var model = SPMeta2Model.NewSiteModel(site => { });

                provisionRunner.WithO365Context(siteUrl, context =>
                {
                    provisionService.DeployModel(SPMeta2.CSOM.ModelHosts.SiteModelHost.FromClientContext(context), model);
                });
            });
        }
Пример #5
0
        /// <summary>
        /// A shortcut for incremental provision
        /// Sets incremental provision mode with IncrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true
        /// Once done, reverts back to default provision mode
        /// Callback on IncrementalProvisionConfig makes it easy to configure IncrementalProvisionConfig instance
        /// </summary>
        /// <param name="provisionService"></param>
        /// <param name="modelHost"></param>
        /// <param name="model"></param>
        /// <param name="incrementalModelId"></param>
        /// <param name="config"></param>
        public static void DeployModelIncrementally(this ProvisionServiceBase provisionService,
                                                    ModelHostBase modelHost,
                                                    ModelNode model,
                                                    string incrementalModelId,
                                                    Action <IncrementalProvisionConfig> config)
        {
            try
            {
                var incrementalProvisionConfig = new IncrementalProvisionConfig
                {
                    AutoDetectSharePointPersistenceStorage = true
                };

                if (config != null)
                {
                    config(incrementalProvisionConfig);
                }

                provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);
                model.InternalSetIncrementalProvisionModelId(incrementalModelId);

                provisionService.DeployModel(modelHost, model);
            }
            finally
            {
                provisionService.SetDefaultProvisionMode();
            }
        }
        public SPMeta2RegresionScenarioTestBase()
        {
            RegressionService.ProvisionGenerationCount = 2;
            RegressionService.ShowOnlyFalseResults     = true;

            var isIncrementalProvisionEnabled = IsIncrementalProvisionMode;

            if (isIncrementalProvisionEnabled)
            {
                RegressionService.BeforeProvisionRunnerExcecution += (runner) =>
                {
                    var config = new IncrementalProvisionConfig();
                    runner.ProvisionService.SetIncrementalProvisionMode(config);

                    runner.OnBeforeDeployModel += (provisionService, model) =>
                    {
                        if (PreviousModelHash != null)
                        {
                            provisionService.SetIncrementalProvisionModelHash(PreviousModelHash);
                        }
                    };

                    runner.OnAfterDeployModel += (provisionService, model) =>
                    {
                        var tracer = new DefaultIncrementalModelPrettyPrintService();

                        RegressionUtils.WriteLine(string.Format("Deployed model with incremental updates:"));
                        RegressionUtils.WriteLine(Environment.NewLine + tracer.PrintModel(model));

                        PreviousModelHash = provisionService.GetIncrementalProvisionModelHash();
                    };
                };

                RegressionService.AfterProvisionRunnerExcecution += (runner) =>
                {
                };

                RegressionService.EnableEventValidation      = false;
                RegressionService.EnableDefinitionValidation = false;
                RegressionService.EnablePropertyValidation   = false;

                EnablePropertyUpdateValidation = true;
            }
        }
Пример #7
0
        public void Can_Provision_Incrementally_With_AutoDetection_As_CSOM()
        {
            var provisionRunner  = new O365ProvisionRunner();
            var provisionService = provisionRunner.ProvisionService;

            var incrementalProvisionConfig = new IncrementalProvisionConfig();

            incrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true;

            provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

            provisionRunner.SiteUrls.ForEach(siteUrl =>
            {
                var incrementalModelId = "m2.regression." + Guid.NewGuid().ToString("N");

                var model = SPMeta2Model.NewSiteModel(site =>
                {
                });

                model.SetIncrementalProvisionModelId(incrementalModelId);

                provisionRunner.WithO365Context(siteUrl, context =>
                {
                    provisionService.DeployModel(SPMeta2.CSOM.ModelHosts.SiteModelHost.FromClientContext(context), model);
                });
            });

            provisionRunner.WebUrls.ForEach(siteUrl =>
            {
                var incrementalModelId = "m2.regression." + Guid.NewGuid().ToString("N");

                var model = SPMeta2Model.NewWebModel(site =>
                {
                });

                model.SetIncrementalProvisionModelId(incrementalModelId);

                provisionRunner.WithO365Context(siteUrl, context =>
                {
                    provisionService.DeployModel(SPMeta2.CSOM.ModelHosts.WebModelHost.FromClientContext(context), model);
                });
            });
        }
Пример #8
0
        private static void BeforeDeployModel(bool Incremental, Action <CSOMProvisionService> Deploy)
        {
            var StartedDate      = DateTime.Now;
            var provisionService = new CSOMProvisionService();

            if (Incremental)
            {
                var IncProvisionConfig = new IncrementalProvisionConfig();
                IncProvisionConfig.AutoDetectSharePointPersistenceStorage = true;
                provisionService.SetIncrementalProvisionMode(IncProvisionConfig);
            }
            provisionService.OnModelNodeProcessed += (sender, args) =>
            {
                ModelNodeProcessed(sender, args, Incremental);
            };

            Deploy(provisionService);
            provisionService.SetDefaultProvisionMode();
            var FinishedDate = DateTime.Now;
            var DateDiff     = (FinishedDate - StartedDate);
            var TotalHrs     = Math.Round(DateDiff.TotalHours);
            var TotalMinutes = Math.Round(DateDiff.TotalMinutes);
            var TotalSeconds = Math.Round(DateDiff.TotalSeconds);

            if (TotalHrs == 0)
            {
                if (TotalMinutes == 0)
                {
                    Console.WriteLine(String.Format("It took us {0} seconds", TotalSeconds.ToString()));
                }
                else
                {
                    Console.WriteLine(String.Format("It took us {0} minutes", TotalMinutes.ToString()));
                }
            }
            else
            {
                Console.WriteLine(String.Format("It took us {0} hours", TotalHrs.ToString()));
            }
            Console.WriteLine();
            Console.WriteLine();
        }
Пример #9
0
        public void DeployIncrementally_NormalSetup_CSOM()
        {
            // setup web
            var siteUrl = "";

            // create you models
            var siteModel = SPMeta2Model.NewSiteModel(site =>
            {
            });

            var webModel = SPMeta2Model.NewWebModel(web =>
            {
            });

            // setup client context
            using (var clientContext = new ClientContext(siteUrl))
            {
                var provisionService = new StandardCSOMProvisionService();

                // setup incremental provision settings
                var incrementalProvisionConfig = new IncrementalProvisionConfig();

                // 1 - store model hash in SharePoint
                incrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true;

                // 2 - set incremental provisio model for the provision service
                provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

                // set model id for incremental provision
                siteModel.SetIncrementalProvisionModelId(incrementalModelId);
                webModel.SetIncrementalProvisionModelId(incrementalModelId);


                // deploy incrementally
                provisionService.DeploySiteModel(clientContext, siteModel);
                provisionService.DeployWebModel(clientContext, webModel);

                // revert back to normal provision mode
                provisionService.SetDefaultProvisionMode();
            }
        }
Пример #10
0
        private void BeforeDeployModel(Action <CSOMProvisionService> Deploy)
        {
            DateTime startedDate = DateTime.Now;

            CSOMProvisionService provisionService = new CSOMProvisionService();

            if (Incremental)
            {
                IncrementalProvisionConfig incProvisionConfig = new IncrementalProvisionConfig();
                incProvisionConfig.AutoDetectSharePointPersistenceStorage = true;
                provisionService.SetIncrementalProvisionMode(incProvisionConfig);
            }

            provisionService.OnModelNodeProcessed += (sender, args) =>
            {
                ModelNodeProcessed(sender, args);
            };

            Deploy(provisionService);

            provisionService.SetDefaultProvisionMode();

            DateTime finishedDate  = DateTime.Now;
            TimeSpan executionTime = (finishedDate - startedDate);

            if (executionTime.Days > 0)
            {
                Logger(String.Format("It took us {3} days and {0}:{1}:{2} hours", executionTime.Hours, executionTime.Minutes, executionTime.Seconds, executionTime.Days));
            }
            else
            {
                Logger(String.Format("It took us {0}:{1}:{2} hours", executionTime.Hours, executionTime.Minutes, executionTime.Seconds));
            }

            Logger("");
            Logger("");
        }
Пример #11
0
        public void Can_Provision_Incrementally_With_AutoDetection_As_SSOM()
        {
            var provisionRunner  = new SSOMProvisionRunner();
            var provisionService = provisionRunner.ProvisionService;

            var incrementalModelId = "m2.regression." + Guid.NewGuid().ToString("N");

            provisionRunner.WithSSOMFarmContext(farm =>
            {
                for (var i = 0; i < 3; i++)
                {
                    var incrementalProvisionConfig = new IncrementalProvisionConfig();
                    incrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true;

                    provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

                    var model = SPMeta2Model.NewFarmModel(site =>
                    {
                    });

                    model.SetIncrementalProvisionModelId(incrementalModelId);


                    provisionService.DeployModel(SPMeta2.SSOM.ModelHosts.FarmModelHost.FromFarm(farm), model);
                }
            });


            provisionRunner.WebApplicationUrls.ForEach(url =>
            {
                provisionRunner.WithSSOMWebApplicationContext(url, spWebApp =>
                {
                    for (var i = 0; i < 3; i++)
                    {
                        var incrementalProvisionConfig = new IncrementalProvisionConfig();
                        incrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true;

                        provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

                        var model = SPMeta2Model.NewWebApplicationModel(site =>
                        {
                        });

                        model.SetIncrementalProvisionModelId(incrementalModelId);


                        provisionService.DeployModel(SPMeta2.SSOM.ModelHosts.WebApplicationModelHost.FromWebApplication(spWebApp), model);
                    }
                });
            });

            provisionRunner.SiteUrls.ForEach(siteUrl =>
            {
                provisionRunner.WithSSOMSiteAndWebContext((spSite, spWeb) =>
                {
                    for (var i = 0; i < 3; i++)
                    {
                        var incrementalProvisionConfig = new IncrementalProvisionConfig();
                        incrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true;

                        provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);

                        var model = SPMeta2Model.NewSiteModel(site =>
                        {
                        });

                        model.SetIncrementalProvisionModelId(incrementalModelId);


                        provisionService.DeployModel(SPMeta2.SSOM.ModelHosts.WebModelHost.FromWeb(spWeb), model);
                    }
                });
            });
        }
Пример #12
0
        public static ProvisionServiceBase SetIncrementalProvisionMode(this ProvisionServiceBase service, IncrementalProvisionConfig config)
        {
            service.ModelTraverseService = null;

            if (config == null)
            {
                config = IncrementalProvisionConfig.Default;
            }

            if (config.CustomModelTreeTraverseServiceType != null)
            {
                service.CustomModelTreeTraverseServiceType = config.CustomModelTreeTraverseServiceType;
            }
            else
            {
                service.CustomModelTreeTraverseServiceType = typeof(DefaultIncrementalModelTreeTraverseService);
            }

            var typedModelService = service.ModelTraverseService as DefaultIncrementalModelTreeTraverseService;

            typedModelService.PreviousModelHash = config.PreviousModelHash ?? new ModelHash();

            typedModelService.Configuration = config;

            return(service);
        }