blob: db222f9c9cdee7b8a32793be365eb5c2b4e430c0 [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;
5import static org.junit.jupiter.api.Assertions.assertTrue;
6
7import com.adelean.inject.resources.junit.jupiter.GivenBinaryResource;
8import com.adelean.inject.resources.junit.jupiter.TestWithResources;
9import eu.mulk.jgvariant.core.Signature;
10import eu.mulk.jgvariant.core.Variant;
11import java.nio.ByteBuffer;
12import java.util.List;
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010013import java.util.Map;
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010014import org.junit.jupiter.api.Test;
15
16@TestWithResources
17class 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 Benkard329168c2021-12-28 01:20:05 +010060 Map.of(
61 "ostree.commit.timestamp",
62 new Variant(Signature.parse("t"), 1640537170L)))))),
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010063 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 Benkard4e8423d2021-12-19 22:56:09 +010096 @Test
97 void testPartPayloadDecoder() {
Matthias Andreas Benkardc981cde2021-12-30 20:37:39 +010098 var superblockDecoder = DeltaSuperblock.decoder();
99 var superblock = superblockDecoder.decode(ByteBuffer.wrap(deltaSuperblockBytes));
100
101 var decoder = DeltaPartPayload.decoder(superblock.entries().get(0));
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +0100102 var deltaPartPayload = decoder.decode(ByteBuffer.wrap(deltaPartPayloadBytes));
Matthias Andreas Benkardc981cde2021-12-30 20:37:39 +0100103
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +0100104 System.out.println(deltaPartPayload);
105 }
106}