Skip to content

Commit

Permalink
Updates to descriptor
Browse files Browse the repository at this point in the history
  • Loading branch information
sydp committed Apr 1, 2024
1 parent 3c43dea commit 403496d
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
8 changes: 7 additions & 1 deletion dfindexeddb/leveldb/descriptor.py
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,8 @@ def GetVersions(self) -> Generator[LevelDBVersion, None, None]:
current_log = None

for version_edit in self.GetVersionEdits():
current_log = f'{version_edit.log_number:06d}.log'
if version_edit.log_number:
current_log = f'{version_edit.log_number:06d}.log'

for new_file in version_edit.new_files:
active_files[new_file.level][f'{new_file.number:06d}.ldb'] = new_file
Expand All @@ -380,3 +381,8 @@ def GetVersions(self) -> Generator[LevelDBVersion, None, None]:
deleted_files=dict(deleted_files),
version_edit_offset=version_edit.offset,
last_sequence=version_edit.last_sequence)

def GetLatestVersion(self) -> LevelDBVersion:
"""Returns the latest LevelDBVersion instance."""
*_, latest = self.GetVersions()
return latest
35 changes: 35 additions & 0 deletions tests/dfindexeddb/leveldb/descriptor.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,38 @@ def test_versionedit(self):
self.assertEqual(version_edits[1].compact_pointers, [])
self.assertEqual(version_edits[1].new_files, [])
self.assertEqual(version_edits[1].deleted_files, [])

def test_versions(self):
"""Tests the GetVersions method."""
manifest_file = descriptor.FileReader(
'./test_data/leveldb/100k keys delete/MANIFEST-000002')
versions = list(manifest_file.GetVersions())
self.assertEqual(len(versions), 3)
self.assertEqual(versions[0].active_files, {})
self.assertEqual(versions[0].deleted_files, {})
self.assertEqual(versions[0].current_log, None)
self.assertEqual(versions[0].last_sequence, None)

self.assertEqual(len(versions[2].active_files), 1)
self.assertIn(2, versions[2].active_files)
self.assertIn('000005.ldb', versions[2].active_files[2])
self.assertEqual(versions[2].deleted_files, {})
self.assertEqual(versions[2].current_log, '000004.log')
self.assertEqual(versions[2].last_sequence, 85673)

def test_latestversion(self):
"""Tests the GetLatestVersion method."""
manifest_file = descriptor.FileReader(
'./test_data/leveldb/100k keys delete/MANIFEST-000002')
latest_version = manifest_file.GetLatestVersion()

self.assertEqual(len(latest_version.active_files), 1)
self.assertIn(2, latest_version.active_files)
self.assertIn('000005.ldb', latest_version.active_files[2])
self.assertEqual(latest_version.deleted_files, {})
self.assertEqual(latest_version.current_log, '000004.log')
self.assertEqual(latest_version.last_sequence, 85673)


if __name__ == '__main__':
unittest.main()

0 comments on commit 403496d

Please sign in to comment.