Commit 5d00d3ff2884cbe2615f5c534ea31d8cab91bcb9

Authored by Nathanael Jourdane
1 parent 58950524
Exists in master

#5 Add JUnit tests or EpnTapConnection.

pom.xml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4   -
  4 +
5 5 <!-- Basic informations -->
6 6 <modelVersion>4.0.0</modelVersion>
7 7 <groupId>eu.omp.irap.vespa</groupId>
... ... @@ -10,7 +10,7 @@
10 10 <name>epnTAPCLient</name>
11 11 <description>The Epn-TAP library aims to provide methods to manage resources, services and dataset wich implements the epn-TAP core, in order to get data and deal with it with any other software, ie. though a SAMP hub. It also comes with a GUI, initialy built to be integrated on the Cassis sofware, but it can be launch as standalone.</description>
12 12 <url>http://cassis.irap.omp.eu/</url>
13   -
  13 +
14 14 <!-- The developer of the library. -->
15 15 <developers>
16 16 <developer>
... ... @@ -22,16 +22,16 @@
22 22 </roles>
23 23 </developer>
24 24 </developers>
25   -
  25 +
26 26 <!-- The files encoding. -->
27 27 <properties>
28 28 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
29 29 </properties>
30   -
  30 +
31 31 <build>
32 32  
33 33 <plugins>
34   -
  34 +
35 35 <!-- Tell to Maven wich Java version is used. -->
36 36 <plugin>
37 37 <artifactId>maven-compiler-plugin</artifactId>
... ... @@ -41,7 +41,7 @@
41 41 <target>1.7</target>
42 42 </configuration>
43 43 </plugin>
44   -
  44 +
45 45 <!-- Sign the jar in order to push it to cassis repository. -->
46 46 <plugin>
47 47 <groupId>org.apache.maven.plugins</groupId>
... ... @@ -68,7 +68,7 @@
68 68 <verbose>true</verbose>
69 69 </configuration>
70 70 </plugin>
71   -
  71 +
72 72 <!-- Generate model classes (voTable and voResource) from xsd schemas -->
73 73 <plugin>
74 74 <groupId>org.jvnet.jaxb2.maven2</groupId>
... ... @@ -84,20 +84,23 @@
84 84 <configuration>
85 85 <schemaDirectory>src/main/resources/xsd</schemaDirectory>
86 86 <bindingDirectory>src/main/resources/xjb</bindingDirectory>
87   - <!-- The xjb file tels to xjc which xsd file is associated to some Java package. -->
88   - <!-- It also modify voTable.xsd in order to rename the `Value`, which is a xjc keyword. -->
  87 + <!-- The xjb file tels to xjc which xsd file is associated to some
  88 + Java package. -->
  89 + <!-- It also modify voTable.xsd in order to rename the `Value`, which
  90 + is a xjc keyword. -->
89 91 </configuration>
90 92 </execution>
91 93 </executions>
92 94 </plugin>
93 95 <plugin>
94   -
  96 +
95 97 <!-- Ant executions. -->
96 98 <artifactId>maven-antrun-plugin</artifactId>
97 99 <version>1.7</version>
98 100 <executions>
99 101 <execution>
100   - <!-- Add @SuppressWarnings annotations for each class of the generated code. -->
  102 + <!-- Add @SuppressWarnings annotations for each class of the generated
  103 + code. -->
101 104 <id>suppress-warning-generated</id>
102 105 <phase>process-sources</phase>
103 106 <goals>
... ... @@ -127,8 +130,9 @@
127 130 </executions>
128 131 </plugin>
129 132 </plugins>
130   -
131   - <!-- Avoid Eclipse warnings "Plugin execution not covered by lifecycle configuration" -->
  133 +
  134 + <!-- Avoid Eclipse warnings "Plugin execution not covered by lifecycle
  135 + configuration" -->
132 136 <pluginManagement>
133 137 <plugins>
134 138 <plugin>
... ... @@ -158,10 +162,10 @@
158 162 </plugins>
159 163 </pluginManagement>
160 164 </build>
161   -
  165 +
162 166 <!-- The project dependencies -->
163 167 <dependencies>
164   -
  168 +
165 169 <!-- A library to deal with JSON files -->
166 170 <dependency>
167 171 <groupId>com.google.code.gson</groupId>
... ... @@ -169,19 +173,24 @@
169 173 <version>2.2.2</version>
170 174 <scope>compile</scope>
171 175 </dependency>
172   -
  176 +
