Blame view

src/test/java/eu/omp/irap/vespa/epntapclient/EpnTapConnectionTest.java 10.7 KB
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * This file is a part of EpnTAPClient.
 * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer.
 * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861
 * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie.
 *
 * This program is free software: you can
 * redistribute it and/or modify it under the terms of the GNU General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or (at your option) any later
 * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE. See the GNU General Public License for more details. You should have received a copy of
 * the GNU General Public License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 */

package eu.omp.irap.vespa.epntapclient;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
35daa117   Nathanael Jourdane   Improve JUnits te...
21
import static org.junit.Assert.assertTrue;
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
22
23

import java.util.ArrayList;
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
24
25
26
27
28
29
30
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import org.junit.Test;

import eu.omp.irap.vespa.epntapclient.granule.Granule;
35daa117   Nathanael Jourdane   Improve JUnits te...
31
import eu.omp.irap.vespa.epntapclient.service.ServiceCtrl;
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
32
33
34
import eu.omp.irap.vespa.epntapclient.voresource.VOResourceCtrl;
import eu.omp.irap.vespa.epntapclient.voresource.VOResourceException;
import eu.omp.irap.vespa.epntapclient.voresource.model.Resource;
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
35
36
import eu.omp.irap.vespa.epntapclient.votable.model.VOTABLE;
import eu.omp.irap.vespa.votable.controller.CantGetVOTableException;
35daa117   Nathanael Jourdane   Improve JUnits te...
37
import eu.omp.irap.vespa.votable.votabledata.VOTableData;
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
38
39
40
41
42
43
44
45
46

/**
 * @author N. Jourdane
 */
public class EpnTapConnectionTest {

	/** The logger for the class Main. */
	private static final Logger logger = Logger.getLogger(EpnTapConnectionTest.class.getName());

35daa117   Nathanael Jourdane   Improve JUnits te...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
	private static final String AMDA_IVOID = "ivo://cdpp/amda";

	private static final String AMDA_SHORT_NAME = "AMDA";

	private static final String AMDA_ACCESS_URL = "http://cdpp-epntap.cesr.fr/__system__/tap/run/tap";

	private static final String AMDA_SUBJECT = "Space plasmas";

	private static final String APIS_IVOID = "ivo://vopdc.obspm/lesia/apis/epn";

	private static final String APIS_SHORT_NAME = "APIS";

	// *** VOResources ***

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
61
62
63

