public void Versioning_LostVersions_AllNodesAreExist() { //-- Preparing //var gcontents = (from i in Enumerable.Repeat(typeof(int), 5) select (GenericContent)Content.CreateNew("Car", TestRoot, "car").ContentHandler).ToArray(); //var ids = gcontents.Select(i => //{ // var c = (GenericContent)Content.CreateNew("Car", TestRoot, "car").ContentHandler; // c.ApprovingMode = ApprovingType.False; // c.VersioningMode = VersioningType.None; // c.Save(); // return c; //}).Select(c => c.Id).ToArray(); //gcontents = Node.LoadNodes(ids).Cast<GenericContent>().ToArray(); //var versionids = gcontents.Select(c => c.VersionId).ToArray(); var gcontents = new GenericContent[5]; var ids = new int[5]; var versionids = new int[5]; for (int i = 0; i < gcontents.Length; i++) { var c = (GenericContent)Content.CreateNew("Car", TestRoot, "car").ContentHandler; c.ApprovingMode = ApprovingType.False; c.VersioningMode = VersioningType.None; c.Save(); gcontents[i] = c; ids[i] = c.Id; versionids[i] = c.VersionId; } //-- Thread #1 gcontents[1].CheckOut(); gcontents[3].CheckOut(); //-- Thread #2 var heads = DataBackingStore.GetNodeHeads(ids); //-- Thread #1 gcontents[1].CheckIn(); gcontents[3].CheckIn(); //-- Thread #2 var nodes = LoadNodes(heads, VersionNumber.LastAccessible); var v2 = nodes.Select(c => c.VersionId).ToArray(); Assert.IsTrue(versionids.Except(v2).Count() == 0); }
public void Versioning_LostVersions_TwoNodesAreDeleted() { Test(() => { //-- Preparing var root = CreateTestRoot(); var gcontents = Enumerable.Repeat(typeof(int), 5).Select((x) => { var file = CreateTestFile(root, null, false); file.ApprovingMode = ApprovingType.False; file.VersioningMode = VersioningType.None; file.Save(); return(file); }).ToArray(); var ids = gcontents.Select(c => c.Id).ToArray(); // reload gcontents = Node.LoadNodes(ids).Cast <File>().ToArray(); var versionids = gcontents.Select(c => c.VersionId).ToArray(); //-- Thread #1 gcontents[1].CheckOut(); gcontents[3].CheckOut(); //-- Thread #2 var heads = DataBackingStore.GetNodeHeads(ids); //-- Thread #1 gcontents[1].CheckIn(); gcontents[3].ForceDelete(); gcontents[2].ForceDelete(); //-- Thread #2 var nodes = LoadNodes(heads, VersionNumber.LastAccessible); var v2 = nodes.Select(c => c.VersionId).ToArray(); var diff = versionids.Except(v2).ToArray(); Assert.IsTrue(diff.Count() == 2); Assert.IsTrue(diff.Contains(versionids[2])); Assert.IsTrue(diff.Contains(versionids[3])); }); }
public void Versioning_LostVersions_TwoNodesAreDeleted() { //-- Preparing var gcontents = (from i in Enumerable.Repeat(typeof(int), 5) select(GenericContent) Content.CreateNew("Car", TestRoot, "car").ContentHandler).ToArray(); var ids = gcontents.Select(i => { var c = (GenericContent)Content.CreateNew("Car", TestRoot, "car").ContentHandler; c.ApprovingMode = ApprovingType.False; c.VersioningMode = VersioningType.None; c.Save(); return(c); }).Select(c => c.Id).ToArray(); gcontents = Node.LoadNodes(ids).Cast <GenericContent>().ToArray(); var versionids = gcontents.Select(c => c.VersionId).ToArray(); //-- Thread #1 gcontents[1].CheckOut(); gcontents[3].CheckOut(); //-- Thread #2 var heads = DataBackingStore.GetNodeHeads(ids); //-- Thread #1 gcontents[1].CheckIn(); gcontents[3].ForceDelete(); gcontents[2].ForceDelete(); //-- Thread #2 var nodes = LoadNodes(heads, VersionNumber.LastAccessible); var v2 = nodes.Select(c => c.VersionId).ToArray(); var diff = versionids.Except(v2); Assert.IsTrue(diff.Count() == 2); Assert.IsTrue(diff.Contains(versionids[2])); Assert.IsTrue(diff.Contains(versionids[3])); }
public void Versioning_LostVersions_AllNodesAreExist() { Test(() => { var files = new File[5]; var ids = new int[5]; var versionids = new int[5]; var root = CreateTestRoot(); for (int i = 0; i < files.Length; i++) { var file = CreateTestFile(save: false, parent: root); file.ApprovingMode = ApprovingType.False; file.VersioningMode = VersioningType.None; file.Save(); files[i] = file; ids[i] = file.Id; versionids[i] = file.VersionId; } //-- Thread #1 files[1].CheckOut(); files[3].CheckOut(); //-- Thread #2 var heads = DataBackingStore.GetNodeHeads(ids); //-- Thread #1 files[1].CheckIn(); files[3].CheckIn(); //-- Thread #2 var nodes = LoadNodes(heads, VersionNumber.LastAccessible); var v2 = nodes.Select(c => c.VersionId).ToArray(); Assert.IsTrue(!versionids.Except(v2).Any()); }); }