Matthias Andreas Benkard | b5d657a | 2022-02-03 21:14:30 +0100 | [diff] [blame] | 1 | // SPDX-FileCopyrightText: © 2021 Matthias Andreas Benkard <code@mail.matthias.benkard.de> |
| 2 | // |
| 3 | // SPDX-License-Identifier: LGPL-3.0-or-later |
| 4 | |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 5 | package eu.mulk.jgvariant.ostree; |
| 6 | |
| 7 | import static org.junit.jupiter.api.Assertions.assertAll; |
| 8 | import static org.junit.jupiter.api.Assertions.assertEquals; |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 9 | |
| 10 | import com.adelean.inject.resources.junit.jupiter.GivenBinaryResource; |
| 11 | import com.adelean.inject.resources.junit.jupiter.TestWithResources; |
| 12 | import eu.mulk.jgvariant.core.Signature; |
| 13 | import eu.mulk.jgvariant.core.Variant; |
| 14 | import java.nio.ByteBuffer; |
| 15 | import java.util.List; |
Matthias Andreas Benkard | 329168c | 2021-12-28 01:20:05 +0100 | [diff] [blame] | 16 | import java.util.Map; |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 17 | import org.junit.jupiter.api.Test; |
| 18 | |
| 19 | @TestWithResources |
| 20 | class OstreeDecoderTest { |
| 21 | |
| 22 | @GivenBinaryResource("/ostree/summary") |
| 23 | byte[] summaryBytes; |
| 24 | |
| 25 | @GivenBinaryResource( |
| 26 | "/ostree/objects/3d/3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f.commit") |
| 27 | byte[] commitBytes; |
| 28 | |
| 29 | @GivenBinaryResource( |
| 30 | "/ostree/objects/14/c9b958ac59df4979095a3485b4da5a045fe8737ffdba8cfbfff24988b238f7.dirtree") |
| 31 | byte[] dirTreeBytes; |
| 32 | |
| 33 | @GivenBinaryResource( |
| 34 | "/ostree/objects/48/cc6a2ecdab284b9d1e5b0e875c905866ff32f65ee1e857df0e691285d6f14c.dirmeta") |
| 35 | byte[] dirMetaBytes; |
| 36 | |
| 37 | @GivenBinaryResource("/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/superblock") |
| 38 | byte[] deltaSuperblockBytes; |
| 39 | |
| 40 | @GivenBinaryResource("/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/0") |
| 41 | byte[] deltaPartPayloadBytes; |
| 42 | |
| 43 | @Test |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 44 | void testSummaryDecoder() { |
| 45 | var decoder = Summary.decoder(); |
| 46 | var summary = decoder.decode(ByteBuffer.wrap(summaryBytes)); |
| 47 | assertAll( |
| 48 | () -> |
| 49 | assertEquals( |
| 50 | List.of( |
| 51 | new Summary.Entry( |
| 52 | "mulkos/1.x/amd64", |
| 53 | new Summary.Entry.Value( |
| 54 | 214, |
| 55 | Checksum.ofHex( |
| 56 | "66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350"), |
| 57 | new Metadata( |
Matthias Andreas Benkard | 329168c | 2021-12-28 01:20:05 +0100 | [diff] [blame] | 58 | Map.of( |
| 59 | "ostree.commit.timestamp", |
| 60 | new Variant(Signature.parse("t"), 1640537170L)))))), |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 61 | summary.entries())); |
| 62 | // FIXME: check metadata field |
| 63 | System.out.println(summary); |
| 64 | } |
| 65 | |
| 66 | @Test |
| 67 | void testCommitDecoder() { |
| 68 | var decoder = Commit.decoder(); |
| 69 | var commit = decoder.decode(ByteBuffer.wrap(commitBytes)); |
| 70 | System.out.println(commit); |
| 71 | } |
| 72 | |
| 73 | @Test |
| 74 | void testDirTreeDecoder() { |
| 75 | var decoder = DirTree.decoder(); |
| 76 | var dirTree = decoder.decode(ByteBuffer.wrap(dirTreeBytes)); |
| 77 | System.out.println(dirTree); |
| 78 | } |
| 79 | |
| 80 | @Test |
| 81 | void testDirMetaDecoder() { |
| 82 | var decoder = DirMeta.decoder(); |
| 83 | var dirMeta = decoder.decode(ByteBuffer.wrap(dirMetaBytes)); |
| 84 | System.out.println(dirMeta); |
| 85 | } |
| 86 | |
| 87 | @Test |
| 88 | void testSuperblockDecoder() { |
| 89 | var decoder = DeltaSuperblock.decoder(); |
| 90 | var deltaSuperblock = decoder.decode(ByteBuffer.wrap(deltaSuperblockBytes)); |
| 91 | System.out.println(deltaSuperblock); |
| 92 | } |
| 93 | |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 94 | @Test |
| 95 | void testPartPayloadDecoder() { |
Matthias Andreas Benkard | c981cde | 2021-12-30 20:37:39 +0100 | [diff] [blame] | 96 | var superblockDecoder = DeltaSuperblock.decoder(); |
| 97 | var superblock = superblockDecoder.decode(ByteBuffer.wrap(deltaSuperblockBytes)); |
| 98 | |
| 99 | var decoder = DeltaPartPayload.decoder(superblock.entries().get(0)); |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 100 | var deltaPartPayload = decoder.decode(ByteBuffer.wrap(deltaPartPayloadBytes)); |
Matthias Andreas Benkard | c981cde | 2021-12-30 20:37:39 +0100 | [diff] [blame] | 101 | |
Matthias Andreas Benkard | 4e8423d | 2021-12-19 22:56:09 +0100 | [diff] [blame] | 102 | System.out.println(deltaPartPayload); |
| 103 | } |
| 104 | } |