diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..b474ab7de --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.golden -text diff --git a/lsm-tree.cabal b/lsm-tree.cabal index 4df43071c..7465fc2c2 100644 --- a/lsm-tree.cabal +++ b/lsm-tree.cabal @@ -375,6 +375,7 @@ test-suite lsm-tree-test Test.Database.LSMTree.Internal.Serialise Test.Database.LSMTree.Internal.Serialise.Class Test.Database.LSMTree.Internal.Snapshot.Codec + Test.Database.LSMTree.Internal.Snapshot.Codec.Golden Test.Database.LSMTree.Internal.Snapshot.FS Test.Database.LSMTree.Internal.Vector Test.Database.LSMTree.Internal.Vector.Growing @@ -434,6 +435,7 @@ test-suite lsm-tree-test , split , stm , tasty + , tasty-golden , tasty-hunit , tasty-quickcheck , temporary diff --git a/src/Database/LSMTree/Internal/Config.hs b/src/Database/LSMTree/Internal/Config.hs index ff0e7f771..9c9a31d6f 100644 --- a/src/Database/LSMTree/Internal/Config.hs +++ b/src/Database/LSMTree/Internal/Config.hs @@ -156,7 +156,8 @@ data MergePolicy = {- TODO: disabled for now | MergePolicyLevelling -} - deriving stock (Show, Eq) + -- @Bounded@ and @Enum@ instances are required for test-case enumeration. + deriving stock (Bounded, Enum, Eq, Show) instance NFData MergePolicy where rnf MergePolicyLazyLevelling = () @@ -166,7 +167,8 @@ instance NFData MergePolicy where -------------------------------------------------------------------------------} data SizeRatio = Four - deriving stock (Show, Eq) + -- @Bounded@ and @Enum@ instances are required for test-case enumeration. + deriving stock (Bounded, Enum, Eq, Show) instance NFData SizeRatio where rnf Four = () @@ -303,7 +305,8 @@ data FencePointerIndex = -- | Use an ordinary fence pointer index, without any constraints on -- serialised keys. | OrdinaryIndex - deriving stock (Show, Eq) + -- @Bounded@ and @Enum@ instances are required for test-case enumeration. + deriving stock (Bounded, Enum, Eq, Show) instance NFData FencePointerIndex where rnf CompactIndex = () @@ -355,7 +358,7 @@ data DiskCachePolicy = -- Use this policy if expected access pattern for the table has poor -- spatial or temporal locality, such as uniform random access. | DiskCacheNone - deriving stock (Eq, Show) + deriving stock (Show, Eq) instance NFData DiskCachePolicy where rnf DiskCacheAll = () @@ -399,7 +402,8 @@ data MergeSchedule = -- merges are fully completed in time for when new merges are started on the -- same level. | Incremental - deriving stock (Eq, Show) + -- @Bounded@ and @Enum@ instances are required for test-case enumeration. + deriving stock (Bounded, Enum, Eq, Show) instance NFData MergeSchedule where rnf OneShot = () diff --git a/src/Database/LSMTree/Internal/Merge.hs b/src/Database/LSMTree/Internal/Merge.hs index b779e5b6d..8a268662e 100644 --- a/src/Database/LSMTree/Internal/Merge.hs +++ b/src/Database/LSMTree/Internal/Merge.hs @@ -73,7 +73,8 @@ data MergeState = | Closed data Level = MidLevel | LastLevel - deriving stock (Eq, Show) + -- @Bounded@ and @Enum@ instances are required for test-case enumeration. + deriving stock (Bounded, Enum, Eq, Show) instance NFData Level where rnf MidLevel = () diff --git a/src/Database/LSMTree/Internal/MergingRun.hs b/src/Database/LSMTree/Internal/MergingRun.hs index cf95aff51..328611581 100644 --- a/src/Database/LSMTree/Internal/MergingRun.hs +++ b/src/Database/LSMTree/Internal/MergingRun.hs @@ -70,7 +70,7 @@ instance RefCounted m (MergingRun m h) where getRefCounter = mergeRefCounter data MergePolicyForLevel = LevelTiering | LevelLevelling - deriving stock (Show, Eq) + deriving stock (Bounded, Enum, Eq, Show) instance NFData MergePolicyForLevel where rnf LevelTiering = () diff --git a/src/Database/LSMTree/Internal/Snapshot.hs b/src/Database/LSMTree/Internal/Snapshot.hs index c6307318f..83c7cf360 100644 --- a/src/Database/LSMTree/Internal/Snapshot.hs +++ b/src/Database/LSMTree/Internal/Snapshot.hs @@ -73,7 +73,7 @@ newtype SnapshotLabel = SnapshotLabel Text -- TODO: revisit if we need three table types. data SnapshotTableType = SnapNormalTable | SnapMonoidalTable | SnapFullTable - deriving stock (Show, Eq) + deriving stock (Bounded, Enum, Eq, Show) instance NFData SnapshotTableType where rnf SnapNormalTable = () diff --git a/test/Test/Database/LSMTree/Internal/Snapshot/Codec.hs b/test/Test/Database/LSMTree/Internal/Snapshot/Codec.hs index e6af9189d..61ce89281 100644 --- a/test/Test/Database/LSMTree/Internal/Snapshot/Codec.hs +++ b/test/Test/Database/LSMTree/Internal/Snapshot/Codec.hs @@ -22,6 +22,8 @@ import Database.LSMTree.Internal.MergingRun import Database.LSMTree.Internal.RunNumber import Database.LSMTree.Internal.Snapshot import Database.LSMTree.Internal.Snapshot.Codec +import Test.Database.LSMTree.Internal.Snapshot.Codec.Golden + (goldenFileTests) import Test.Tasty import Test.Tasty.QuickCheck import Test.Util.Arbitrary @@ -47,6 +49,7 @@ tests = testGroup "Test.Database.LSMTree.Internal.Snapshot.Codec" [ testAll $ \(p :: Proxy a) -> testGroup (show $ typeRep p) $ prop_arbitraryAndShrinkPreserveInvariant @a deepseqInvariant + , goldenFileTests ] {------------------------------------------------------------------------------- diff --git a/test/Test/Database/LSMTree/Internal/Snapshot/Codec/Golden.hs b/test/Test/Database/LSMTree/Internal/Snapshot/Codec/Golden.hs new file mode 100644 index 000000000..f6a800986 --- /dev/null +++ b/test/Test/Database/LSMTree/Internal/Snapshot/Codec/Golden.hs @@ -0,0 +1,255 @@ +{-# LANGUAGE OverloadedStrings #-} +module Test.Database.LSMTree.Internal.Snapshot.Codec.Golden + (goldenFileTests) where + +import Codec.CBOR.Write (toLazyByteString) +import Control.Monad (when) +import qualified Data.ByteString.Lazy as BSL (writeFile) +import Data.Foldable (fold) +import Data.Vector (Vector) +import qualified Data.Vector as V +import Database.LSMTree.Common (BloomFilterAlloc (..), + DiskCachePolicy (..), NumEntries (..), TableConfig (..), + WriteBufferAlloc (..), defaultTableConfig) +import Database.LSMTree.Internal.Config (FencePointerIndex (..), + MergePolicy (..), MergeSchedule (..), SizeRatio (..)) +import Database.LSMTree.Internal.Merge (Level (..)) +import Database.LSMTree.Internal.MergingRun (MergePolicyForLevel (..), + NumRuns (..)) +import Database.LSMTree.Internal.RunNumber (RunNumber (..)) +import Database.LSMTree.Internal.Snapshot +import Database.LSMTree.Internal.Snapshot.Codec +import qualified System.FS.API as FS +import System.FS.API.Types (FsPath, MountPoint (..), fsToFilePath, + mkFsPath, (<.>)) +import System.FS.IO (HandleIO, ioHasFS) +import qualified Test.Tasty as Tasty +import Test.Tasty (TestName, TestTree, testGroup) +import qualified Test.Tasty.Golden as Au + +-- | +-- Compare the serialization of snapshot metadata with a known reference file. +goldenFileTests :: TestTree +goldenFileTests = handleOutputFiles . testGroup "Golden File Comparisons" $ + [ testCodecSnapshotLabel + , testCodecSnapshotTableType + , testCodecTableConfig + , testCodecSnapLevels + ] + +-- | +-- The mount point is defined as the location of the golden file data directory +-- relative to the project root. +goldenDataMountPoint :: MountPoint +goldenDataMountPoint = MountPoint "test/golden-file-data/snapshot-codec" + +-- | +-- Delete output files on test-case success. +-- Change the option here if this is undesireable. +handleOutputFiles :: TestTree -> TestTree +handleOutputFiles = Tasty.localOption Au.OnPass + +-- | +-- Internally, the function will infer the correct filepath names. +snapshotCodecTest + :: String -- ^ Name of the test + -> SnapshotMetaData -- ^ Data to be serialized + -> TestTree +snapshotCodecTest name datum = + let -- Various paths + -- + -- There are three paths for both the checksum and the snapshot files: + -- 1. The filepath of type @FsPath@ to which data is written. + -- 2. The filepath of type @FilePath@ from which data is read. + -- 3. The filepath of type @FilePath@ against which the data is compared. + -- + -- These file types' bindings have the following infix annotations, respectively: + -- 1. (Fs) for FsPath + -- 2. (Hs) for "Haskell" path + -- 3. (Au) for "Golden file" path + snapshotFsPath = mkFsPath [name] <.> "snapshot" + snapshotHsPath = fsToFilePath goldenDataMountPoint snapshotFsPath + snapshotAuPath = snapshotHsPath <> ".golden" + + -- IO actions + runnerIO :: FS.HasFS IO HandleIO + runnerIO = ioHasFS goldenDataMountPoint + removeIfExists :: FsPath -> IO () + removeIfExists fp = + FS.doesFileExist runnerIO fp >>= (`when` (FS.removeFile runnerIO fp)) + outputAction :: IO () + outputAction = do + -- Ensure that if the output file already exists, we remove it and + -- re-write out the serialized data. This ensures that there are no + -- false-positives, false-negatives, or irrelavent I/O exceptions. + removeIfExists snapshotFsPath + BSL.writeFile snapshotHsPath . toLazyByteString $ encode datum + + in Au.goldenVsFile name snapshotAuPath snapshotHsPath outputAction + +testCodecSnapshotLabel :: TestTree +testCodecSnapshotLabel = + let assembler (tagA, valA) = + let (tagB, valB) = basicSnapshotTableType + (tagC, valC) = basicTableConfig + (tagD, valD) = basicSnapLevels + in (fold [tagA, tagB, tagC, tagD ], SnapshotMetaData valA valB valC valD) + in testCodecBuilder "SnapshotLabels" $ assembler <$> enumerateSnapshotLabel + +testCodecSnapshotTableType :: TestTree +testCodecSnapshotTableType = + let assembler (tagB, valB) = + let (tagA, valA) = basicSnapshotLabel + (tagC, valC) = basicTableConfig + (tagD, valD) = basicSnapLevels + in (fold [tagA, tagB, tagC, tagD ], SnapshotMetaData valA valB valC valD) + in testCodecBuilder "SnapshotTables" $ assembler <$> enumerateSnapshotTableType + +testCodecTableConfig :: TestTree +testCodecTableConfig = + let assembler (tagC, valC) = + let (tagA, valA) = basicSnapshotLabel + (tagB, valB) = basicSnapshotTableType + (tagD, valD) = basicSnapLevels + in (fold [tagA, tagB, tagC, tagD ], SnapshotMetaData valA valB valC valD) + in testCodecBuilder "SnapshotConfig" $ assembler <$> enumerateTableConfig + +testCodecSnapLevels :: TestTree +testCodecSnapLevels = + let assembler (tagD, valD) = + let (tagA, valA) = basicSnapshotLabel + (tagB, valB) = basicSnapshotTableType + (tagC, valC) = basicTableConfig + in (fold [tagA, tagB, tagC, tagD ], SnapshotMetaData valA valB valC valD) + in testCodecBuilder "SnapshotLevels" $ assembler <$> enumerateSnapLevels + +testCodecBuilder :: TestName -> [(ComponentAnnotation, SnapshotMetaData)] -> TestTree +testCodecBuilder tName metadata = + testGroup tName $ uncurry snapshotCodecTest <$> metadata + +type ComponentAnnotation = String + +{---------------- +Defaults used when the SnapshotMetaData sub-component is not under test +----------------} + +basicSnapshotLabel :: (ComponentAnnotation, SnapshotLabel) +basicSnapshotLabel = head enumerateSnapshotLabel + +basicSnapshotTableType :: (ComponentAnnotation, SnapshotTableType) +basicSnapshotTableType = head enumerateSnapshotTableType + +basicTableConfig :: (ComponentAnnotation, TableConfig) +basicTableConfig = ("T", defaultTableConfig) + +basicSnapLevels :: (ComponentAnnotation, SnapLevels RunNumber) +basicSnapLevels = head enumerateSnapLevels + +{---------------- +Enumeration of SnapshotMetaData sub-components +----------------} + +enumerateSnapshotLabel :: [(ComponentAnnotation, SnapshotLabel)] +enumerateSnapshotLabel = + [ ("Bs", SnapshotLabel "UserProvidedLabel") + , ("Bn", SnapshotLabel "") + ] + +enumerateSnapshotTableType :: [(ComponentAnnotation, SnapshotTableType)] +enumerateSnapshotTableType = + [ ("Nn", SnapNormalTable) + , ("Nm", SnapMonoidalTable) + , ("Nf", SnapFullTable) + ] + +enumerateTableConfig :: [(ComponentAnnotation, TableConfig)] +enumerateTableConfig = + [ ( fold [ "T", a, b, c, d, e, f, g ] + , TableConfig + policy + ratio + allocs + bloom + fence + cache + merge + ) + | (a, policy) <- [("", MergePolicyLazyLevelling)] + , (b, ratio ) <- [("", Four)] + , (c, allocs) <- fmap (AllocNumEntries . NumEntries) <$> [("", magicNumber1)] + , (d, bloom ) <- enumerateBloomFilterAlloc + , (e, fence ) <- [("Ic", CompactIndex), ("Io", OrdinaryIndex)] + , (f, cache ) <- enumerateDiskCachePolicy + , (g, merge ) <- [("Go", OneShot), ("Gi", Incremental)] + ] + +enumerateSnapLevels :: [(ComponentAnnotation, SnapLevels RunNumber)] +enumerateSnapLevels = fmap (SnapLevels . V.singleton) <$> enumerateSnapLevel + +{---------------- +Enumeration of SnapLevel sub-components +----------------} + +enumerateSnapLevel :: [(ComponentAnnotation, SnapLevel RunNumber)] +enumerateSnapLevel = do + (a, run) <- enumerateSnapIncomingRun + (b, vec) <- enumerateVectorRunNumber + [(a <> b, SnapLevel run vec)] + +enumerateSnapIncomingRun :: [(ComponentAnnotation, SnapIncomingRun RunNumber)] +enumerateSnapIncomingRun = + let + inSnaps = + [ (fold ["Rm", "P", a, b], SnapMergingRun policy numRuns entries credits sState) + | (a, policy ) <- [("t", LevelTiering), ("g", LevelLevelling)] + , numRuns <- NumRuns <$> [ magicNumber1 ] + , entries <- NumEntries <$> [ magicNumber2 ] + , credits <- UnspentCredits <$> [ magicNumber1 ] + , (b, sState ) <- enumerateSnapMergingRunState + ] + in fold + [ [("Rs", SnapSingleRun enumerateRunNumbers)] + , inSnaps + ] + +enumerateSnapMergingRunState :: [(ComponentAnnotation, SnapMergingRunState RunNumber)] +enumerateSnapMergingRunState = ("Mc", SnapCompletedMerge enumerateRunNumbers) : + [ (fold ["Mo",a,b,c], SnapOngoingMerge runVec credits level) + | (a, runVec ) <- enumerateVectorRunNumber + , (b, credits) <- [("" , SpentCredits magicNumber1 )] + , (c, level ) <- [("Lm", MidLevel), ("L0", LastLevel)] + ] + +enumerateVectorRunNumber :: [(ComponentAnnotation, Vector RunNumber)] +enumerateVectorRunNumber = + [ ("V0", mempty) + , ("V1", V.fromList [RunNumber magicNumber1]) + , ("V2", V.fromList [RunNumber magicNumber1, RunNumber magicNumber2 ]) + ] + +{---------------- +Enumeration of SnapshotMetaData sub-sub-components and so on... +----------------} + +enumerateBloomFilterAlloc :: [(ComponentAnnotation, BloomFilterAlloc)] +enumerateBloomFilterAlloc = + [ ("Af",AllocFixed magicNumber3) + , ("Ar",AllocRequestFPR pi) + , ("Am",AllocMonkey magicNumber3 . NumEntries $ magicNumber3 `div` 4) + ] + +enumerateDiskCachePolicy :: [(ComponentAnnotation, DiskCachePolicy)] +enumerateDiskCachePolicy = + [ ("Da", DiskCacheAll) + , ("Dn", DiskCacheNone) + , ("Db", DiskCacheLevelsAtOrBelow 1) + ] + +enumerateRunNumbers :: RunNumber +enumerateRunNumbers = RunNumber magicNumber2 + +-- Randomly chosen numbers +magicNumber1, magicNumber2, magicNumber3 :: Enum e => e +magicNumber1 = toEnum 42 +magicNumber2 = toEnum 88 +magicNumber3 = toEnum 1024 diff --git a/test/golden-file-data/snapshot-codec/BnNnTRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BnNnTRsV0.snapshot.golden new file mode 100644 index 000000000..c53eb7255 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BnNnTRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNfTRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNfTRsV0.snapshot.golden new file mode 100644 index 000000000..4143c435f Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNfTRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNmTRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNmTRsV0.snapshot.golden new file mode 100644 index 000000000..3b663833a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNmTRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIcDaGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIcDaGiRsV0.snapshot.golden new file mode 100644 index 000000000..e3393e07a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIcDaGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIcDaGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIcDaGoRsV0.snapshot.golden new file mode 100644 index 000000000..a1a9f4616 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIcDaGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIcDbGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIcDbGiRsV0.snapshot.golden new file mode 100644 index 000000000..4e963ddbe Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIcDbGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIcDbGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIcDbGoRsV0.snapshot.golden new file mode 100644 index 000000000..16344b758 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIcDbGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIcDnGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIcDnGiRsV0.snapshot.golden new file mode 100644 index 000000000..6f089b1dc Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIcDnGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIcDnGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIcDnGoRsV0.snapshot.golden new file mode 100644 index 000000000..4787cf33a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIcDnGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIoDaGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIoDaGiRsV0.snapshot.golden new file mode 100644 index 000000000..865a83918 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIoDaGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIoDaGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIoDaGoRsV0.snapshot.golden new file mode 100644 index 000000000..ee8ddc296 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIoDaGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIoDbGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIoDbGiRsV0.snapshot.golden new file mode 100644 index 000000000..bed01fce6 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIoDbGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIoDbGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIoDbGoRsV0.snapshot.golden new file mode 100644 index 000000000..5c75df849 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIoDbGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIoDnGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIoDnGiRsV0.snapshot.golden new file mode 100644 index 000000000..6f263c6ba Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIoDnGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAfIoDnGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAfIoDnGoRsV0.snapshot.golden new file mode 100644 index 000000000..13490eae8 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAfIoDnGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIcDaGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIcDaGiRsV0.snapshot.golden new file mode 100644 index 000000000..5def64a69 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIcDaGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIcDaGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIcDaGoRsV0.snapshot.golden new file mode 100644 index 000000000..cf52a1011 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIcDaGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIcDbGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIcDbGiRsV0.snapshot.golden new file mode 100644 index 000000000..345872432 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIcDbGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIcDbGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIcDbGoRsV0.snapshot.golden new file mode 100644 index 000000000..be0cae615 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIcDbGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIcDnGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIcDnGiRsV0.snapshot.golden new file mode 100644 index 000000000..0c0c9e147 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIcDnGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIcDnGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIcDnGoRsV0.snapshot.golden new file mode 100644 index 000000000..0c8fb5441 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIcDnGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIoDaGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIoDaGiRsV0.snapshot.golden new file mode 100644 index 000000000..20887ba36 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIoDaGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIoDaGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIoDaGoRsV0.snapshot.golden new file mode 100644 index 000000000..02aef44f0 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIoDaGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIoDbGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIoDbGiRsV0.snapshot.golden new file mode 100644 index 000000000..c55aeda47 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIoDbGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIoDbGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIoDbGoRsV0.snapshot.golden new file mode 100644 index 000000000..4993432ec Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIoDbGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIoDnGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIoDnGiRsV0.snapshot.golden new file mode 100644 index 000000000..ed10da667 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIoDnGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTAmIoDnGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTAmIoDnGoRsV0.snapshot.golden new file mode 100644 index 000000000..b997f5cae Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTAmIoDnGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIcDaGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIcDaGiRsV0.snapshot.golden new file mode 100644 index 000000000..41311d9cc Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIcDaGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIcDaGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIcDaGoRsV0.snapshot.golden new file mode 100644 index 000000000..0fc62dad3 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIcDaGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIcDbGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIcDbGiRsV0.snapshot.golden new file mode 100644 index 000000000..2428f576a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIcDbGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIcDbGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIcDbGoRsV0.snapshot.golden new file mode 100644 index 000000000..b8e370649 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIcDbGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIcDnGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIcDnGiRsV0.snapshot.golden new file mode 100644 index 000000000..28e9f2b43 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIcDnGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIcDnGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIcDnGoRsV0.snapshot.golden new file mode 100644 index 000000000..56948c225 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIcDnGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIoDaGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIoDaGiRsV0.snapshot.golden new file mode 100644 index 000000000..6e55baca8 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIoDaGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIoDaGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIoDaGoRsV0.snapshot.golden new file mode 100644 index 000000000..5e4acac40 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIoDaGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIoDbGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIoDbGiRsV0.snapshot.golden new file mode 100644 index 000000000..f38c0bb5d Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIoDbGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIoDbGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIoDbGoRsV0.snapshot.golden new file mode 100644 index 000000000..e84b9824a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIoDbGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIoDnGiRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIoDnGiRsV0.snapshot.golden new file mode 100644 index 000000000..8ec65fc79 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIoDnGiRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTArIoDnGoRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTArIoDnGoRsV0.snapshot.golden new file mode 100644 index 000000000..80be9422c Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTArIoDnGoRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV0.snapshot.golden new file mode 100644 index 000000000..a758e8d88 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV1.snapshot.golden new file mode 100644 index 000000000..31ba42a7d Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV2.snapshot.golden new file mode 100644 index 000000000..f16423d0b Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMcV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V0.snapshot.golden new file mode 100644 index 000000000..b4579b2ce Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V1.snapshot.golden new file mode 100644 index 000000000..816fcd2fa Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V2.snapshot.golden new file mode 100644 index 000000000..f60545a04 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0L0V2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV0.snapshot.golden new file mode 100644 index 000000000..0758c4b9b Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV1.snapshot.golden new file mode 100644 index 000000000..5e1ef9534 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV2.snapshot.golden new file mode 100644 index 000000000..63a3ef440 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV0LmV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V0.snapshot.golden new file mode 100644 index 000000000..a05907e1a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V1.snapshot.golden new file mode 100644 index 000000000..6e51875dd Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V2.snapshot.golden new file mode 100644 index 000000000..1798b7657 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1L0V2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV0.snapshot.golden new file mode 100644 index 000000000..3dd805c39 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV1.snapshot.golden new file mode 100644 index 000000000..cbec2174a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV2.snapshot.golden new file mode 100644 index 000000000..cc6b8bd98 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV1LmV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V0.snapshot.golden new file mode 100644 index 000000000..b653db0eb Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V1.snapshot.golden new file mode 100644 index 000000000..979c32f92 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V2.snapshot.golden new file mode 100644 index 000000000..b2c3651c0 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2L0V2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV0.snapshot.golden new file mode 100644 index 000000000..d623b0726 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV1.snapshot.golden new file mode 100644 index 000000000..53574647c Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV2.snapshot.golden new file mode 100644 index 000000000..1d8b57788 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPgMoV2LmV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV0.snapshot.golden new file mode 100644 index 000000000..5e2dadbab Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV1.snapshot.golden new file mode 100644 index 000000000..df3f57d53 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV2.snapshot.golden new file mode 100644 index 000000000..c98a057ac Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMcV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V0.snapshot.golden new file mode 100644 index 000000000..e56120764 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V1.snapshot.golden new file mode 100644 index 000000000..ed0aeca00 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V2.snapshot.golden new file mode 100644 index 000000000..8885fd81b Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0L0V2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV0.snapshot.golden new file mode 100644 index 000000000..20bb66722 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV1.snapshot.golden new file mode 100644 index 000000000..0dbf76b7d Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV2.snapshot.golden new file mode 100644 index 000000000..597ee642d Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV0LmV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V0.snapshot.golden new file mode 100644 index 000000000..1165ff702 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V1.snapshot.golden new file mode 100644 index 000000000..76100dc0a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V2.snapshot.golden new file mode 100644 index 000000000..407b99a04 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1L0V2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV0.snapshot.golden new file mode 100644 index 000000000..4eb5609d7 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV1.snapshot.golden new file mode 100644 index 000000000..0033c97e5 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV2.snapshot.golden new file mode 100644 index 000000000..683940d8c Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV1LmV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V0.snapshot.golden new file mode 100644 index 000000000..5b948a1a6 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V1.snapshot.golden new file mode 100644 index 000000000..4ada522c3 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V2.snapshot.golden new file mode 100644 index 000000000..13c8d7554 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2L0V2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV0.snapshot.golden new file mode 100644 index 000000000..0938af74e Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV1.snapshot.golden new file mode 100644 index 000000000..62c492e6a Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV2.snapshot.golden new file mode 100644 index 000000000..d707f29b8 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRmPtMoV2LmV2.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRsV0.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRsV0.snapshot.golden new file mode 100644 index 000000000..bb56dd6c8 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRsV0.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRsV1.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRsV1.snapshot.golden new file mode 100644 index 000000000..8543e2722 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRsV1.snapshot.golden differ diff --git a/test/golden-file-data/snapshot-codec/BsNnTRsV2.snapshot.golden b/test/golden-file-data/snapshot-codec/BsNnTRsV2.snapshot.golden new file mode 100644 index 000000000..8cd9d12c2 Binary files /dev/null and b/test/golden-file-data/snapshot-codec/BsNnTRsV2.snapshot.golden differ