173 177 <!-- A library to deal with VOTables -->
174 178 <dependency>
175 179 <groupId>eu.omp.irap.vespa</groupId>
176 180 <artifactId>votable</artifactId>
177 181 <version>0.0.1-SNAPSHOT</version>
178 182 </dependency>
179   -
  183 + <dependency>
  184 + <groupId>junit</groupId>
  185 + <artifactId>junit</artifactId>
  186 + <version>4.12</version>
  187 + <scope>test</scope>
  188 + </dependency>
180 189 </dependencies>
181   -
  190 +
182 191 <profiles>
183   - <!-- This profile is activated by the "-P jenkins" switch when run on the build server by
184   - Jenkins (continuous integration) -->
  192 + <!-- This profile is activated by the "-P jenkins" switch when run on the
  193 + build server by Jenkins (continuous integration) -->
185 194 <profile>
186 195 <id>jenkins</id>
187 196 <build>
... ... @@ -210,7 +219,7 @@
210 219 </build>
211 220 </profile>
212 221 </profiles>
213   -
  222 +
214 223 <!-- The repository where to deploy the project. -->
215 224 <repositories>
216 225 <repository>
... ... @@ -218,7 +227,7 @@
218 227 <url>https://nexus.irap.omp.eu/content/groups/public</url>
219 228 </repository>
220 229 </repositories>
221   -
  230 +
