Project

General

Profile

1
package eu.dnetlib.data.mdstore.modular.mongodb;
2

    
3
import java.io.File;
4
import java.io.FileInputStream;
5
import java.io.IOException;
6
import java.util.Iterator;
7
import java.util.UUID;
8

    
9
import org.apache.commons.io.IOUtils;
10
import org.junit.Ignore;
11
import org.junit.Test;
12
import org.junit.runner.RunWith;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.core.io.ClassPathResource;
15
import org.springframework.test.context.ContextConfiguration;
16
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
17

    
18
import com.mongodb.DB;
19

    
20
import eu.dnetlib.data.mdstore.MDStoreServiceException;
21
import eu.dnetlib.data.mdstore.modular.RecordParser;
22
import eu.dnetlib.data.mdstore.modular.connector.MDStoreDao;
23
import eu.dnetlib.data.mdstore.modular.connector.MDStoreTransactionManager;
24

    
25
@Ignore
26
@RunWith(SpringJUnit4ClassRunner.class)
27
@ContextConfiguration(classes = ConfigurationTestConfig.class)
28
public class FeedSpeedTest {
29

    
30
	private static final int N_RECORDS = 68271;
31

    
32
	@Autowired
33
	private DB db;
34

    
35
	@Autowired
36
	private MDStoreTransactionManager manager;
37

    
38
	@Autowired
39
	private MDStoreDao dao;
40

    
41
	@Autowired
42
	private RecordParser recordParser;
43

    
44
	@Ignore
45
	@Test
46
	public void testSpeedFromFolder() throws IOException {
47
		Iterable<String> iterable = new Iterable<String>() {
48

    
49
			private int counter = 0;
50
			private double last = System.currentTimeMillis();
51

    
52
			@Override
53
			public Iterator<String> iterator() {
54
				return new Iterator<String>() {
55

    
56
					@Override
57
					public boolean hasNext() {
58
						return counter < N_RECORDS;
59
					}
60

    
61
					@Override
62
					public String next() {
63
						if (counter % 10000 == 0) {
64
							System.out.println("10K records processed in " + (System.currentTimeMillis() - last) / 1000 + " seconds");
65
							last = System.currentTimeMillis();
66
						}
67

    
68
						File f = new File(String.format("/var/lib/eagle/content/EDH/HD%06d.xml", counter++));
69
						if (f.exists()) {
70
							try {
71
								FileInputStream fileInputStream = new FileInputStream(f);
72
								String s = IOUtils.toString(fileInputStream);
73
								fileInputStream.close();
74
								return s;
75
							} catch (Exception e) {
76
								return null;
77
							}
78
						} else {
79
							try {
80
								FileInputStream fileInputStream = new FileInputStream(new File("/var/lib/eagle/content/EDH/HD000001.xml"));
81
								String s = IOUtils.toString(fileInputStream);
82
								fileInputStream.close();
83
								return s;
84
							} catch (Exception e) {
85
								return null;
86
							}
87
						}
88
					}
89

    
90
					@Override
91
					public void remove() {}
92
				};
93
			}
94
		};
95

    
96
		MongoMDStore mdStore = new MongoMDStore(UUID.randomUUID().toString(), db.getCollection("speed_test"), recordParser, true);
97
		mdStore.feed(iterable, false);
98
	}
99

    
100
	@Ignore
101
	@Test
102
	public void testFeedSpeedFromTemplate() throws MDStoreServiceException, IOException {
103
		MongoMDStore mdStore = new MongoMDStore(UUID.randomUUID().toString(), db.getCollection("speed_test"), recordParser, false);
104
		mdStore.feed(new Iterable<String>() {
105

    
106
			private int counter = 0;
107
			private double last = System.currentTimeMillis();
108
			private String templateRecord = IOUtils.toString(new ClassPathResource("/eu/dnetlib/data/mdstore/modular/mongodb/templateRecord.xml")
109
					.getInputStream());
110

    
111
			@Override
112
			public Iterator<String> iterator() {
113
				return new Iterator<String>() {
114

    
115
					@Override
116
					public boolean hasNext() {
117
						return counter < N_RECORDS;
118
					}
119

    
120
					@Override
121
					public String next() {
122
						if (counter % 10000 == 0) {
123
							System.out.println("10K records processed in " + (System.currentTimeMillis() - last) / 1000 + " seconds");
124
							last = System.currentTimeMillis();
125
						}
126

    
127
						File f = new File(String.format("/var/lib/eagle/content/EDH/HD%06d.xml", counter++));
128
						if (f.exists()) {
129
							try {
130
								FileInputStream fileInputStream = new FileInputStream(f);
131
								String s = IOUtils.toString(fileInputStream);
132
								fileInputStream.close();
133
								return s;
134
							} catch (Exception e) {
135
								return null;
136
							}
137
						} else {
138
							counter++;
139
							try {
140
								FileInputStream fileInputStream = new FileInputStream(new File("/var/lib/eagle/content/EDH/HD000009.xml"));
141
								String s = IOUtils.toString(fileInputStream);
142
								fileInputStream.close();
143
								return s;
144
							} catch (Exception e) {
145
								return null;
146
							}
147
						}
148
					}
149

    
150
					@Override
151
					public void remove() {}
152
				};
153
			}
154
		}, false);
155
	}
156
}
(2-2/3)