1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 package org.eclipse.jgit.lfs.server.fs;
44
45 import static org.junit.Assert.assertEquals;
46 import static org.junit.Assert.fail;
47
48 import java.io.IOException;
49 import java.nio.file.Path;
50 import java.nio.file.Paths;
51 import java.text.MessageFormat;
52
53 import org.apache.http.client.ClientProtocolException;
54 import org.eclipse.jgit.lfs.lib.AnyLongObjectId;
55 import org.eclipse.jgit.lfs.test.LongObjectIdTestUtils;
56 import org.eclipse.jgit.util.FileUtils;
57 import org.junit.Test;
58
59 public class DownloadTest extends LfsServerTest {
60
61 @Test
62 public void testDownload() throws Exception {
63 String TEXT = "test";
64 AnyLongObjectId id = putContent(TEXT);
65 Path f = Paths.get(getTempDirectory().toString(), "download");
66 long len = getContent(id, f);
67 assertEquals(TEXT.length(), len);
68 FileUtils.delete(f.toFile(), FileUtils.RETRY);
69 }
70
71 @Test
72 public void testDownloadInvalidPathInfo()
73 throws ClientProtocolException, IOException {
74 String TEXT = "test";
75 AnyLongObjectId id = putContent(TEXT);
76 Path f = Paths.get(getTempDirectory().toString(), "download");
77 try {
78 getContent(id.name().substring(0, 60), f);
79 fail("expected RuntimeException");
80 } catch (RuntimeException e) {
81 assertEquals("Status: 400 Bad Request",
82 e.getMessage());
83 }
84 }
85
86 @Test
87 public void testDownloadInvalidId()
88 throws ClientProtocolException, IOException {
89 String TEXT = "test";
90 AnyLongObjectId id = putContent(TEXT);
91 Path f = Paths.get(getTempDirectory().toString(), "download");
92 try {
93 getContent(id.name().replace('f', 'z'), f);
94 fail("expected RuntimeException");
95 } catch (RuntimeException e) {
96 assertEquals("Status: 400 Bad Request",
97 e.getMessage());
98 }
99 }
100
101 @Test
102 public void testDownloadNotFound()
103 throws ClientProtocolException, IOException {
104 String TEXT = "test";
105 AnyLongObjectId id = LongObjectIdTestUtils.hash(TEXT);
106 Path f = Paths.get(getTempDirectory().toString(), "download");
107 try {
108 getContent(id, f);
109 fail("expected RuntimeException");
110 } catch (RuntimeException e) {
111 assertEquals("Status: 404 Not Found",
112 e.getMessage());
113 }
114 }
115
116 @SuppressWarnings("boxing")
117 @Test
118 public void testLargeFileDownload() throws Exception {
119 Path f = Paths.get(getTempDirectory().toString(), "largeRandomFile");
120 long expectedLen = createPseudoRandomContentFile(f, 5 * MiB);
121 AnyLongObjectId id = putContent(f);
122 Path f2 = Paths.get(getTempDirectory().toString(), "download");
123 long start = System.nanoTime();
124 long len = getContent(id, f2);
125 System.out.println(
126 MessageFormat.format("dowloaded 10 MiB random data in {0}ms",
127 (System.nanoTime() - start) / 1e6));
128 assertEquals(expectedLen, len);
129 FileUtils.delete(f.toFile(), FileUtils.RETRY);
130
131 }
132 }