2 * Copyright (C) The Arvados Authors. All rights reserved.
4 * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
8 package org.arvados.client.logic.collection;
10 import org.arvados.client.exception.ArvadosClientException;
11 import org.junit.Assert;
12 import org.junit.Test;
14 import java.util.List;
16 import static junit.framework.TestCase.fail;
18 public class ManifestDecoderTest {
20 private ManifestDecoder manifestDecoder = new ManifestDecoder();
22 private static final String ONE_LINE_MANIFEST_TEXT = ". " +
23 "eff999f3b5158331eb44a9a93e3b36e1+67108864+Aad3839bea88bce22cbfe71cf4943de7dab3ea52a@5826180f " +
24 "db141bfd11f7da60dce9e5ee85a988b8+34038725+Ae8f48913fed782cbe463e0499ab37697ee06a2f8@5826180f " +
25 "0:101147589:rna.SRR948778.bam" +
28 private static final String MULTIPLE_LINES_MANIFEST_TEXT = ". " +
29 "930625b054ce894ac40596c3f5a0d947+33 " +
30 "0:0:a 0:0:b 0:33:output.txt\n" +
31 "./c d41d8cd98f00b204e9800998ecf8427e+0 0:0:d";
33 private static final String MANIFEST_TEXT_WITH_INVALID_FIRST_PATH_COMPONENT = "a" + ONE_LINE_MANIFEST_TEXT;
37 public void allLocatorsAndFileTokensAreExtractedFromSimpleManifest() {
39 List<ManifestStream> actual = manifestDecoder.decode(ONE_LINE_MANIFEST_TEXT);
41 // one manifest stream
42 Assert.assertEquals(1, actual.size());
44 ManifestStream manifest = actual.get(0);
46 Assert.assertEquals(2, manifest.getKeepLocators().size());
48 Assert.assertEquals(1, manifest.getFileTokens().size());
53 public void allLocatorsAndFileTokensAreExtractedFromComplexManifest() {
55 List<ManifestStream> actual = manifestDecoder.decode(MULTIPLE_LINES_MANIFEST_TEXT);
57 // two manifest streams
58 Assert.assertEquals(2, actual.size());
60 // first stream - 1 locator and 3 file tokens
61 ManifestStream firstManifestStream = actual.get(0);
62 Assert.assertEquals(1, firstManifestStream.getKeepLocators().size());
63 Assert.assertEquals(3, firstManifestStream.getFileTokens().size());
65 // second stream - 1 locator and 1 file token
66 ManifestStream secondManifestStream = actual.get(1);
67 Assert.assertEquals(1, secondManifestStream.getKeepLocators().size());
68 Assert.assertEquals(1, secondManifestStream.getFileTokens().size());
72 public void manifestTextWithInvalidStreamNameThrowsException() {
75 List<ManifestStream> actual = manifestDecoder.decode(MANIFEST_TEXT_WITH_INVALID_FIRST_PATH_COMPONENT);
77 } catch (ArvadosClientException e) {
78 Assert.assertEquals("Invalid first path component (expecting \".\")", e.getMessage());
84 public void emptyManifestTextThrowsException() {
85 String emptyManifestText = null;
88 List<ManifestStream> actual = manifestDecoder.decode(emptyManifestText);
90 } catch (ArvadosClientException e) {
91 Assert.assertEquals("Manifest text cannot be empty.", e.getMessage());
94 emptyManifestText = "";
96 List<ManifestStream> actual = manifestDecoder.decode(emptyManifestText);
98 } catch (ArvadosClientException e) {
99 Assert.assertEquals("Manifest text cannot be empty.", e.getMessage());