src/test/TestPluginConfiguration.java

Code
Comments
Other
Rev Date Author Line
1251 06 Sep 05 enell 1 /*
1251 06 Sep 05 enell 2   $Id$
1251 06 Sep 05 enell 3
3675 16 Aug 07 jari 4   Copyright (C) 2005 Johan Enell, Nicklas Nordborg
4889 06 Apr 09 nicklas 5   Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg
1251 06 Sep 05 enell 6
2304 22 May 06 jari 7   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 8   Available at http://base.thep.lu.se/
1251 06 Sep 05 enell 9
1251 06 Sep 05 enell 10   BASE is free software; you can redistribute it and/or
1251 06 Sep 05 enell 11   modify it under the terms of the GNU General Public License
4480 05 Sep 08 jari 12   as published by the Free Software Foundation; either version 3
1251 06 Sep 05 enell 13   of the License, or (at your option) any later version.
1251 06 Sep 05 enell 14
1251 06 Sep 05 enell 15   BASE is distributed in the hope that it will be useful,
1251 06 Sep 05 enell 16   but WITHOUT ANY WARRANTY; without even the implied warranty of
1251 06 Sep 05 enell 17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1251 06 Sep 05 enell 18   GNU General Public License for more details.
1251 06 Sep 05 enell 19
1251 06 Sep 05 enell 20   You should have received a copy of the GNU General Public License
4514 11 Sep 08 jari 21   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1251 06 Sep 05 enell 22 */
1251 06 Sep 05 enell 23 import net.sf.basedb.core.BaseException;
1251 06 Sep 05 enell 24 import net.sf.basedb.core.DbControl;
1251 06 Sep 05 enell 25 import net.sf.basedb.core.Item;
5340 10 May 10 nicklas 26 import net.sf.basedb.core.ItemProxy;
2348 01 Jun 06 nicklas 27 import net.sf.basedb.core.ParameterInfo;
1251 06 Sep 05 enell 28 import net.sf.basedb.core.Permission;
1251 06 Sep 05 enell 29 import net.sf.basedb.core.PluginConfiguration;
1251 06 Sep 05 enell 30 import net.sf.basedb.core.PluginDefinition;
1376 22 Sep 05 nicklas 31 import net.sf.basedb.core.PluginConfigurationRequest;
1730 20 Dec 05 nicklas 32 import net.sf.basedb.core.PluginResponse;
1418 07 Oct 05 nicklas 33 import net.sf.basedb.core.ItemQuery;
1418 07 Oct 05 nicklas 34 import net.sf.basedb.core.ItemResultList;
1778 17 Jan 06 enell 35 import net.sf.basedb.core.plugin.Response;
1251 06 Sep 05 enell 36
1251 06 Sep 05 enell 37 import java.util.List;
1779 17 Jan 06 nicklas 38 import java.util.Arrays;
5340 10 May 10 nicklas 39 import java.util.Set;
1251 06 Sep 05 enell 40
1251 06 Sep 05 enell 41 public class TestPluginConfiguration
1251 06 Sep 05 enell 42 {
1251 06 Sep 05 enell 43
1251 06 Sep 05 enell 44   static boolean ok = true;
1251 06 Sep 05 enell 45   public static void main(String[] args)
1251 06 Sep 05 enell 46   {
1251 06 Sep 05 enell 47     TestUtil.checkArgs(args);
1251 06 Sep 05 enell 48     TestUtil.begin();
1251 06 Sep 05 enell 49     ok = test_all();
1251 06 Sep 05 enell 50     TestUtil.stop();
1251 06 Sep 05 enell 51   }
1251 06 Sep 05 enell 52
1251 06 Sep 05 enell 53   static boolean test_all()
1251 06 Sep 05 enell 54   {
1251 06 Sep 05 enell 55     write("++Testing plugin configuration");
1251 06 Sep 05 enell 56     write_header();
1251 06 Sep 05 enell 57     // Standard tests: create, load, list
1345 19 Sep 05 nicklas 58     int plugindefinitionId = TestPluginDefinition.test_create("NullPlugin", null);
1251 06 Sep 05 enell 59     int id = test_create(plugindefinitionId);
1251 06 Sep 05 enell 60     test_list();
1257 06 Sep 05 enell 61     test_load(id);
1251 06 Sep 05 enell 62
1251 06 Sep 05 enell 63     // Extra tests:
1251 06 Sep 05 enell 64     test_configure(id);
1251 06 Sep 05 enell 65
1251 06 Sep 05 enell 66     // Standard test: Delete
1529 27 Oct 05 nicklas 67     if (TestUtil.waitBeforeDelete()) TestUtil.waitForEnter();
1251 06 Sep 05 enell 68     test_delete(id);
1251 06 Sep 05 enell 69     TestPluginDefinition.test_delete(plugindefinitionId);
1251 06 Sep 05 enell 70     write("++Testing plugin configuration "+(ok ? "OK" : "Failed")+"\n");
1251 06 Sep 05 enell 71     return ok;
1251 06 Sep 05 enell 72   }
1251 06 Sep 05 enell 73
1251 06 Sep 05 enell 74   static int test_create(int plugindefinitionId)
1251 06 Sep 05 enell 75   {
1251 06 Sep 05 enell 76     if (plugindefinitionId == 0 || !TestUtil.hasPermission(Permission.CREATE, Item.PLUGINCONFIGURATION)) return 0;
1251 06 Sep 05 enell 77     int id = 0;
1251 06 Sep 05 enell 78     DbControl dc = null;
1251 06 Sep 05 enell 79     try
1251 06 Sep 05 enell 80     {
1251 06 Sep 05 enell 81       dc = TestUtil.getDbControl();
1251 06 Sep 05 enell 82       PluginDefinition pd = PluginDefinition.getById(dc, plugindefinitionId);
1251 06 Sep 05 enell 83       PluginConfiguration pc = PluginConfiguration.getNew(dc, pd);
1251 06 Sep 05 enell 84       pc.setName(pd.getName());
1251 06 Sep 05 enell 85       dc.saveItem(pc);
1251 06 Sep 05 enell 86       dc.commit();
1251 06 Sep 05 enell 87       id = pc.getId();
1251 06 Sep 05 enell 88       dc = TestUtil.getDbControl();
5060 19 Aug 09 nicklas 89       dc.reattachItem(pc, false);
1251 06 Sep 05 enell 90       write_item(0, pc);
1251 06 Sep 05 enell 91       write("--Create plugin configuration OK");
1251 06 Sep 05 enell 92     }
1265 06 Sep 05 nicklas 93     catch (Throwable ex)
1251 06 Sep 05 enell 94     {
1251 06 Sep 05 enell 95       write("--Create plugin configuration FAILED");
1251 06 Sep 05 enell 96       ex.printStackTrace();
1251 06 Sep 05 enell 97       ok = false;
1251 06 Sep 05 enell 98     }
1251 06 Sep 05 enell 99     finally
1251 06 Sep 05 enell 100     {
1251 06 Sep 05 enell 101       if (dc != null) dc.close();
1251 06 Sep 05 enell 102     }
1251 06 Sep 05 enell 103     return id;
1251 06 Sep 05 enell 104   }
1251 06 Sep 05 enell 105
1251 06 Sep 05 enell 106   static void test_load(int id)
1251 06 Sep 05 enell 107   {
1251 06 Sep 05 enell 108     if (id == 0) return;
1251 06 Sep 05 enell 109     DbControl dc = null;
1251 06 Sep 05 enell 110     try
1251 06 Sep 05 enell 111     {
1251 06 Sep 05 enell 112       dc = TestUtil.getDbControl();
1251 06 Sep 05 enell 113       PluginConfiguration pc = PluginConfiguration.getById(dc, id);
1251 06 Sep 05 enell 114       write_item(0, pc);
1251 06 Sep 05 enell 115       write_values(pc);
1251 06 Sep 05 enell 116       write("--Load plugin configuration OK");
1251 06 Sep 05 enell 117     }
1265 06 Sep 05 nicklas 118     catch (Throwable ex)
1251 06 Sep 05 enell 119     {
1251 06 Sep 05 enell 120       write("--Load plugin configuration FAILED");
1251 06 Sep 05 enell 121       ex.printStackTrace();
1251 06 Sep 05 enell 122       ok = false;
1251 06 Sep 05 enell 123     }
1251 06 Sep 05 enell 124     finally
1251 06 Sep 05 enell 125     {
1251 06 Sep 05 enell 126       if (dc != null) dc.close();
1251 06 Sep 05 enell 127     }
1251 06 Sep 05 enell 128   }
1251 06 Sep 05 enell 129
1251 06 Sep 05 enell 130   static void test_list()
1251 06 Sep 05 enell 131   {
1251 06 Sep 05 enell 132     DbControl dc = null;
1251 06 Sep 05 enell 133     try
1251 06 Sep 05 enell 134     {
1251 06 Sep 05 enell 135       dc = TestUtil.getDbControl();
1418 07 Oct 05 nicklas 136       ItemQuery<PluginConfiguration> q = PluginConfiguration.getQuery();
1418 07 Oct 05 nicklas 137       ItemResultList<PluginConfiguration> l = q.list(dc);
1251 06 Sep 05 enell 138       for (int i = 0; i<l.size(); i++)
1251 06 Sep 05 enell 139       {
1251 06 Sep 05 enell 140         write_item(i, l.get(i));
1251 06 Sep 05 enell 141       }
1251 06 Sep 05 enell 142       write("--List plugin configurations OK ("+l.size()+")");
1251 06 Sep 05 enell 143     }
1265 06 Sep 05 nicklas 144     catch (Throwable ex)
1251 06 Sep 05 enell 145     {
1251 06 Sep 05 enell 146       write("--List plugin configurations FAILED");
1251 06 Sep 05 enell 147       ex.printStackTrace();
1251 06 Sep 05 enell 148       ok = false;
1251 06 Sep 05 enell 149     }
1251 06 Sep 05 enell 150     finally
1251 06 Sep 05 enell 151     {
1251 06 Sep 05 enell 152       if (dc != null) dc.close();
1251 06 Sep 05 enell 153     }
1251 06 Sep 05 enell 154   }
1251 06 Sep 05 enell 155
1251 06 Sep 05 enell 156   static void test_delete(int id)
1251 06 Sep 05 enell 157   {
1251 06 Sep 05 enell 158     if (id == 0) return;
1251 06 Sep 05 enell 159     DbControl dc = null;
1251 06 Sep 05 enell 160     try
1251 06 Sep 05 enell 161     {
1251 06 Sep 05 enell 162       dc = TestUtil.getDbControl();
1251 06 Sep 05 enell 163       PluginConfiguration pc = PluginConfiguration.getById(dc, id);
1251 06 Sep 05 enell 164       dc.deleteItem(pc);
5340 10 May 10 nicklas 165       Set<ItemProxy> using = pc.getUsingItems();
5340 10 May 10 nicklas 166       if (using.size() > 0) 
5340 10 May 10 nicklas 167       {
5340 10 May 10 nicklas 168          throw new BaseException(pc + " is used by " + using);
5340 10 May 10 nicklas 169       }
1251 06 Sep 05 enell 170       dc.commit();
1251 06 Sep 05 enell 171       write("--Delete plugin configuration OK");
1251 06 Sep 05 enell 172     }
1265 06 Sep 05 nicklas 173     catch (Throwable ex)
1251 06 Sep 05 enell 174     {
1251 06 Sep 05 enell 175       write("--Delete plugin configuration FAILED");
1251 06 Sep 05 enell 176       ex.printStackTrace();
1251 06 Sep 05 enell 177       ok = false;
1251 06 Sep 05 enell 178     }
1251 06 Sep 05 enell 179     finally
1251 06 Sep 05 enell 180     {
1251 06 Sep 05 enell 181       if (dc != null) dc.close();
1251 06 Sep 05 enell 182     }
1251 06 Sep 05 enell 183   }
1251 06 Sep 05 enell 184   
1251 06 Sep 05 enell 185
1251 06 Sep 05 enell 186   static void test_configure(int id)
1251 06 Sep 05 enell 187   {
1251 06 Sep 05 enell 188     if (id == 0) return;
1251 06 Sep 05 enell 189     DbControl dc = null;
1251 06 Sep 05 enell 190     try
1251 06 Sep 05 enell 191     {
1251 06 Sep 05 enell 192       dc = TestUtil.getDbControl();
1251 06 Sep 05 enell 193       PluginConfiguration pc = PluginConfiguration.getById(dc, id);
1251 06 Sep 05 enell 194       
1376 22 Sep 05 nicklas 195       PluginConfigurationRequest pr = pc.configure();
2348 01 Jun 06 nicklas 196       pr.getRequestInformation();
1251 06 Sep 05 enell 197
1779 17 Jan 06 nicklas 198       pr.setParameterValue("oneString", "aString");
1779 17 Jan 06 nicklas 199       pr.setParameterValues("manyStrings", Arrays.asList("A", "C"));
1779 17 Jan 06 nicklas 200       pr.setParameterValue("selectOneString", "B");
1779 17 Jan 06 nicklas 201       pr.setParameterValues("selectMultipleStrings", Arrays.asList("One", "Three"));
1730 20 Dec 05 nicklas 202       PluginResponse response = pr.invoke();
1778 17 Jan 06 enell 203       if (response.getStatus() == Response.Status.DONE)
1778 17 Jan 06 enell 204       {
1778 17 Jan 06 enell 205         response.saveParameters(dc);
1779 17 Jan 06 nicklas 206         dc.commit();
1778 17 Jan 06 enell 207       }
1778 17 Jan 06 enell 208       else
1778 17 Jan 06 enell 209       {
1779 17 Jan 06 nicklas 210         throw new BaseException(response.getMessage(), response.getErrorList().get(0));
1778 17 Jan 06 enell 211       }
1251 06 Sep 05 enell 212
1251 06 Sep 05 enell 213       dc = TestUtil.getDbControl();
5060 19 Aug 09 nicklas 214       dc.reattachItem(pc, false);
1778 17 Jan 06 enell 215       
1778 17 Jan 06 enell 216       List<?> value = pc.getParameterValues("oneString");
1779 17 Jan 06 nicklas 217       if (value == null || value.size() != 1 || !value.get(0).equals("aString"))
1251 06 Sep 05 enell 218       {
1779 17 Jan 06 nicklas 219         throw new Exception("Cant find the correct value for plugin parameter 'oneString'");
1251 06 Sep 05 enell 220       }
1779 17 Jan 06 nicklas 221       value = pc.getParameterValues("manyStrings");
1779 17 Jan 06 nicklas 222       if (value == null || value.size() != 2 || !value.contains("A") || !value.contains("C"))
1251 06 Sep 05 enell 223       {
1779 17 Jan 06 nicklas 224         throw new Exception("Cant find the correct value for plugin parameter 'manyStrings'");
1251 06 Sep 05 enell 225       }
1779 17 Jan 06 nicklas 226       value = pc.getParameterValues("selectOneString");
1779 17 Jan 06 nicklas 227       if (value == null || value.size() != 1 || !value.get(0).equals("B"))
1779 17 Jan 06 nicklas 228       {
1779 17 Jan 06 nicklas 229         throw new Exception("Cant find the correct value for plugin parameter 'oneString'");
1779 17 Jan 06 nicklas 230       }
1779 17 Jan 06 nicklas 231       value = pc.getParameterValues("selectMultipleStrings");
1779 17 Jan 06 nicklas 232       if (value == null || value.size() != 2 || !value.contains("One") || !value.contains("Three"))
1779 17 Jan 06 nicklas 233       {
1779 17 Jan 06 nicklas 234         throw new Exception("Cant find the correct value for plugin parameter 'manyStrings'");
1779 17 Jan 06 nicklas 235       }
1779 17 Jan 06 nicklas 236
1779 17 Jan 06 nicklas 237       write_item(0, pc);
1779 17 Jan 06 nicklas 238       write_values(pc);
1779 17 Jan 06 nicklas 239       write("--Configure plugin configuration OK");
1251 06 Sep 05 enell 240     }
1265 06 Sep 05 nicklas 241     catch (Throwable ex)
1251 06 Sep 05 enell 242     {
1251 06 Sep 05 enell 243       write("--Configure plugin configuration FAILED");
1251 06 Sep 05 enell 244       ex.printStackTrace();
1251 06 Sep 05 enell 245       ok = false;
1251 06 Sep 05 enell 246     }
1251 06 Sep 05 enell 247     finally
1251 06 Sep 05 enell 248     {
1251 06 Sep 05 enell 249       if (dc != null) dc.close();
1251 06 Sep 05 enell 250     }
1251 06 Sep 05 enell 251   }
1251 06 Sep 05 enell 252
1251 06 Sep 05 enell 253   static void write_header()
1251 06 Sep 05 enell 254   {
1251 06 Sep 05 enell 255     if (!TestUtil.getSilent())
1251 06 Sep 05 enell 256     {
1251 06 Sep 05 enell 257       write("   \tID \tName      \tDescription\tDefinition");
1251 06 Sep 05 enell 258       write("-- \t-- \t--------- \t-----------\t----------");
1251 06 Sep 05 enell 259     }
1251 06 Sep 05 enell 260   }
1251 06 Sep 05 enell 261   
1251 06 Sep 05 enell 262   static void write_item(int i, PluginConfiguration pc)
1251 06 Sep 05 enell 263     throws BaseException
1251 06 Sep 05 enell 264   {
1251 06 Sep 05 enell 265     if (!TestUtil.getSilent())
1251 06 Sep 05 enell 266     {
1251 06 Sep 05 enell 267       System.out.println(i+":\t"+pc.getId()+"\t"+pc.getName()+"\t"+pc.getDescription()+
1251 06 Sep 05 enell 268           "\t"+pc.getPluginDefinition());
1251 06 Sep 05 enell 269     }
1251 06 Sep 05 enell 270   }
1251 06 Sep 05 enell 271   
1251 06 Sep 05 enell 272   static void write_values(PluginConfiguration pc)
1251 06 Sep 05 enell 273     throws BaseException
1251 06 Sep 05 enell 274   {
1251 06 Sep 05 enell 275     if (!TestUtil.getSilent())
1251 06 Sep 05 enell 276     {
1251 06 Sep 05 enell 277       System.out.println("Configuration values:");
1251 06 Sep 05 enell 278       for(String name : pc.getParameterNames())
1251 06 Sep 05 enell 279       {
2348 01 Jun 06 nicklas 280         ParameterInfo pi = pc.getParameterInfo(name);
6988 30 Oct 15 nicklas 281         System.out.println((pi.getLabel() == null ? name : pi.getLabel()) + "=" + pi.getValuesOrMask());
1251 06 Sep 05 enell 282       }
1251 06 Sep 05 enell 283     }
1779 17 Jan 06 nicklas 284     
1251 06 Sep 05 enell 285   }
1251 06 Sep 05 enell 286   
1251 06 Sep 05 enell 287   static void write(String message)
1251 06 Sep 05 enell 288   {
1251 06 Sep 05 enell 289     System.out.println(message);
1251 06 Sep 05 enell 290   }
1251 06 Sep 05 enell 291 }
1251 06 Sep 05 enell 292