Changeset 15529 for branches/PersistenceReintegration/HeuristicLab.Tests
- Timestamp:
- 12/15/17 13:26:49 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PersistenceReintegration/HeuristicLab.Tests/HeuristicLab.Persistence-3.3/UseCasesPersistenceNew.cs
r15509 r15529 408 408 } 409 409 410 public string Profile(Func<object> GenerateDataFunc ) {410 public string Profile(Func<object> GenerateDataFunc, string filename = null) { 411 411 int nrOfRepetitions = 30; 412 412 StringBuilder report = new StringBuilder(); … … 417 417 } 418 418 419 report.Append("Performance Report for " + GenerateDataFunc.Method.Name + ": " + Environment.NewLine);419 //report.Append("Performance Report for " + GenerateDataFunc.Method.Name + ": " + Environment.NewLine); 420 420 report.Append(Environment.NewLine); 421 report.AppendFormat("Avg. old vs. new time for serializing a file; { 0};{1};{2}",421 report.AppendFormat("Avg. old vs. new time for serializing a file; {3};{0};{1};{2}", 422 422 dataList.Select(x => x.OldSerializingTime).Average(), 423 423 dataList.Select(x => x.NewSerializingTime).Average(), 424 424 dataList.Select(x => x.OldSerializingTime.TotalMilliseconds).Average() / dataList.Select(x => x.NewSerializingTime.TotalMilliseconds).Average() 425 );425 , filename); 426 426 report.Append(Environment.NewLine); 427 report.AppendFormat("Avg. old vs. new time for deserializing a file; { 0};{1};{2}",427 report.AppendFormat("Avg. old vs. new time for deserializing a file; {3};{0};{1};{2}", 428 428 dataList.Select(x => x.OldDeserializingTime).Average(), 429 429 dataList.Select(x => x.NewDeserializingTime).Average(), 430 430 dataList.Select(x => x.OldDeserializingTime.TotalMilliseconds).Average() / dataList.Select(x => x.NewDeserializingTime.TotalMilliseconds).Average() 431 );431 , filename); 432 432 report.Append(Environment.NewLine); 433 report.AppendFormat("Avg. old vs. new file size (in bytes); { 0};{1};{2}",433 report.AppendFormat("Avg. old vs. new file size (in bytes); {3};{0};{1};{2}", 434 434 dataList.Select(x => x.OldFileSize).Average(), 435 435 dataList.Select(x => x.NewFileSize).Average(), 436 436 dataList.Select(x => x.OldFileSize).Average() / dataList.Select(x => x.NewFileSize).Average() 437 );437 , filename); 438 438 report.Append(Environment.NewLine); 439 report.AppendFormat("Avg. old vs. new memory consumption for serializing a file (in bytes); { 0};{1};{2}",439 report.AppendFormat("Avg. old vs. new memory consumption for serializing a file (in bytes); {3};{0};{1};{2}", 440 440 dataList.Select(x => x.OldSerializingMemoryConsumed).Average(), 441 441 dataList.Select(x => x.NewSerializingMemoryConsumed).Average(), 442 442 dataList.Select(x => x.OldSerializingMemoryConsumed).Average() / dataList.Select(x => x.NewSerializingMemoryConsumed).Average() 443 );443 , filename); 444 444 report.Append(Environment.NewLine); 445 report.AppendFormat("Avg. old vs. new memory consumption for deserializing a file (in bytes); { 0};{1};{2}",445 report.AppendFormat("Avg. old vs. new memory consumption for deserializing a file (in bytes); {3};{0};{1};{2}", 446 446 dataList.Select(x => x.OldDeserializingMemoryConsumed).Average(), 447 447 dataList.Select(x => x.NewDeserializingMemoryConsumed).Average(), 448 448 dataList.Select(x => x.OldDeserializingMemoryConsumed).Average() / dataList.Select(x => x.NewDeserializingMemoryConsumed).Average() 449 );449 , filename); 450 450 report.Append(Environment.NewLine); 451 451 … … 2160 2160 2161 2161 2162 [StorableType("B72C58C8-3321-4706-AA94-578F57337070" , 2)]2162 [StorableType("B72C58C8-3321-4706-AA94-578F57337070")] 2163 2163 private class NewBaseType { 2164 2164 [Storable] 2165 2165 public DoubleValue[] items; 2166 2166 } 2167 [StorableType("00000000-0000-0000-0000-BADCAFFEE00 0", 2)] // for testing (version 2)2167 [StorableType("00000000-0000-0000-0000-BADCAFFEE001", 2)] // for testing (version 2) 2168 2168 private class V2 : NewBaseType { 2169 2169 [Storable] … … 2189 2189 } 2190 2190 2191 [StorableType("00000000-0000-0000-0000-BADCAFFEE 200", 3)] // for testing (version 3)2191 [StorableType("00000000-0000-0000-0000-BADCAFFEE002", 3)] // for testing (version 3) 2192 2192 private class V3 : NewBaseType { 2193 2193 [Storable] … … 2215 2215 private static Dictionary<string, object> ConvertV1(Dictionary<string, object> values) { 2216 2216 var newValues = new Dictionary<string, object>(); 2217 var items = (ItemCollection<IItem>)values[" OldBaseType.items"];2218 newValues[" NewBaseType.items"] = items.Select(iv => new DoubleValue((double)(((dynamic)iv).Value))).ToArray();2219 newValues[" V2.a"] = ((IntValue)values["V1.a"]).Value;2220 newValues[" V2.val"] = ((ItemList<IntValue>)values["V1.vals"]).Select(iv => iv.Value).ToArray();2221 2222 newValues[" V2.mySelf"] = values["V1.mySelf"]; // myself type will be mapped correctly2223 2224 var tup = (Tuple<int, int>)values[" V1.tup"];2217 var items = (ItemCollection<IItem>)values["F9F51075-490C-48E3-BF64-14514A210149.items"]; 2218 newValues["B72C58C8-3321-4706-AA94-578F57337070.items"] = items.Select(iv => new DoubleValue((double)(((dynamic)iv).Value))).ToArray(); 2219 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.a"] = ((IntValue)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.a"]).Value; 2220 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.val"] = ((ItemList<IntValue>)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.vals"]).Select(iv => iv.Value).ToArray(); 2221 2222 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.mySelf"] = values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.mySelf"]; // myself type will be mapped correctly 2223 2224 var tup = (Tuple<int, int>)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.tup"]; 2225 2225 if (tup != null) { 2226 newValues[" V2.TupItem1"] = tup.Item1;2227 newValues[" V2.TupItem2"] = tup.Item2;2226 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.TupItem1"] = tup.Item1; 2227 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.TupItem2"] = tup.Item2; 2228 2228 } 2229 2229 2230 newValues[" V2.coords"] = new Point((int)values["V1.x"], (int)values["V1.y"]);2230 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.coords"] = new Point((int)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.x"], (int)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.y"]); 2231 2231 2232 2232 return newValues; … … 2236 2236 private static Dictionary<string, object> ConvertV2(Dictionary<string, object> values) { 2237 2237 var newValues = new Dictionary<string, object>(); 2238 newValues["NewBaseType.items"] = values["NewBaseType.items"]; 2239 newValues["V3.a"] = values["V2.a"]; 2240 newValues["V3.val"] = values["V2.val"]; 2241 newValues["V3.mySelf"] = values["V2.mySelf"]; 2242 2243 newValues["V3.tup"] = Tuple.Create((int)values["V2.TupItem1"], (int)values["V2.TupItem2"]); 2244 newValues["V3.coords"] = values["V2.coords"]; 2238 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.a"] = values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.a"]; 2239 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.val"] = values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.val"]; 2240 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.mySelf"] = values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.mySelf"]; 2241 2242 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.tup"] = Tuple.Create((int)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.TupItem1"], (int)values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.TupItem2"]); 2243 newValues["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.coords"] = values["D211A828-6440-4E72-A8C7-AA4F9B4FFA75.coords"]; 2245 2244 2246 2245 return newValues; … … 2270 2269 Mapper.StaticCache.DeregisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(V2)).Guid); 2271 2270 Mapper.StaticCache.DeregisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(V3)).Guid); 2272 2273 2271 Mapper.StaticCache.RegisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(V1)).Guid, typeof(V3)); 2274 var pi = typeof(StorableTypeAttribute).GetProperty("Guid"); 2275 pi.SetValue( 2276 Mapper.StaticCache.GetTypeInfo(typeof(V3)).StorableTypeAttribute, 2277 StorableTypeAttribute.GetStorableTypeAttribute(typeof(V1)).Guid, 2278 null); 2272 2273 var typeInfosField = typeof(StaticCache).GetField("typeInfos", BindingFlags.NonPublic | BindingFlags.Instance); 2274 var typeInfos = (Dictionary<Type, Persistence.TypeInfo>)typeInfosField.GetValue(Mapper.StaticCache); 2275 2276 var guidPI = typeof(StorableTypeAttribute).GetProperty("Guid"); 2277 var convPI = typeof(Persistence.TypeInfo).GetProperty("ConversionMethods"); 2278 2279 var oldBInfo = typeInfos[typeof(V1)]; 2280 var newBInfo = Mapper.StaticCache.GetTypeInfo(typeof(V3)); 2281 guidPI.SetValue(newBInfo.StorableTypeAttribute, oldBInfo.StorableTypeAttribute.Guid); 2282 //convPI.SetValue(newBInfo, oldBInfo.ConversionMethods); 2283 typeInfos.Remove(typeof(V1)); 2279 2284 2280 2285 object o = serializer.Deserialize(tempFile); … … 2348 2353 serializer.Serialize(original, fileName + ".proto"); 2349 2354 // var newVersion = serializer.Deserialize(fileName + ".proto"); 2350 Console.WriteLine("File: " + fileName);2351 var p = Profile(() => original );2355 //Console.WriteLine("File: " + fileName); 2356 var p = Profile(() => original, Path.GetFileName(fileName)); 2352 2357 Console.WriteLine(p); 2353 2358 } 2354 2359 } 2355 2360 } 2361 2362 [StorableType("3B48A44F-93E2-4ECC-A9B9-56E425EF96F8")] 2363 private class ConversionA { 2364 [Storable] 2365 public int f; 2366 } 2367 2368 [StorableType("00000000-0000-0000-0000-000000000002", 2)] 2369 private class ConversionANew { 2370 [Storable] 2371 public int g; 2372 } 2373 2374 [StorableType("7CBF2251-CF9F-4D9E-AA7B-C65495AE078F")] 2375 private class ConversionB : ConversionA { 2376 [Storable] 2377 public int f; 2378 public int BaseF { get { return base.f; } } 2379 2380 public ConversionB() { 2381 2382 } 2383 2384 public ConversionB(int myF, int baseF) { 2385 this.f = myF; 2386 base.f = baseF; 2387 } 2388 } 2389 2390 [StorableType("00000000-0000-0000-0000-000000000001", 2)] 2391 private class ConversionBNew : ConversionANew { 2392 [Storable] 2393 public int g; 2394 2395 public int BaseG { get { return base.g; } } 2396 } 2397 2398 private static class NewConversions { 2399 [StorableConversion("7CBF2251-CF9F-4D9E-AA7B-C65495AE078F", 1)] 2400 private static Dictionary<string, object> ConvertB(Dictionary<string, object> values) { 2401 var newValues = new Dictionary<string, object>(); 2402 newValues["7CBF2251-CF9F-4D9E-AA7B-C65495AE078F.g"] = values["7CBF2251-CF9F-4D9E-AA7B-C65495AE078F.f"]; 2403 return newValues; 2404 } 2405 2406 [StorableConversion("3B48A44F-93E2-4ECC-A9B9-56E425EF96F8", 1)] 2407 private static Dictionary<string, object> ConvertA(Dictionary<string, object> values) { 2408 var newValues = new Dictionary<string, object>(); 2409 newValues["3B48A44F-93E2-4ECC-A9B9-56E425EF96F8.g"] = values["3B48A44F-93E2-4ECC-A9B9-56E425EF96F8.f"]; 2410 return newValues; 2411 } 2412 } 2413 2414 [TestMethod] 2415 [TestCategory("Persistence4")] 2416 [TestProperty("Time", "short")] 2417 public void TestConversionCase1() { 2418 var test = new Func<ConversionB>(() => { 2419 return new ConversionB(1, 2); 2420 }); 2421 2422 ProtoBufSerializer serializer = new ProtoBufSerializer(); 2423 var old = test(); 2424 serializer.Serialize(old, tempFile); 2425 Mapper.StaticCache.DeregisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(ConversionB)).Guid); 2426 Mapper.StaticCache.DeregisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(ConversionBNew)).Guid); 2427 Mapper.StaticCache.DeregisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(ConversionA)).Guid); 2428 Mapper.StaticCache.DeregisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(ConversionANew)).Guid); 2429 Mapper.StaticCache.RegisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(ConversionB)).Guid, typeof(ConversionBNew)); 2430 Mapper.StaticCache.RegisterType(StorableTypeAttribute.GetStorableTypeAttribute(typeof(ConversionA)).Guid, typeof(ConversionANew)); 2431 2432 var typeInfosField = typeof(StaticCache).GetField("typeInfos", BindingFlags.NonPublic | BindingFlags.Instance); 2433 var typeInfos = (Dictionary<Type, Persistence.TypeInfo>)typeInfosField.GetValue(Mapper.StaticCache); 2434 2435 var guidPI = typeof(StorableTypeAttribute).GetProperty("Guid"); 2436 var convPI = typeof(Persistence.TypeInfo).GetProperty("ConversionMethods"); 2437 2438 var oldAInfo = typeInfos[typeof(ConversionA)]; 2439 var newAInfo = Mapper.StaticCache.GetTypeInfo(typeof(ConversionANew)); 2440 guidPI.SetValue(newAInfo.StorableTypeAttribute, oldAInfo.StorableTypeAttribute.Guid); 2441 //convPI.SetValue(newAInfo, oldAInfo.ConversionMethods); 2442 typeInfos.Remove(typeof(ConversionA)); 2443 2444 var oldBInfo = typeInfos[typeof(ConversionB)]; 2445 var newBInfo = Mapper.StaticCache.GetTypeInfo(typeof(ConversionBNew)); 2446 guidPI.SetValue(newBInfo.StorableTypeAttribute, oldBInfo.StorableTypeAttribute.Guid); 2447 //convPI.SetValue(newBInfo, oldBInfo.ConversionMethods); 2448 typeInfos.Remove(typeof(ConversionB)); 2449 2450 object o = serializer.Deserialize(tempFile); 2451 var restored = (ConversionBNew)o; 2452 Assert.AreEqual(restored.g, old.f); 2453 Assert.AreEqual(restored.BaseG, old.BaseF); 2454 } 2356 2455 } 2357 2456 }
Note: See TracChangeset
for help on using the changeset viewer.