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