public void It_should_load_save_data() { var database = new DatabaseInstance(); database.Strings.Set("a", "b"); database.Bools.Set("a", true); database.Ints.Set("a", 2); database.Floats.Set("a", 5); var save = database.Save(); database.Clear(); database.Load(save); Assert.AreEqual("b", database.Strings.Get("a")); Assert.AreEqual(true, database.Bools.Get("a")); Assert.AreEqual(2, database.Ints.Get("a")); Assert.AreEqual(5, database.Floats.Get("a")); }
public void It_should_return_all_KeyValueData_in_a_string() { var database = new DatabaseInstance(); database.Strings.Set("a", "b"); database.Bools.Set("a", true); database.Ints.Set("a", 2); database.Floats.Set("a", 5); var strings = new KeyValueDataString(); strings.Set("a", "b"); var bools = new KeyValueDataBool(); bools.Set("a", true); var ints = new KeyValueDataInt(); ints.Set("a", 2); var floats = new KeyValueDataFloat(); floats.Set("a", 5); var save = JsonUtility.ToJson(new DatabaseInstance.SaveData { strings = strings.Save(), bools = bools.Save(), ints = ints.Save(), floats = floats.Save(), }); var saveResult = database.Save(); Assert.AreEqual(save, saveResult); }
public DatabaseInstance GenerateDatabaseInstance(ServerInstance serverInstance, List <DiskVolume> dataDiskVolumes, List <DiskVolume> logDiskVolumes, Slice slice, DatabaseVersion databaseVersion, string namePattern, string databaseNamePattern, double sizeFactor, bool generateFileGroups) { // --- Create the new database instance and set name DatabaseInstance ndi = new DatabaseInstance(databaseDefinition); ndi.ServerInstanceReference.Guid = serverInstance.Guid; ndi.SliceReference.Guid = slice.Guid; ndi.DatabaseVersionReference.Guid = databaseVersion.Guid; ndi.Name = ExpressionProperty.ResolveExpression(ndi, namePattern); ndi.DatabaseName = ExpressionProperty.ResolveExpression(ndi, databaseNamePattern); ndi.Save(); if (generateFileGroups) { ndi.ServerInstance.Machine.LoadDiskVolumes(false); databaseDefinition.LoadFileGroups(false); slice.LoadPartitions(false); List <Partition> partitions = new List <Partition>(slice.Partitions.Values.OrderBy(i => i.Number)); List <FileGroup> filegroups = new List <FileGroup>(databaseDefinition.FileGroups.Values.OrderBy(i => i.Number)); for (int fi = 0; fi < filegroups.Count; fi++) { // --- Create data and "log" file groups --- if (filegroups[fi].LayoutType == FileGroupLayoutType.Monolithic || filegroups[fi].FileGroupType == FileGroupType.Log) { DatabaseInstanceFileGroup nfg = new DatabaseInstanceFileGroup(ndi); nfg.FileGroupType = filegroups[fi].FileGroupType; nfg.FileGroupName = nfg.Name = filegroups[fi].FileGroupName; nfg.FileGroupReference.Guid = filegroups[fi].Guid; nfg.PartitionReference.Guid = Guid.Empty; nfg.AllocatedSpace = (long)(filegroups[fi].AllocatedSpace * sizeFactor); nfg.Save(); nfg.GenerateInstanceFiles(dataDiskVolumes, sizeFactor); } else if (filegroups[fi].LayoutType == FileGroupLayoutType.Sliced) { for (int pi = 0; pi < partitions.Count; pi++) { DatabaseInstanceFileGroup nfg = new DatabaseInstanceFileGroup(ndi); nfg.FileGroupType = filegroups[fi].FileGroupType; nfg.FileGroupName = nfg.Name = string.Format("{0}_{1}", filegroups[fi].FileGroupName, pi); nfg.FileGroupReference.Guid = filegroups[fi].Guid; nfg.PartitionReference.Guid = partitions[pi].Guid; nfg.AllocatedSpace = (long)(filegroups[fi].AllocatedSpace * sizeFactor); nfg.Save(); nfg.GenerateInstanceFiles(dataDiskVolumes, sizeFactor); } } else { throw new NotImplementedException(); } } } return(ndi); }