	@Test
	public void getVOResourceTest() throws VOResourceException {
35daa117   Nathanael Jourdane   Improve JUnits te...
64
		System.out.println("getVOResourceTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
65
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
66

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
67
68
69
70
71
72
73
74
75
76
		Resource resource = VOResourceCtrl.getVOresource("ivo://cdpp/amda");

		assertEquals("AMDA", resource.getShortName());
		assertEquals("CDPP AMDA DataBase", resource.getTitle());
		assertEquals("Centre de Données de la Physique des Plasmas",
				resource.getCuration().getCreator().get(0).getName().getValue());
	}

	@Test
	public void getEPNVOResourcesTest() throws VOResourceException {
35daa117   Nathanael Jourdane   Improve JUnits te...
77
		System.out.println("getEPNVOResourcesTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
78
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
79

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
80
81
		List<Resource> resources = facade.getEPNVOResources();

35daa117   Nathanael Jourdane   Improve JUnits te...
82
83
84
85
86
87
88
89
90
91
92
93
		int nbResources = resources.size();
		assertTrue(nbResources + " ∉ [13;20]", nbResources >= 13 && nbResources <= 20);

		Resource amda = null;
		Resource apis = null;
		for (Resource resource : resources) {
			if (AMDA_IVOID.equals(resource.getIdentifier())) {
				amda = resource;
			}
			if (APIS_IVOID.equals(resource.getIdentifier())) {
				apis = resource;
			}
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
94
		}
35daa117   Nathanael Jourdane   Improve JUnits te...
95
96
97
98
		assertNotNull("AMDA resource should be present.", amda);
		assertNotNull("APIS resource should be present.", apis);
		assertEquals(AMDA_SHORT_NAME, amda.getShortName());
		assertEquals(APIS_SHORT_NAME, apis.getShortName());
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
99
100
101
102
	}

	@Test
	public void getEPNVOResourcesWithKeywordsTest() throws VOResourceException {
35daa117   Nathanael Jourdane   Improve JUnits te...
103
		System.out.println("getEPNVOResourcesWithKeywordsTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
104
		EpnTapConnection facade = new EpnTapConnection();
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
105

35daa117   Nathanael Jourdane   Improve JUnits te...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
		final List<String> keywords = new ArrayList<>();
		keywords.add(AMDA_SUBJECT);
		List<Resource> resources = facade.getEPNVOResources(keywords);

		assertEquals(resources.size(), 1);

		Resource amda = null;
		for (Resource resource : resources) {
			System.out.println(resource.getIdentifier());
			if (AMDA_IVOID.equals(resource.getIdentifier())) {
				amda = resource;
			}
		}
		assertNotNull("AMDA resource should be present.", amda);
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
120
121
	}

35daa117   Nathanael Jourdane   Improve JUnits te...
122
123
	// *** Services ***

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
124
125
	@Test
	public void getEPNServiceTest() throws CantGetVOTableException {
35daa117   Nathanael Jourdane   Improve JUnits te...
126
		System.out.println("getEPNServiceTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
127
128
		EpnTapConnection facade = new EpnTapConnection();

35daa117   Nathanael Jourdane   Improve JUnits te...
129
130
		VOTABLE voTable = facade.getEPNService("ivo://cdpp/amda");
		VOTableData data = ServiceCtrl.getVoTableData(voTable);
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
131

35daa117   Nathanael Jourdane   Improve JUnits te...
132
133
134
135
136
137
138
		assertEquals(1, data.getNbRows());
		assertTrue("Column name ivoid not found.", data.isContainingColumnName("ivoid"));
		assertTrue("Column name short_name not found.", data.isContainingColumnName("access_url"));
		assertTrue("Column name short_name not found.", data.isContainingColumnName("short_name"));
		assertEquals(AMDA_IVOID, data.getCell(0, "ivoid"));
		assertEquals(AMDA_ACCESS_URL, data.getCell(0, "access_url"));
		assertEquals(AMDA_SHORT_NAME, data.getCell(0, "short_name"));
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
139
140
141
142
	}

	@Test
	public void getEPNServiceWithAttributesTest() throws CantGetVOTableException {
35daa117   Nathanael Jourdane   Improve JUnits te...
143
		System.out.println("getEPNServiceWithAttributesTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
144
145
		EpnTapConnection facade = new EpnTapConnection();

35daa117   Nathanael Jourdane   Improve JUnits te...
146
147
148
		final List<String> attributes = new ArrayList<>();
		attributes.add("access_url");
		attributes.add("short_name");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
149

35daa117   Nathanael Jourdane   Improve JUnits te...
150
151
		VOTABLE voTable = facade.getEPNService("ivo://cdpp/amda", attributes);
		VOTableData data = ServiceCtrl.getVoTableData(voTable);
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
152

35daa117   Nathanael Jourdane   Improve JUnits te...
153
154
155
156
157
158
		assertEquals(1, data.getNbRows());
		assertEquals(2, data.getNbColumns());
		assertTrue("Column name short_name not found.", data.isContainingColumnName("access_url"));
		assertTrue("Column name short_name not found.", data.isContainingColumnName("short_name"));
		assertEquals(AMDA_ACCESS_URL, data.getCell(0, "access_url"));
		assertEquals(AMDA_SHORT_NAME, data.getCell(0, "short_name"));
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
159
160
161
	}

	@Test
35daa117   Nathanael Jourdane   Improve JUnits te...
162
163
	public void getEPNServicesTest() throws CantGetVOTableException {
		System.out.println("getEPNServicesTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
164
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
165
166
167
168
169
170
171
172
173
174

		VOTABLE voTable = facade.getEPNServices();
		VOTableData data = ServiceCtrl.getVoTableData(voTable);
		int nbServices = data.getNbRows();
		assertTrue(nbServices + " ∉ [13;20].", nbServices >= 13 && nbServices <= 20);
		assertTrue("Column name ivoid not found.", data.isContainingColumnName("short_name"));
		assertTrue("AMDA ivoid not found.", data.isColumnContainingValue("ivoid", AMDA_IVOID));
		Map<String, Object> amda = data.getRowMapByValue("ivoid", AMDA_IVOID);
		assertEquals(AMDA_ACCESS_URL, data.getCell(0, "access_url"));
		assertEquals(AMDA_SHORT_NAME, data.getCell(0, "short_name"));
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
175
176
177
178
	}

	@Test
	public void getEPNServicesWithAttributesTest()
35daa117   Nathanael Jourdane   Improve JUnits te...
179
180
			throws CantGetVOTableException {
		System.out.println("getEPNServicesWithAttributesTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
181
		EpnTapConnection facade = new EpnTapConnection();
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
182

35daa117   Nathanael Jourdane   Improve JUnits te...
183
184
185
186
187
188
189
190
191
192
193
194
		final List<String> attributes = new ArrayList<>();
		attributes.add("access_url");
		attributes.add("short_name");

		VOTABLE voTable = facade.getEPNService("ivo://cdpp/amda", attributes);
		VOTableData data = ServiceCtrl.getVoTableData(voTable);

		assertEquals(2, data.getNbColumns());
		assertTrue("Column name ivoid not found.", data.isContainingColumnName("access_url"));
		assertTrue("Column name ivoid not found.", data.isContainingColumnName("short_name"));
		assertEquals(AMDA_ACCESS_URL, data.getCell(0, "access_url"));
		assertEquals(AMDA_SHORT_NAME, data.getCell(0, "short_name"));
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
195
196
197
198
199
	}

	@Test
	public void getEPNServicesWithAttributesAndKeywordsTest()
			throws CantGetVOTableException, VOResourceException {
35daa117   Nathanael Jourdane   Improve JUnits te...
200
		System.out.println("getEPNServicesWithAttributesAndKeywordsTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
201
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222

		final List<String> attributes = new ArrayList<>();
		attributes.add("access_url");
		attributes.add("short_name");

		final List<String> keywords = new ArrayList<>();
		keywords.add(AMDA_SUBJECT);

		VOTABLE voTable = facade.getEPNServices(keywords, attributes);
		VOTableData data = ServiceCtrl.getVoTableData(voTable);

		assertEquals(3, data.getNbColumns());
		// TODO: Should be return only 2 columns, because keywords do not contains res_subject.
		assertTrue("Column name access_url not found.", data.isContainingColumnName("access_url"));
		assertTrue("Column name short_name not found.", data.isContainingColumnName("short_name"));
		assertTrue("AMDA short_name not found.",
				data.isColumnContainingValue("short_name", AMDA_SHORT_NAME));
		assertTrue("AMDA access_url not found.",
				data.isColumnContainingValue("access_url", AMDA_ACCESS_URL));
		assertEquals(AMDA_SHORT_NAME, data.getCell(0, "short_name"));
		assertEquals(AMDA_ACCESS_URL, data.getCell(0, "access_url"));
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
223
224
	}

35daa117   Nathanael Jourdane   Improve JUnits te...
225
226
	// *** Getters ***

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
227
228
	@Test
	public void getEPNCoreTableNameTest() throws CantGetVOTableException {
35daa117   Nathanael Jourdane   Improve JUnits te...
229
		System.out.println("getEPNCoreTableNameTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
230
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
231

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
232
		String epnCoreTableName = facade.getEPNCoreTableName("ivo://cdpp/amda");
35daa117   Nathanael Jourdane   Improve JUnits te...
233
234

		assertEquals("amdadb.epn_core", epnCoreTableName);
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
235
236
237
238
	}

	@Test
	public void getTAPURLTest() throws CantGetVOTableException {
35daa117   Nathanael Jourdane   Improve JUnits te...
239
		System.out.println("getTAPURLTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
240
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
241

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
242
		String tapURL = facade.getTAPURL("ivo://cdpp/amda");
35daa117   Nathanael Jourdane   Improve JUnits te...
243

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
244
245
246
		assertEquals("http://cdpp-epntap.cesr.fr/__system__/tap/run/tap", tapURL);
	}

35daa117   Nathanael Jourdane   Improve JUnits te...
247
248
	// *** Queries ***

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
249
250
	@Test
	public void sendADQLQueryTest() throws CantGetVOTableException {
35daa117   Nathanael Jourdane   Improve JUnits te...
251
		System.out.println("sendADQLQueryTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
252
		EpnTapConnection facade = new EpnTapConnection();
35daa117   Nathanael Jourdane   Improve JUnits te...
253

5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
254
255
256
257
		String tapURL = "http://voparis-tap-planeto.obspm.fr/__system__/tap/run/tap";
		String query = "SELECT TOP 1 * FROM planets.epn_core";
		List<Granule> granules = facade.sendADQLQuery(tapURL, query);

35daa117   Nathanael Jourdane   Improve JUnits te...
258
259
		assertNotNull("Granules list not returned.", granules);
		assertTrue("No granules returned.", granules.size() > 0);
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
260
261
262
263
264
265
266
267
		assertEquals("?", granules.get(0).granuleUid);
		assertEquals("?", granules.get(0).timeMin);
		assertEquals("?", granules.get(0).processingLevel);
		assertEquals("?", granules.get(0).creationDate);
	}

	@Test
	public void sendADQLQueryWithSchemaNameTest() throws CantGetVOTableException {
35daa117   Nathanael Jourdane   Improve JUnits te...
268
		System.out.println("sendADQLQueryWithSchemaNameTest");
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
269
270
271
272
273
274
		EpnTapConnection facade = new EpnTapConnection();
		String tapURL = "http://voparis-tap-planeto.obspm.fr/__system__/tap/run/tap";
		String schemaName = "amdadb.epn_core";
		String query = "SELECT TOP 1 * FROM planets.epn_core";
		List<Granule> granules = facade.sendQuery(tapURL, schemaName, query);

35daa117   Nathanael Jourdane   Improve JUnits te...
275
276
		assertNotNull("Granules list not returned.", granules);
		assertTrue("No granules returned.", granules.size() > 0);
5d00d3ff   Nathanael Jourdane   #5 Add JUnit test...
277
278
279
280
281
282
		assertEquals("?", granules.get(0).granuleUid);
		assertEquals("?", granules.get(0).timeMin);
		assertEquals("?", granules.get(0).processingLevel);
		assertEquals("?", granules.get(0).creationDate);
	}
}