Base class for all FoundationDB tests
        public static async Task DumpLocation(IFdbDatabase db, ISubspaceLocation path, CancellationToken ct)
        {
            Assert.That(db, Is.Not.Null);

            using (var tr = await db.BeginTransactionAsync(ct))
            {
                tr.StopLogging();

                var subspace = await path.Resolve(tr);

                if (subspace == null)
                {
                    FdbTest.Log($"Dumping content of subspace {path}:");
                    FdbTest.Log("> EMPTY!");
                    return;
                }

                await DumpSubspace(tr, subspace).ConfigureAwait(false);

                if (path.Prefix.Count == 0)
                {
                    var names = await db.DirectoryLayer.TryListAsync(tr, path.Path);

                    if (names != null)
                    {
                        foreach (var name in names)
                        {
                            var child = await db.DirectoryLayer.TryOpenAsync(tr, path.Path[name]);

                            if (child != null)
                            {
                                await DumpSubspace(tr, child);
                            }
                        }
                    }
                }
            }
        }
        public static async Task DumpSubspace(IFdbReadOnlyTransaction tr, IKeySubspace subspace)
        {
            Assert.That(tr, Is.Not.Null);
            Assert.That(subspace, Is.Not.Null);

            FdbTest.Log($"Dumping content of {subspace} at {subspace.GetPrefix():K}:");
            int count = 0;
            await tr
            .GetRange(KeyRange.StartsWith(subspace.GetPrefix()))
            .ForEachAsync((kvp) =>
            {
                var key = subspace.ExtractKey(kvp.Key, boundCheck: true);
                ++count;
                string keyDump;
                try
                {
                    // attempts decoding it as a tuple
                    keyDump = TuPack.Unpack(key).ToString() !;
                }
                catch (Exception)
                {
                    // not a tuple, dump as bytes
                    keyDump = "'" + key.ToString() + "'";
                }

                FdbTest.Log("- " + keyDump + " = " + kvp.Value.ToString());
            });

            if (count == 0)
            {
                FdbTest.Log("> empty !");
            }
            else
            {
                FdbTest.Log("> Found " + count + " values");
            }
        }