public void OpenClose() { Utility.WrapNativeSyncInvokeInMTA(() => { Uri owner = new Uri("fabric://test/btree"); LogHelper.Log("Begin construct btree"); Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter> tree = new Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter>(); LogHelper.Log("End construct btree"); // // Key configuration // LogHelper.Log("Start create key description"); KeyComparisonDescription keyDescription = new KeyComparisonDescription(); keyDescription.CultureInfo = Globalization.CultureInfo.InvariantCulture; keyDescription.IsFixedLengthKey = true; keyDescription.KeyDataType = (int)DataType.Int32; keyDescription.MaximumKeySizeInBytes = sizeof(int); LogHelper.Log("End create key description"); // // Storage configuration // LogHelper.Log("Start create storage description"); BtreeStorageConfigurationDescription storageDescription = new BtreeStorageConfigurationDescription(); storageDescription.IsVolatile = true; storageDescription.MaximumMemoryInMB = 1024; storageDescription.MaximumPageSizeInKB = 4; storageDescription.MaximumStorageInMB = 0; storageDescription.RetriesBeforeTimeout = 100; storageDescription.StoreDataInline = true; LogHelper.Log("End create key description"); // // Btree configuration // LogHelper.Log("Start create btree description"); BtreeConfigurationDescription btreeConfig = new BtreeConfigurationDescription(); btreeConfig.KeyComparison = keyDescription; btreeConfig.StorageConfiguration = storageDescription; btreeConfig.PartitionId = Guid.NewGuid(); btreeConfig.ReplicaId = 130083631515748206; LogHelper.Log("End create btree description"); // // Open the btree // LogHelper.Log("Begin open btree"); tree.OpenAsync(btreeConfig, false, CancellationToken.None).Wait(); LogHelper.Log("End open btree"); // // Close the btree // LogHelper.Log("Begin close btree"); tree.CloseAsync(true, CancellationToken.None).Wait(); LogHelper.Log("End close btree"); }, "OpenClose"); }
public void OpenCloseInsertPerf() { Utility.WrapNativeSyncInvokeInMTA(() => { Uri owner = new Uri("fabric://test/btree"); LogHelper.Log("Begin construct btrees"); Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter> tree = new Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter>(); LogHelper.Log("End construct btrees"); // // Key configuration // LogHelper.Log("Start create key description"); KeyComparisonDescription keyDescription = new KeyComparisonDescription(); keyDescription.CultureInfo = Globalization.CultureInfo.InvariantCulture; keyDescription.IsFixedLengthKey = true; keyDescription.KeyDataType = (int)DataType.Int32; keyDescription.MaximumKeySizeInBytes = sizeof(int); LogHelper.Log("End create key description"); // // Storage configuration // LogHelper.Log("Start create storage description"); BtreeStorageConfigurationDescription storageDescription = new BtreeStorageConfigurationDescription(); storageDescription.IsVolatile = true; storageDescription.MaximumMemoryInMB = 1024; storageDescription.MaximumPageSizeInKB = 4; storageDescription.MaximumStorageInMB = 0; storageDescription.RetriesBeforeTimeout = 100; storageDescription.StoreDataInline = true; LogHelper.Log("End create key description"); Guid treeGuid = Guid.NewGuid(); Guid treeApplyGuid = Guid.NewGuid(); // // Btree configuration // LogHelper.Log("Start create btree description"); BtreeConfigurationDescription btreeConfig = new BtreeConfigurationDescription(); btreeConfig.KeyComparison = keyDescription; btreeConfig.StorageConfiguration = storageDescription; btreeConfig.PartitionId = treeGuid; btreeConfig.ReplicaId = 130083631515748206; LogHelper.Log("End create btree description"); // // Open the btrees // LogHelper.Log("Begin open btree {0}", treeGuid); tree.OpenAsync(btreeConfig, false, CancellationToken.None).Wait(); LogHelper.Log("End open btree {0}", treeGuid); // // Insert/Apply into the btrees // List <Task> tasks = new List <Task>(); DateTime dtStart = DateTime.UtcNow; for (int sequenceNumber = 0; sequenceNumber < 1024; sequenceNumber++) { BtreeKey <int, Int32KeyBitConverter> key = new BtreeKey <int, Int32KeyBitConverter>(sequenceNumber); BtreeValue <int, Int32ValueBitConverter> value = new BtreeValue <int, Int32ValueBitConverter>(sequenceNumber); tasks.Add(tree.InsertAsync(key, value, sequenceNumber, CancellationToken.None)); } Task.WaitAll(tasks.ToArray()); DateTime dtEnd = DateTime.UtcNow; LogHelper.Log((dtEnd - dtStart).TotalMilliseconds.ToString()); BtreeStatistics stats = tree.Statistics; LogHelper.Log("Items {0}", stats.RecordCount); // // Close the btrees // LogHelper.Log("Begin close btree {0}", treeGuid); tree.CloseAsync(true, CancellationToken.None).Wait(); LogHelper.Log("End close btree {0}", treeGuid); }, "OpenCloseInsertPerf"); }
public void OpenCloseInsertApply() { Utility.WrapNativeSyncInvokeInMTA(() => { Uri owner = new Uri("fabric://test/btree"); LogHelper.Log("Begin construct btrees"); Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter> tree = new Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter>(); Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter> treeApply = new Btree <int, int, Int32KeyBitConverter, Int32ValueBitConverter>(); LogHelper.Log("End construct btrees"); // // Key configuration // LogHelper.Log("Start create key description"); KeyComparisonDescription keyDescription = new KeyComparisonDescription(); keyDescription.CultureInfo = Globalization.CultureInfo.InvariantCulture; keyDescription.IsFixedLengthKey = true; keyDescription.KeyDataType = (int)DataType.Int32; keyDescription.MaximumKeySizeInBytes = sizeof(int); LogHelper.Log("End create key description"); // // Storage configuration // LogHelper.Log("Start create storage description"); BtreeStorageConfigurationDescription storageDescription = new BtreeStorageConfigurationDescription(); storageDescription.IsVolatile = true; storageDescription.MaximumMemoryInMB = 1024; storageDescription.MaximumPageSizeInKB = 4; storageDescription.MaximumStorageInMB = 0; storageDescription.RetriesBeforeTimeout = 100; storageDescription.StoreDataInline = true; LogHelper.Log("End create key description"); Guid treeGuid = Guid.NewGuid(); Guid treeApplyGuid = Guid.NewGuid(); // // Btree configuration // LogHelper.Log("Start create btree description"); BtreeConfigurationDescription btreeConfig = new BtreeConfigurationDescription(); btreeConfig.KeyComparison = keyDescription; btreeConfig.StorageConfiguration = storageDescription; btreeConfig.PartitionId = treeGuid; btreeConfig.ReplicaId = 130083631515748206; LogHelper.Log("End create btree description"); // // Open the btrees // LogHelper.Log("Begin open btree {0}", treeGuid); tree.OpenAsync(btreeConfig, false, CancellationToken.None).Wait(); LogHelper.Log("End open btree {0}", treeGuid); LogHelper.Log("Begin open btree {0}", treeApplyGuid); btreeConfig.PartitionId = treeApplyGuid; treeApply.OpenAsync(btreeConfig, false, CancellationToken.None).Wait(); LogHelper.Log("End open btree {0}", treeApplyGuid); // // Insert/Apply into the btrees // DateTime dtStart = DateTime.UtcNow; for (int sequenceNumber = 0; sequenceNumber < 1024; sequenceNumber++) { BtreeKey <int, Int32KeyBitConverter> key = new BtreeKey <int, Int32KeyBitConverter>(sequenceNumber); BtreeValue <int, Int32ValueBitConverter> value = new BtreeValue <int, Int32ValueBitConverter>(sequenceNumber); IRedoUndoInformation infoRedoUndo = tree.InsertAsync(key, value, sequenceNumber, CancellationToken.None).Result; if (3 != infoRedoUndo.Redo.Count()) { LogHelper.Log("Insert redo buffers {0}", infoRedoUndo.Redo.Count()); throw new InvalidOperationException(); } if (3 != infoRedoUndo.Undo.Count()) { LogHelper.Log("Insert undo buffers {0}", infoRedoUndo.Undo.Count()); throw new InvalidOperationException(); } IBtreeOperation btreeOperation = treeApply.ApplyWithOutputAsync(sequenceNumber, infoRedoUndo.Redo, true, CancellationToken.None).Result; IBtreeOperation btreeOperation2 = treeApply.ApplyWithOutputAsync(sequenceNumber, infoRedoUndo.Redo, false, CancellationToken.None).Result; BtreeKey <int, Int32KeyBitConverter> keyDecodeOnly = new BtreeKey <int, Int32KeyBitConverter>(btreeOperation.Key.Bytes); BtreeKey <int, Int32KeyBitConverter> keyDecode = new BtreeKey <int, Int32KeyBitConverter>(btreeOperation2.Key.Bytes); BtreeValue <int, Int32ValueBitConverter> valueDecodeOnly = new BtreeValue <int, Int32ValueBitConverter>(btreeOperation.Value.Bytes); BtreeValue <int, Int32ValueBitConverter> valueDecode = new BtreeValue <int, Int32ValueBitConverter>(btreeOperation2.Value.Bytes); if (keyDecodeOnly.Key != keyDecode.Key || key.Key != keyDecode.Key) { throw new InvalidOperationException(); } if (valueDecodeOnly.Value != valueDecode.Value || valueDecode.Value != value.Value) { throw new InvalidOperationException(); } } DateTime dtEnd = DateTime.UtcNow; BtreeStatistics stats = tree.Statistics; LogHelper.Log("Items {0}", stats.RecordCount); LogHelper.Log((dtEnd - dtStart).TotalMilliseconds.ToString()); // // Close the btrees // LogHelper.Log("Begin close btree {0}", treeGuid); tree.CloseAsync(true, CancellationToken.None).Wait(); LogHelper.Log("End close btree {0}", treeGuid); LogHelper.Log("Begin close btree {0}", treeApplyGuid); treeApply.CloseAsync(true, CancellationToken.None).Wait(); LogHelper.Log("End close btree {0}", treeApplyGuid); }, "OpenCloseInsertApply"); }