222 231 <!-- For using it, (with mvn deploy) it need the <server(s)> config on ~/m2/settings.xml
223 232 with the logins for nexus. -->
224 233 <distributionManagement>
... ...
src/test/java/eu/omp/irap/vespa/epntapclient/EpnTapConnectionTest.java 0 โ†’ 100644
... ... @@ -0,0 +1,192 @@
  1 +/*
  2 + * This file is a part of EpnTAPClient.
  3 + * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer.
  4 + * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861
  5 + * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planรฉtologie.
  6 + *
  7 + * This program is free software: you can
  8 + * redistribute it and/or modify it under the terms of the GNU General Public License as published
  9 + * by the Free Software Foundation, either version 3 of the License, or (at your option) any later
  10 + * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY
  11 + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  12 + * PURPOSE. See the GNU General Public License for more details. You should have received a copy of
  13 + * the GNU General Public License along with this program. If not, see
  14 + * <http://www.gnu.org/licenses/>.
  15 + */
  16 +
  17 +package eu.omp.irap.vespa.epntapclient;
  18 +
  19 +import static org.junit.Assert.assertEquals;
  20 +import static org.junit.Assert.assertNotNull;
  21 +
  22 +import java.util.ArrayList;
  23 +import java.util.HashMap;
  24 +import java.util.List;
  25 +import java.util.Map;
  26 +import java.util.logging.Logger;
  27 +
  28 +import org.junit.Test;
  29 +
  30 +import eu.omp.irap.vespa.epntapclient.granule.Granule;
  31 +import eu.omp.irap.vespa.epntapclient.voresource.VOResourceCtrl;
  32 +import eu.omp.irap.vespa.epntapclient.voresource.VOResourceException;
  33 +import eu.omp.irap.vespa.epntapclient.voresource.model.Resource;
  34 +import eu.omp.irap.vespa.epntapclient.votable.model.Field;
  35 +import eu.omp.irap.vespa.epntapclient.votable.model.Table;
  36 +import eu.omp.irap.vespa.epntapclient.votable.model.VOTABLE;
  37 +import eu.omp.irap.vespa.votable.controller.CantGetVOTableException;
  38 +
  39 +/**
  40 + * @author N. Jourdane
  41 + */
  42 +public class EpnTapConnectionTest {
  43 +
  44 + /** The logger for the class Main. */
  45 + private static final Logger logger = Logger.getLogger(EpnTapConnectionTest.class.getName());
  46 +
  47 +
  48 + @Test
  49 + public void getVOResourceTest() throws VOResourceException {
  50 + EpnTapConnection facade = new EpnTapConnection();
  51 + Resource resource = VOResourceCtrl.getVOresource("ivo://cdpp/amda");
  52 +
  53 + assertEquals("AMDA", resource.getShortName());
  54 + assertEquals("CDPP AMDA DataBase", resource.getTitle());
  55 + assertEquals("Centre de Donnรฉes de la Physique des Plasmas",
  56 + resource.getCuration().getCreator().get(0).getName().getValue());
  57 + }
  58 +
  59 + @Test
  60 + public void getEPNVOResourcesTest() throws VOResourceException {
  61 + EpnTapConnection facade = new EpnTapConnection();
  62 + List<Resource> resources = facade.getEPNVOResources();
  63 +
  64 + assertEquals(13, resources.size());
  65 + for (Resource r : resources) {
  66 + assertNotNull(r);
  67 + }
  68 + }
  69 +
  70 + @Test
  71 + public void getEPNVOResourcesWithKeywordsTest() throws VOResourceException {
  72 + EpnTapConnection facade = new EpnTapConnection();
  73 + final Map<String, String> keywords = new HashMap<>();
  74 + keywords.put("shortName", "IKS");
  75 + List<Resource> resources = facade.getEPNVOResources();
  76 +
  77 + assertEquals(2, resources.size());
  78 + }
  79 +
  80 + @Test
  81 + public void getEPNServiceTest() throws CantGetVOTableException {
  82 + EpnTapConnection facade = new EpnTapConnection();
  83 +
  84 + VOTABLE epnService = facade.getEPNService("ivo://cdpp/amda");
  85 + Table table = (Table) epnService.getRESOURCE().get(0).getLINKAndTABLEOrRESOURCE().get(0);
  86 + String firstInfoVal = epnService.getRESOURCE().get(0).getINFO().get(0).getValueAttribute();
  87 + String firstFieldName = ((Field) table.getFIELDOrPARAMOrGROUP().get(0)).getID();
  88 +
  89 + assertEquals("http://gavo.aip.de", firstInfoVal);
  90 + assertEquals("short_name", firstFieldName);
  91 + }
  92 +
  93 + @Test
  94 + public void getEPNServiceWithAttributesTest() throws CantGetVOTableException {
  95 + EpnTapConnection facade = new EpnTapConnection();
  96 +
  97 + final List<String> serviceAttributes = new ArrayList<>();
  98 + serviceAttributes.add("target_name");
  99 + serviceAttributes.add("time_min");
  100 + serviceAttributes.add("time_max");
  101 +
  102 + VOTABLE epnService = facade.getEPNService("ivo://cdpp/amda", serviceAttributes);
  103 + Table table = (Table) epnService.getRESOURCE().get(0).getLINKAndTABLEOrRESOURCE().get(0);
  104 + String firstInfoVal = epnService.getRESOURCE().get(0).getINFO().get(0).getValueAttribute();
  105 + String firstFieldName = ((Field) table.getFIELDOrPARAMOrGROUP().get(0)).getID();
  106 +
  107 + assertEquals("http://cdpp-epntap.cesr.fr", firstInfoVal);
  108 + assertEquals("short_name", firstFieldName);
  109 + }
  110 +
  111 + @Test
  112 + public void getEPNServicesTest() throws VOResourceException {
  113 + EpnTapConnection facade = new EpnTapConnection();
  114 + List<VOTABLE> voTables = facade.getEPNServices();
  115 + assertEquals(11, voTables.size());
  116 + }
  117 +
  118 + @Test
  119 + public void getEPNServicesWithAttributesTest()
  120 + throws VOResourceException, CantGetVOTableException {
  121 + final List<String> serviceAttributes = new ArrayList<>();
  122 + serviceAttributes.add("target_name");
  123 + serviceAttributes.add("time_min");
  124 + serviceAttributes.add("time_max");
  125 +
  126 + EpnTapConnection facade = new EpnTapConnection();
  127 + List<VOTABLE> voTables = facade.getEPNServices(serviceAttributes);
  128 + String firstInfoVal = voTables.get(0).getRESOURCE().get(0).getINFO().get(0)
  129 + .getValueAttribute();
  130 +
  131 + assertEquals("http://gavo.aip.de", firstInfoVal);
  132 + }
  133 +
  134 + @Test
  135 + public void getEPNServicesWithAttributesAndKeywordsTest()
  136 + throws CantGetVOTableException, VOResourceException {
  137 + final List<String> serviceAttributes = new ArrayList<>();
  138 + serviceAttributes.add("target_name");
  139 + serviceAttributes.add("time_min");
  140 + serviceAttributes.add("time_max");
  141 +
  142 + final Map<String, String> keywords = new HashMap<>();
  143 + keywords.put("shortName", "IKS");
  144 +
  145 + EpnTapConnection facade = new EpnTapConnection();
  146 + List<VOTABLE> voTables = facade.getEPNServices(keywords, serviceAttributes);
  147 + String firstInfoVal = voTables.get(0).getRESOURCE().get(0).getINFO().get(0)
  148 + .getValueAttribute();
  149 + assertEquals("http://gavo.aip.de", firstInfoVal);
  150 + }
  151 +
  152 + @Test
  153 + public void getEPNCoreTableNameTest() throws CantGetVOTableException {
  154 + EpnTapConnection facade = new EpnTapConnection();
  155 + String epnCoreTableName = facade.getEPNCoreTableName("ivo://cdpp/amda");
  156 + assertEquals("?", epnCoreTableName);
  157 + }
  158 +
  159 + @Test
  160 + public void getTAPURLTest() throws CantGetVOTableException {
  161 + EpnTapConnection facade = new EpnTapConnection();
  162 + String tapURL = facade.getTAPURL("ivo://cdpp/amda");
  163 + assertEquals("http://cdpp-epntap.cesr.fr/__system__/tap/run/tap", tapURL);
  164 + }
  165 +
  166 + @Test
  167 + public void sendADQLQueryTest() throws CantGetVOTableException {
  168 + EpnTapConnection facade = new EpnTapConnection();
  169 + String tapURL = "http://voparis-tap-planeto.obspm.fr/__system__/tap/run/tap";
  170 + String query = "SELECT TOP 1 * FROM planets.epn_core";
  171 + List<Granule> granules = facade.sendADQLQuery(tapURL, query);
  172 +
  173 + assertEquals("?", granules.get(0).granuleUid);
  174 + assertEquals("?", granules.get(0).timeMin);
  175 + assertEquals("?", granules.get(0).processingLevel);
  176 + assertEquals("?", granules.get(0).creationDate);
  177 + }
  178 +
  179 + @Test
  180 + public void sendADQLQueryWithSchemaNameTest() throws CantGetVOTableException {
  181 + EpnTapConnection facade = new EpnTapConnection();
  182 + String tapURL = "http://voparis-tap-planeto.obspm.fr/__system__/tap/run/tap";
  183 + String schemaName = "amdadb.epn_core";
  184 + String query = "SELECT TOP 1 * FROM planets.epn_core";
  185 + List<Granule> granules = facade.sendQuery(tapURL, schemaName, query);
  186 +
  187 + assertEquals("?", granules.get(0).granuleUid);
  188 + assertEquals("?", granules.get(0).timeMin);
  189 + assertEquals("?", granules.get(0).processingLevel);
  190 + assertEquals("?", granules.get(0).creationDate);
  191 + }
  192 +}
