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