private List<string> AddEntries(Tree tree, int treeNumber)
        {
            var entriesAdded = new List<string>();

            for (int j = 0; j < treeNumber; j++)
            {
                string key = "value_" + j;
                tree.Add(key, new MemoryStream(new byte[128]));
                entriesAdded.Add(key);
            }

            return entriesAdded;
        }
        private OverflowsAddResult AddOverflows(Transaction tx, Tree tree, int treeNumber, Random r)
        {
            var minOverflowSize = AbstractPager.NodeMaxSize - Constants.PageHeaderSize + 1;
            var entriesAdded = new List<string>();
            var overflowsAdded = 0;

            for (int j = 0; j < treeNumber; j++)
            {
                var overflowSize = r.Next(minOverflowSize, 10000);
                string key = "overflow_" + j;
                tree.Add(key, new MemoryStream(new byte[overflowSize]));

                entriesAdded.Add(key);
                overflowsAdded += tx.DataPager.GetNumberOfOverflowPages(overflowSize);
            }

            return new OverflowsAddResult
            {
                AddedEntries = entriesAdded,
                NumberOfOverflowPages = overflowsAdded
            };
        }
Ejemplo n.º 3
0
        private void put_doc(Random r, Guid etag, Dictionary<Guid, string> inMemoryKeysByEtag, HashSet<string> inMemoryKeys, string docKey, Tree docsTree, Tree metadataTree, Tree indexTree)
        {
            var docMetadata = new byte[r.Next(100, 7000)];

            Array.Copy(etag.ToByteArray(), docMetadata, 16);

            if (inMemoryKeys.Add(docKey) == false)
            {
                // update
                var existingEtag = inMemoryKeysByEtag.First(x => x.Value == docKey).Key;

                indexTree.Delete(existingEtag.ToString());
                inMemoryKeysByEtag.Remove(existingEtag);
            }

            docsTree.Add(docKey, get_doc_data(r));
            metadataTree.Add(docKey, docMetadata);
            indexTree.Add(etag.ToString(), docKey);

            inMemoryKeysByEtag[etag] = docKey;
        }