/* * Copyright (C) 2013 SeqWare * * 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 io.seqware.pipeline.plugins.sanity; import com.google.common.collect.Lists; import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.List; import net.sourceforge.seqware.common.module.ReturnValue; import net.sourceforge.seqware.common.util.Log; import net.sourceforge.seqware.pipeline.plugins.ITUtility; import net.sourceforge.seqware.pipeline.plugins.PluginRunnerET; import net.sourceforge.seqware.pipeline.tutorial.AccessionMap; import net.sourceforge.seqware.pipeline.tutorial.UserPhase4; import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.Test; /** * Build and install a bundle, used by both the User tutorial and the Developer tutorial * * @author dyuen */ public class ProvidedBundleUserPhase5 { public static final String WORKFLOW = "Workflow"; @Test public void installHandyProvidedBundleTest() throws IOException { Collection<File> listFiles = FileUtils.listFiles(new File(System.getProperty("user.dir")), new String[] { "zip" }, false); Assert.assertTrue("could not find appropriate bundle for testing", listFiles.size() > 0); File bundleUsed = listFiles.iterator().next(); Log.info("Using bundle " + bundleUsed.getAbsolutePath() + " for testing"); // for all tests, we're going to need to create and install our basic archetypes String installCommand = "-p net.sourceforge.seqware.pipeline.plugins.BundleManager -verbose -- -i -b " + bundleUsed.getAbsolutePath(); String installOutput = ITUtility.runSeqWareJar(installCommand, ReturnValue.SUCCESS, null); Log.info(installOutput); int workflowAccession = ITUtility.extractSwid(installOutput); AccessionMap.accessionMap.put(WORKFLOW, String.valueOf(workflowAccession)); File exportINIFile = exportINI(new PluginRunnerET(), Lists.newArrayList(workflowAccession)); String localhost = ITUtility.getLocalhost(); Log.info("Attempting to launch with wait on host: " + localhost); // launch, slightly unlike the tutorial, I'm going to wait to ensure that we have results to export in the next phase String listCommand = "-p net.sourceforge.seqware.pipeline.plugins.WorkflowLauncher -- --ini-files " + exportINIFile.getAbsolutePath() + " --workflow-accession " + workflowAccession + " --parent-accessions " + AccessionMap.accessionMap.get(UserPhase4.FILE) + " --wait --host " + localhost; String listOutput = ITUtility.runSeqWareJar(listCommand, ReturnValue.SUCCESS, null); Log.info(listOutput); } protected File exportINI(PluginRunnerET pit, List<Integer> accessions) throws IOException { // launch our specific workflow and get store its workflow run accession File exportINIFile = pit.exportINIFile("Java workflow", accessions.get(0), false); return exportINIFile; } }