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); } }); }
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); }); }); }
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); } }); }); }
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); }); }); }
/// <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; } }
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); }); }); }
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(); }
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(); } }
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(""); }
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); } }); }); }
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); }