... ...
src/test/java/eu/omp/irap/vespa/epntapclient/TestEpnTapConnection.java deleted
... ... @@ -1,132 +0,0 @@
1   -/*
2   - * This file is a part of EpnTAPClient.
3   - * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer.
4   - * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861
5   - * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planรฉtologie.
6   - *
7   - * This program is free software: you can
8   - * redistribute it and/or modify it under the terms of the GNU General Public License as published
9   - * by the Free Software Foundation, either version 3 of the License, or (at your option) any later
10   - * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY
11   - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12   - * PURPOSE. See the GNU General Public License for more details. You should have received a copy of
13   - * the GNU General Public License along with this program. If not, see
14   - * <http://www.gnu.org/licenses/>.
15   - */
16   -
17   -package eu.omp.irap.vespa.epntapclient;
18   -
19   -import java.util.ArrayList;
20   -import java.util.HashMap;
21   -import java.util.List;
22   -import java.util.Map;
23   -import java.util.logging.Logger;
24   -
25   -import eu.omp.irap.vespa.epntapclient.granule.Granule;
26   -import eu.omp.irap.vespa.epntapclient.voresource.VOResourceCtrl;
27   -import eu.omp.irap.vespa.epntapclient.voresource.VOResourceException;
28   -import eu.omp.irap.vespa.epntapclient.voresource.model.Resource;
29   -import eu.omp.irap.vespa.epntapclient.votable.model.VOTABLE;
30   -import eu.omp.irap.vespa.votable.controller.CantGetVOTableException;
31   -import eu.omp.irap.vespa.votable.utils.Debug;
32   -import eu.omp.irap.vespa.votable.utils.StringJoiner;
33   -
34   -/**
35   - * @author N. Jourdane
36   - */
37   -public class TestEpnTapConnection {
38   -
39   - /** The logger for the class Main. */
40   - private static final Logger logger = Logger.getLogger(TestEpnTapConnection.class.getName());
41   -
42   - private static final String TEST_SERVICE_IVOID = "ivo://cdpp/amda";
43   -
44   - private static final String TEST_SERVICE_URL = "http://voparis-tap-planeto.obspm.fr/__system__/tap/run/tap";
45   -
46   - private static final String TEST_RESOURCE_IVOID = "ivo://vopdc.obspm/lesia/basecom/epn";
47   -
48   - private static final String TEST_ADQL_QUERY = "SELECT TOP 1 * FROM planets.epn_core";
49   -
50   - private static final String TEST_SCHEMA_NAME = "epn_core";
51   -
52   -
53   - public static void main(String[] args) {
54   - EpnTapConnection facade = new EpnTapConnection();
55   -
56   - final List<String> SERVICE_ATTRIBUTES = new ArrayList<>();
57   - SERVICE_ATTRIBUTES.add("target_name");
58   - SERVICE_ATTRIBUTES.add("time_min");
59   - SERVICE_ATTRIBUTES.add("time_max");
60   - String strServiceAttributes = "[" + StringJoiner.join(SERVICE_ATTRIBUTES) + "]";
61   -
62   - final Map<String, String> KEYWORDS = new HashMap<>();
63   - KEYWORDS.put("shortName", "IKS");
64   - String strKeywords = "[shortName=IKS]";
65   -
66   - try {
67   - System.out.println("\n*** 1. Resource ***\n");
68   -
69   - Resource resource = VOResourceCtrl.getVOresource(TEST_RESOURCE_IVOID);
70   - System.out.println("1.1 getVOresource(\"" + TEST_RESOURCE_IVOID + "\")\n\t"
71   - + Debug.toJson(resource));
72   -
73   - System.out.println("\n*** 2. Resources ***\n");
74   -
75   - List<Resource> resources = facade.getEPNVOResources();
76   - System.out.println("2.1 getEPNVOResources()\n\t"
77   - + Debug.toJson(resources));
78   -
79   - List<Resource> resources2 = facade.getEPNVOResources(KEYWORDS);
80   - System.out.println("2.2 getEPNVOResources(" + strKeywords + ")\n\t"
81   - + Debug.toJson(resources2));
82   -
83   - System.out.println("\n*** 3. Service ***\n");
84   -
85   - VOTABLE epnService = facade.getEPNService(TEST_SERVICE_IVOID);
86   - System.out.println("3.1 getEPNService(\"" + TEST_SERVICE_IVOID + "\")\n\t"
87   - + Debug.toJson(epnService));
88   -
89   - VOTABLE epnService2 = facade.getEPNService(TEST_SERVICE_IVOID, SERVICE_ATTRIBUTES);
90   - System.out.println("3.2 getEPNService(\"" + TEST_SERVICE_IVOID + "\", "
91   - + strServiceAttributes + ")\n\t"
92   - + Debug.toJson(epnService2));
93   -
94   - System.out.println("\n*** 4. Services ***\n");
95   -
96   - List<VOTABLE> epnServices = facade.getEPNServices();
97   - System.out.println("4.1 getEPNServices()\n\t");
98   -
99   - List<VOTABLE> epnServices2 = facade.getEPNServices(SERVICE_ATTRIBUTES);
100   - System.out.println("4.2 getEPNServices(" + strServiceAttributes + ")\n\t");
101   -
102   - List<VOTABLE> epnServices3 = facade.getEPNServices(KEYWORDS, SERVICE_ATTRIBUTES);
103   - System.out.println("4.3 getEPNServices(" + strKeywords + ", "
104   - + strServiceAttributes + ")\n\t");
105   -
106   - System.out.println("\n*** 5. Getters***\n");
107   -
108   - String epnCoreTableName = facade.getEPNCoreTableName(TEST_SERVICE_IVOID);
109   - System.out.println("5.1 getEPNCoreTableName(\"" + TEST_SERVICE_IVOID + "\")\n\t"
110   - + epnCoreTableName);
111   -
112   - String tapURL = facade.getTAPURL(TEST_SERVICE_IVOID);
113   - System.out.println("5.2 getTAPURL(\"" + TEST_SERVICE_IVOID + "\")\n\t" + tapURL);
114   -
115   - System.out.println("\n*** 6. Queries ***\n");
116   -
117   - List<Granule> granules = facade.sendADQLQuery(TEST_SERVICE_URL, TEST_ADQL_QUERY);
118   - System.out.println("6.1 sendADQLQuery(\"" + TEST_SERVICE_URL + "\", \""
119   - + TEST_ADQL_QUERY + "\")\n\t"
120   - + Debug.toJson(granules));
121   -
122   - List<Granule> granules2 = facade.sendQuery(TEST_SERVICE_URL, TEST_SCHEMA_NAME,
123   - TEST_ADQL_QUERY);
124   - System.out.println("6.2 sendQuery(\"" + TEST_SERVICE_URL + "\", \""
125   - + TEST_SCHEMA_NAME + "\", \"" + TEST_ADQL_QUERY + "\")\n\t"
126   - + Debug.toJson(granules2));
127   -
128   - } catch (CantGetVOTableException | VOResourceException e) {
129   - e.printStackTrace();
130   - }
131   - }
132   -}