src/test/TestGtfImporters.java

Code
Comments
Other
Rev Date Author Line
5764 27 Sep 11 nicklas 1 import net.sf.basedb.core.ArrayDesign;
5759 26 Sep 11 nicklas 2 import net.sf.basedb.core.BaseException;
5759 26 Sep 11 nicklas 3 import net.sf.basedb.core.DbControl;
5759 26 Sep 11 nicklas 4 import net.sf.basedb.core.File;
5759 26 Sep 11 nicklas 5 import net.sf.basedb.core.Item;
5759 26 Sep 11 nicklas 6 import net.sf.basedb.core.Job;
5759 26 Sep 11 nicklas 7 import net.sf.basedb.core.ParameterType;
5759 26 Sep 11 nicklas 8 import net.sf.basedb.core.Permission;
5764 27 Sep 11 nicklas 9 import net.sf.basedb.core.PlatformVariant;
5764 27 Sep 11 nicklas 10 import net.sf.basedb.core.PluginConfiguration;
5759 26 Sep 11 nicklas 11 import net.sf.basedb.core.PluginConfigurationRequest;
5759 26 Sep 11 nicklas 12 import net.sf.basedb.core.PluginDefinition;
5759 26 Sep 11 nicklas 13 import net.sf.basedb.core.PluginParameter;
5759 26 Sep 11 nicklas 14 import net.sf.basedb.core.PluginResponse;
5759 26 Sep 11 nicklas 15 import net.sf.basedb.core.RequestInformation;
5759 26 Sep 11 nicklas 16 import net.sf.basedb.core.plugin.GuiContext;
5759 26 Sep 11 nicklas 17 import net.sf.basedb.core.plugin.Response;
5759 26 Sep 11 nicklas 18
5759 26 Sep 11 nicklas 19 /*
5759 26 Sep 11 nicklas 20   $Id $
5759 26 Sep 11 nicklas 21
5759 26 Sep 11 nicklas 22   Copyright (C) 2011 Nicklas Nordborg
5759 26 Sep 11 nicklas 23
5759 26 Sep 11 nicklas 24   This file is part of BASE - BioArray Software Environment.
5759 26 Sep 11 nicklas 25   Available at http://base.thep.lu.se/
5759 26 Sep 11 nicklas 26
5759 26 Sep 11 nicklas 27   BASE is free software; you can redistribute it and/or
5759 26 Sep 11 nicklas 28   modify it under the terms of the GNU General Public License
5759 26 Sep 11 nicklas 29   as published by the Free Software Foundation; either version 3
5759 26 Sep 11 nicklas 30   of the License, or (at your option) any later version.
5759 26 Sep 11 nicklas 31
5759 26 Sep 11 nicklas 32   BASE is distributed in the hope that it will be useful,
5759 26 Sep 11 nicklas 33   but WITHOUT ANY WARRANTY; without even the implied warranty of
5759 26 Sep 11 nicklas 34   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5759 26 Sep 11 nicklas 35   GNU General Public License for more details.
5759 26 Sep 11 nicklas 36
5759 26 Sep 11 nicklas 37   You should have received a copy of the GNU General Public License
5759 26 Sep 11 nicklas 38   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5759 26 Sep 11 nicklas 39 */
5759 26 Sep 11 nicklas 40
5764 27 Sep 11 nicklas 41 public class TestGtfImporters
5759 26 Sep 11 nicklas 42 {
5759 26 Sep 11 nicklas 43   static boolean ok = true;
5759 26 Sep 11 nicklas 44
5759 26 Sep 11 nicklas 45   public static void main(String[] args)
5759 26 Sep 11 nicklas 46   {
5759 26 Sep 11 nicklas 47     TestUtil.checkArgs(args);
5759 26 Sep 11 nicklas 48     TestUtil.begin();
5759 26 Sep 11 nicklas 49     test_all();
5759 26 Sep 11 nicklas 50     TestUtil.stop();
5759 26 Sep 11 nicklas 51   }
5759 26 Sep 11 nicklas 52
5759 26 Sep 11 nicklas 53   static boolean test_all()
5759 26 Sep 11 nicklas 54   {
5770 29 Sep 11 nicklas 55     write("++Testing GTF importers using plugin");
5764 27 Sep 11 nicklas 56     // Upload GTF file
5759 26 Sep 11 nicklas 57     int fileId = TestFile.test_create("data/test.gtf", false, false);
5759 26 Sep 11 nicklas 58     
5764 27 Sep 11 nicklas 59     // Test reporter importer
5764 27 Sep 11 nicklas 60     int gtfReporterImporterId  = TestPluginDefinition.test_get("net.sf.basedb.plugins.gtf.GtfReporterImporter");
5764 27 Sep 11 nicklas 61     ok = gtfReporterImporterId != 0;
5764 27 Sep 11 nicklas 62     int reporterJobId = test_create_reporter_job(gtfReporterImporterId, fileId, "update");
5764 27 Sep 11 nicklas 63     ok &= TestJob.test_execute(reporterJobId, false);
5764 27 Sep 11 nicklas 64     TestReporter.write_header();
5764 27 Sep 11 nicklas 65     TestReporter.test_list(35);
5759 26 Sep 11 nicklas 66     
5771 29 Sep 11 nicklas 67
5764 27 Sep 11 nicklas 68     // Test reporter map importer
5764 27 Sep 11 nicklas 69     int arrayDesignId = TestArrayDesign.test_create(PlatformVariant.SEQUENCING_EXPRESSION, false);
5764 27 Sep 11 nicklas 70     int gtfFeatureImporterId  = TestPluginDefinition.test_get("net.sf.basedb.plugins.gtf.GtfReporterMapImporter");
5764 27 Sep 11 nicklas 71     ok = gtfFeatureImporterId != 0;
5764 27 Sep 11 nicklas 72     int featureConfigurationId = test_create_feature_configuration(gtfFeatureImporterId);
5764 27 Sep 11 nicklas 73     int featureJobId = test_create_feature_job(featureConfigurationId, fileId, arrayDesignId);
5764 27 Sep 11 nicklas 74     ok &= TestJob.test_execute(featureJobId, false);
5764 27 Sep 11 nicklas 75     TestArrayDesign.write_feature_header();
5764 27 Sep 11 nicklas 76     TestArrayDesign.test_list_features(arrayDesignId, 35);
5771 29 Sep 11 nicklas 77
5759 26 Sep 11 nicklas 78     if (TestUtil.waitBeforeDelete()) TestUtil.waitForEnter();
5771 29 Sep 11 nicklas 79     TestArrayDesign.test_delete(arrayDesignId);
5764 27 Sep 11 nicklas 80     // Delete reporters
5764 27 Sep 11 nicklas 81     int deleteReporterJobId = test_create_reporter_job(gtfReporterImporterId, fileId, "delete");
5764 27 Sep 11 nicklas 82     ok &= TestJob.test_execute(deleteReporterJobId, false);
5759 26 Sep 11 nicklas 83     
5764 27 Sep 11 nicklas 84     TestJob.test_delete(reporterJobId);
5764 27 Sep 11 nicklas 85     TestJob.test_delete(deleteReporterJobId);
5771 29 Sep 11 nicklas 86     TestJob.test_delete(featureJobId);
5771 29 Sep 11 nicklas 87     TestPluginConfiguration.test_delete(featureConfigurationId);
5759 26 Sep 11 nicklas 88     TestFile.test_delete(fileId);
5759 26 Sep 11 nicklas 89
5764 27 Sep 11 nicklas 90     write("++Testing GTF importers "+(ok ? "OK" : "Failed")+"\n");
5759 26 Sep 11 nicklas 91     return ok;
5759 26 Sep 11 nicklas 92   }
5759 26 Sep 11 nicklas 93
5759 26 Sep 11 nicklas 94
5764 27 Sep 11 nicklas 95   static int test_create_reporter_job(int pluginId, int fileId, String mode)
5759 26 Sep 11 nicklas 96   {
5759 26 Sep 11 nicklas 97     if (pluginId == 0 || fileId == 0 || !TestUtil.hasPermission(Permission.CREATE, Item.JOB)) return 0;
5759 26 Sep 11 nicklas 98     int id = 0;
5759 26 Sep 11 nicklas 99     DbControl dc = null;
5759 26 Sep 11 nicklas 100     try
5759 26 Sep 11 nicklas 101     {
5759 26 Sep 11 nicklas 102       dc = TestUtil.getDbControl();
5759 26 Sep 11 nicklas 103
5759 26 Sep 11 nicklas 104       PluginDefinition plugin = PluginDefinition.getById(dc, pluginId);
5759 26 Sep 11 nicklas 105       Job j = Job.getNew(dc, plugin, null, null);
5759 26 Sep 11 nicklas 106       j.setName("Test: " + plugin.getName());
5759 26 Sep 11 nicklas 107       
5759 26 Sep 11 nicklas 108       PluginConfigurationRequest request = j.configure(new GuiContext(Item.REPORTER, GuiContext.Type.LIST));
5759 26 Sep 11 nicklas 109       write_request_information(request.getRequestInformation());
6875 20 Apr 15 nicklas 110       for (PluginParameter<?> pp : request.getRequestInformation().getParameters())
5759 26 Sep 11 nicklas 111       {
5759 26 Sep 11 nicklas 112         Object value = request.getCurrentParameterValue(pp.getName());
5759 26 Sep 11 nicklas 113         if (value == null) value = pp.getDefaultValue();
5759 26 Sep 11 nicklas 114         if (value != null) request.setParameterValue(pp.getName(), value);
5759 26 Sep 11 nicklas 115       }
5759 26 Sep 11 nicklas 116       request.setParameterValue("file", File.getById(dc, fileId));
5759 26 Sep 11 nicklas 117       request.setParameterValue("mode", mode);
5759 26 Sep 11 nicklas 118       
5759 26 Sep 11 nicklas 119       PluginResponse response = request.invoke();
5759 26 Sep 11 nicklas 120       if (response.getStatus() == Response.Status.DONE)
5759 26 Sep 11 nicklas 121       {
5759 26 Sep 11 nicklas 122         response.saveParameters(dc);
5759 26 Sep 11 nicklas 123         dc.saveItem(j);
5759 26 Sep 11 nicklas 124         dc.commit();
5759 26 Sep 11 nicklas 125       }
5759 26 Sep 11 nicklas 126       else
5759 26 Sep 11 nicklas 127       {
5759 26 Sep 11 nicklas 128         throw new BaseException(response.getMessage(), response.getErrorList().get(0));
5759 26 Sep 11 nicklas 129       }
5759 26 Sep 11 nicklas 130       id = j.getId();
5759 26 Sep 11 nicklas 131       write("--Create job for GTF reporter import (mode="+mode+") OK");
5759 26 Sep 11 nicklas 132     }
5759 26 Sep 11 nicklas 133     catch (Throwable ex)
5759 26 Sep 11 nicklas 134     {
5759 26 Sep 11 nicklas 135       write("--Create job for GTF reporter import (mode="+mode+") FAILED");
5759 26 Sep 11 nicklas 136       ex.printStackTrace();
5759 26 Sep 11 nicklas 137       ok = false;
5759 26 Sep 11 nicklas 138     }
5759 26 Sep 11 nicklas 139     finally
5759 26 Sep 11 nicklas 140     {
5759 26 Sep 11 nicklas 141       if (dc != null) dc.close();
5759 26 Sep 11 nicklas 142     }
5759 26 Sep 11 nicklas 143     return id;
5759 26 Sep 11 nicklas 144   }
5759 26 Sep 11 nicklas 145   
5759 26 Sep 11 nicklas 146   static void write(String message)
5759 26 Sep 11 nicklas 147   {
5759 26 Sep 11 nicklas 148     System.out.println(message);
5759 26 Sep 11 nicklas 149   }
5759 26 Sep 11 nicklas 150
5759 26 Sep 11 nicklas 151
5759 26 Sep 11 nicklas 152   static void write_request_information(RequestInformation ri)
5759 26 Sep 11 nicklas 153   {
5759 26 Sep 11 nicklas 154     if (TestUtil.getSilent()) return;
5759 26 Sep 11 nicklas 155
5759 26 Sep 11 nicklas 156     write("Request information for command: "+ri.getCommand());
5759 26 Sep 11 nicklas 157     write("\tTitle:\t"+ri.getTitle());
5759 26 Sep 11 nicklas 158     write("\tDescription:\t"+ri.getDescription());
5759 26 Sep 11 nicklas 159     for (PluginParameter<?> pp : ri.getParameters())
5759 26 Sep 11 nicklas 160     {
6875 20 Apr 15 nicklas 161       ParameterType<?> pt = pp.getParameterType();
5771 29 Sep 11 nicklas 162       System.out.println("\tParameter:\t"+pp.getName() + "\t" + pp.getLabel() + "\t" + pt + "\t" + pp.getDefaultValue() );
5759 26 Sep 11 nicklas 163     }
5759 26 Sep 11 nicklas 164   }
5764 27 Sep 11 nicklas 165   
5764 27 Sep 11 nicklas 166   static int test_create_feature_configuration(int pluginId)
5764 27 Sep 11 nicklas 167   {
5764 27 Sep 11 nicklas 168     if (pluginId == 0 || !TestUtil.hasPermission(Permission.CREATE, Item.PLUGINCONFIGURATION)) return 0;
5764 27 Sep 11 nicklas 169     int id = 0;
5764 27 Sep 11 nicklas 170     DbControl dc = null;
5764 27 Sep 11 nicklas 171     try
5764 27 Sep 11 nicklas 172     {
5764 27 Sep 11 nicklas 173       dc = TestUtil.getDbControl();
5764 27 Sep 11 nicklas 174
5764 27 Sep 11 nicklas 175       PluginDefinition pd = PluginDefinition.getById(dc, pluginId);
5764 27 Sep 11 nicklas 176       PluginConfiguration pc = pd.newPluginConfiguration();
5764 27 Sep 11 nicklas 177       pc.setName(pd.getName());
5764 27 Sep 11 nicklas 178       
5764 27 Sep 11 nicklas 179       PluginConfigurationRequest request = pc.configure();
5764 27 Sep 11 nicklas 180       RequestInformation ri = request.getRequestInformation();
5764 27 Sep 11 nicklas 181
5764 27 Sep 11 nicklas 182       write_request_information(ri);
5764 27 Sep 11 nicklas 183       
6875 20 Apr 15 nicklas 184       for (PluginParameter<?> parameter : ri.getParameters())
5764 27 Sep 11 nicklas 185       {
5764 27 Sep 11 nicklas 186         request.setParameterValue(parameter.getName(), parameter.getDefaultValue());
5764 27 Sep 11 nicklas 187       }
5764 27 Sep 11 nicklas 188       
5764 27 Sep 11 nicklas 189       PluginResponse response = request.invoke();
5764 27 Sep 11 nicklas 190       if (response.getStatus() == Response.Status.DONE)
5764 27 Sep 11 nicklas 191       {
5764 27 Sep 11 nicklas 192         response.saveParameters(dc);
5764 27 Sep 11 nicklas 193         dc.saveItem(pc);
5764 27 Sep 11 nicklas 194         dc.commit();
5764 27 Sep 11 nicklas 195       }
5764 27 Sep 11 nicklas 196       else if (response.getStatus() == Response.Status.ERROR)
5764 27 Sep 11 nicklas 197       {
5764 27 Sep 11 nicklas 198         throw new BaseException(response.getMessage(), response.getErrorList().get(0));
5764 27 Sep 11 nicklas 199       }
5764 27 Sep 11 nicklas 200       else
5764 27 Sep 11 nicklas 201       {
5764 27 Sep 11 nicklas 202         throw new BaseException("Unknown status on response: "+response.getStatus());
5764 27 Sep 11 nicklas 203       }
5764 27 Sep 11 nicklas 204       id = pc.getId();
5764 27 Sep 11 nicklas 205       write("--Create configuration for GTF reporter map import OK");
5764 27 Sep 11 nicklas 206     }
5764 27 Sep 11 nicklas 207     catch (Throwable ex)
5764 27 Sep 11 nicklas 208     {
5764 27 Sep 11 nicklas 209       write("--Create configuration for GTF reporter map import FAILED");
5764 27 Sep 11 nicklas 210       ex.printStackTrace();
5764 27 Sep 11 nicklas 211       ok = false;
5764 27 Sep 11 nicklas 212     }
5764 27 Sep 11 nicklas 213     finally
5764 27 Sep 11 nicklas 214     {
5764 27 Sep 11 nicklas 215       if (dc != null) dc.close();
5764 27 Sep 11 nicklas 216     }
5764 27 Sep 11 nicklas 217     return id;
5764 27 Sep 11 nicklas 218   }
5764 27 Sep 11 nicklas 219
5764 27 Sep 11 nicklas 220   static int test_create_feature_job(int pluginConfigurationId, int fileId, int arrayDesignId)
5764 27 Sep 11 nicklas 221   {
5764 27 Sep 11 nicklas 222     if (pluginConfigurationId == 0 || fileId == 0 || arrayDesignId == 0 || !TestUtil.hasPermission(Permission.CREATE, Item.JOB)) return 0;
5764 27 Sep 11 nicklas 223     int id = 0;
5764 27 Sep 11 nicklas 224     DbControl dc = null;
5764 27 Sep 11 nicklas 225     try
5764 27 Sep 11 nicklas 226     {
5764 27 Sep 11 nicklas 227       dc = TestUtil.getDbControl();
5764 27 Sep 11 nicklas 228
5764 27 Sep 11 nicklas 229       PluginConfiguration pc = PluginConfiguration.getById(dc, pluginConfigurationId);
5764 27 Sep 11 nicklas 230       Job j = pc.newJob(null);
5764 27 Sep 11 nicklas 231       j.setName(pc.getName());
5764 27 Sep 11 nicklas 232       
5764 27 Sep 11 nicklas 233       PluginConfigurationRequest request = j.configure(null);
5764 27 Sep 11 nicklas 234       write_request_information(request.getRequestInformation());
5764 27 Sep 11 nicklas 235       request.setParameterValue("file", File.getById(dc, fileId));
5764 27 Sep 11 nicklas 236       request.setParameterValue("arrayDesign", ArrayDesign.getById(dc, arrayDesignId));
5764 27 Sep 11 nicklas 237       
5764 27 Sep 11 nicklas 238       PluginResponse response = request.invoke();
5764 27 Sep 11 nicklas 239       if (response.getStatus() == Response.Status.DONE)
5764 27 Sep 11 nicklas 240       {
5764 27 Sep 11 nicklas 241         response.saveParameters(dc);
5764 27 Sep 11 nicklas 242         dc.saveItem(j);
5764 27 Sep 11 nicklas 243         dc.commit();
5764 27 Sep 11 nicklas 244       }
5764 27 Sep 11 nicklas 245       else
5764 27 Sep 11 nicklas 246       {
5764 27 Sep 11 nicklas 247         throw new BaseException(response.getMessage(), response.getErrorList().get(0));
5764 27 Sep 11 nicklas 248       }
5764 27 Sep 11 nicklas 249       id = j.getId();
5764 27 Sep 11 nicklas 250       write("--Create job for GTF reporter map import OK");
5764 27 Sep 11 nicklas 251     }
5764 27 Sep 11 nicklas 252     catch (Throwable ex)
5764 27 Sep 11 nicklas 253     {
5764 27 Sep 11 nicklas 254       write("--Create job for GTF reporter map import FAILED");
5764 27 Sep 11 nicklas 255       ex.printStackTrace();
5764 27 Sep 11 nicklas 256       ok = false;
5764 27 Sep 11 nicklas 257     }
5764 27 Sep 11 nicklas 258     finally
5764 27 Sep 11 nicklas 259     {
5764 27 Sep 11 nicklas 260       if (dc != null) dc.close();
5764 27 Sep 11 nicklas 261     }
5764 27 Sep 11 nicklas 262     return id;
5764 27 Sep 11 nicklas 263   }
5764 27 Sep 11 nicklas 264
5759 26 Sep 11 nicklas 265 }
5759 26 Sep 11 nicklas 266