1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.index.reader;
20
21 import java.io.File;
22 import java.io.FileInputStream;
23 import java.io.FileOutputStream;
24 import java.io.IOException;
25 import java.util.Date;
26 import java.util.List;
27 import java.util.Map;
28
29 import org.apache.maven.index.reader.Record.Type;
30 import org.junit.Test;
31
32 import static org.hamcrest.CoreMatchers.nullValue;
33 import static org.hamcrest.MatcherAssert.assertThat;
34 import static org.hamcrest.core.IsEqual.equalTo;
35
36
37
38
39 public class ChunkReaderTest extends TestSupport {
40 @Test
41 public void simple() throws IOException {
42 try (WritableResourceHandler handler = testResourceHandler("simple");
43 ChunkReader chunkReader = new ChunkReader(
44 "full",
45 handler.locate("nexus-maven-repository-index.gz").read())) {
46 final Map<Type, List<Record>> recordTypes = loadRecordsByType(chunkReader);
47 assertThat(recordTypes.get(Type.DESCRIPTOR).size(), equalTo(1));
48 assertThat(recordTypes.get(Type.ROOT_GROUPS).size(), equalTo(1));
49 assertThat(recordTypes.get(Type.ALL_GROUPS).size(), equalTo(1));
50 assertThat(recordTypes.get(Type.ARTIFACT_ADD).size(), equalTo(2));
51 assertThat(recordTypes.get(Type.ARTIFACT_REMOVE), nullValue());
52 }
53 }
54
55 @Test
56 public void roundtrip() throws IOException {
57 final Date published;
58 File tempChunkFile = createTempFile("nexus-maven-repository-index.gz");
59 {
60 try (WritableResourceHandler resource = testResourceHandler("simple");
61 ChunkReader chunkReader = new ChunkReader(
62 "full",
63 resource.locate("nexus-maven-repository-index.gz").read());
64 ChunkWriter chunkWriter = new ChunkWriter(
65 chunkReader.getName(), new FileOutputStream(tempChunkFile), 1, new Date())) {
66 chunkWriter.writeChunk(chunkReader.iterator());
67 published = chunkWriter.getTimestamp();
68 }
69 }
70
71 try (ChunkReader chunkReader = new ChunkReader("full", new FileInputStream(tempChunkFile))) {
72 assertThat(chunkReader.getVersion(), equalTo(1));
73 assertThat(chunkReader.getTimestamp().getTime(), equalTo(published.getTime()));
74 final Map<Type, List<Record>> recordTypes = loadRecordsByType(chunkReader);
75 assertThat(recordTypes.get(Type.DESCRIPTOR).size(), equalTo(1));
76 assertThat(recordTypes.get(Type.ROOT_GROUPS).size(), equalTo(1));
77 assertThat(recordTypes.get(Type.ALL_GROUPS).size(), equalTo(1));
78 assertThat(recordTypes.get(Type.ARTIFACT_ADD).size(), equalTo(2));
79 assertThat(recordTypes.get(Type.ARTIFACT_REMOVE), nullValue());
80 }
81 }
82 }