diff --git a/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/CsquareColumnCreatorTest.java b/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/CsquareColumnCreatorTest.java new file mode 100644 index 0000000..6e2d5ea --- /dev/null +++ b/src/test/java/org/gcube/data/analysis/dataminermanagercl/test/CsquareColumnCreatorTest.java @@ -0,0 +1,191 @@ +package org.gcube.data.analysis.dataminermanagercl.test; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService; +import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient; +import org.gcube.data.analysis.dataminermanagercl.server.monitor.DMMonitor; +import org.gcube.data.analysis.dataminermanagercl.server.monitor.DMMonitorListener; +import org.gcube.data.analysis.dataminermanagercl.shared.Constants; +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it + * + */ +public class CsquareColumnCreatorTest extends TestCase { + private static Logger logger = LoggerFactory.getLogger(CsquareColumnCreatorTest.class); + + public void testExecute() { + + if (Constants.TEST_ENABLE) { + logger.debug("Test CSquareColumnCreator"); + try { + DataMinerService dataMinerService = new DataMinerService(); + SClient sClient = dataMinerService.getClient(); + Operator csquareColumnCreatorOperator = sClient + .getOperatorById("org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CSQUARE_COLUMN_CREATOR"); + + if (csquareColumnCreatorOperator == null) { + logger.error("Operator not found"); + } else { + logger.debug("Operator Name: " + csquareColumnCreatorOperator.getName() + + " (" + csquareColumnCreatorOperator.getId() + ")"); + logger.debug("Operator: " + csquareColumnCreatorOperator); + List parameters = sClient + .getInputParameters(csquareColumnCreatorOperator); + logger.debug("Parameters: " + parameters); + for (Parameter parameter : parameters) { + logger.debug("Parameter:[Name=" + parameter.getName() + + ", Typology=" + parameter.getTypology() + "]"); + } + + createRequest(csquareColumnCreatorOperator); + logger.debug("Start Computation"); + ComputationId computationId = sClient + .startComputation(csquareColumnCreatorOperator); + logger.debug("Started ComputationId: " + computationId); + monitoringComputation(computationId, sClient); + } + + assertTrue("Success", true); + + } catch (Throwable e) { + logger.error(e.getLocalizedMessage()); + e.printStackTrace(); + assertTrue("Error", false); + } + + } else { + assertTrue("Success", true); + } + } + + private void monitoringComputation(final ComputationId computationId, + final SClient sClient) { + + DMMonitorListener listener = new DMMonitorListener() { + + @Override + public void running(double percentage) { + logger.debug("Operation Running: " + percentage); + + } + + @Override + public void failed(String message, Exception exception) { + logger.error("Operation Failed"); + logger.error(message, exception); + + } + + @Override + public void complete(double percentage) { + logger.debug("Operation Completed"); + logger.debug("Perc: " + percentage); + retrieveOutput(computationId, sClient); + + } + + @Override + public void cancelled() { + logger.debug("Operation Cancelled"); + } + + @Override + public void accepted() { + logger.debug("Operation Accepted"); + + } + }; + + DMMonitor dmMonitor = new DMMonitor(computationId, sClient); + dmMonitor.add(listener); + dmMonitor.start(); + + } + + private void retrieveOutput(ComputationId computationId, SClient sClient) { + try { + OutputData output = sClient + .getOutputDataByComputationId(computationId); + logger.debug("Output: " + output); + Resource resource = output.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + } + } + + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + e.printStackTrace(); + } + + } + + /** + * Identifier=org.gcube.dataanalysis.wps. + * statisticalmanager.synchserver.mappedclasses.clusterers.DBSCAN& + * DataInputs= OccurrencePointsTable=http://data-d.d4science.org/ + * SnBPSHJQOEI4UHQ0QkhnM2p3L2JGQytNTmtSb1FpUTFHbWJQNStIS0N6Yz0; + * FeaturesColumnNames=depthmean|sstmnmax|salinitymin; + * OccurrencePointsClusterLabel=Test;epsilon=10;min_points=1; + * + * @param operator + */ + private void createRequest(Operator operator) { + logger.debug("Create Request"); + + TabularParameter occurencePointsTable = new TabularParameter(); + occurencePointsTable.setName("InputTable"); + occurencePointsTable + .setValue("http://goo.gl/sdlD5a"); + + ObjectParameter longitude = new ObjectParameter(); + longitude.setName("Longitude_Column"); + longitude.setValue("decimallongitude"); + + ObjectParameter latitude = new ObjectParameter(); + latitude.setName("Latitude_Column"); + latitude.setValue("decimallatitude"); + + ObjectParameter cSquareResolution = new ObjectParameter(); + cSquareResolution.setName("CSquare_Resolution"); + cSquareResolution.setValue("0.1"); + + ObjectParameter outputTableName = new ObjectParameter(); + outputTableName.setName("OutputTableName"); + outputTableName.setValue("wps_csquare_column"); + + + List parameters = new ArrayList<>(); + parameters.add(occurencePointsTable); + parameters.add(longitude); + parameters.add(latitude); + parameters.add(cSquareResolution); + parameters.add(outputTableName); + + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + + } + +}