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