jqmlogger.info("\tfile produced storage directory: " + n.getDlRepo()); jqmlogger.info("\tHTTP listening interface: " + n.getDns()); jqmlogger.info("\tlooks for payloads inside: " + n.getRepo());
jqmlogger.info("\tfile produced storage directory: " + n.getDlRepo()); jqmlogger.info("\tHTTP listening interface: " + n.getDns()); jqmlogger.info("\tlooks for payloads inside: " + n.getRepo());
/** * Version of {@link JqmClient#getDeliverableContent(Deliverable)} which does not require the web service APIs to be enabled to work. * Also, returned files do not self-destruct on stream close.<br> * See the javadoc of the original method for details. * * @throws FileNotFoundException */ public InputStream getDeliverableContent(Deliverable file) throws FileNotFoundException { List<com.enioka.jqm.model.Deliverable> dd = com.enioka.jqm.model.Deliverable.select(cnx, "deliverable_select_by_id", file.getId()); if (dd.isEmpty()) { throw new JqmInvalidRequestException("no deliverable with this ID"); } com.enioka.jqm.model.Deliverable d = dd.get(0); JobInstance ji = Query.create().setJobInstanceId(d.getJobId()).run().get(0); String nodeName = ji.getNodeName(); Node n = nodes.get(nodeName); return new FileInputStream(FilenameUtils.concat(n.getDlRepo(), file.getFilePath())); } }
/** * Version of {@link JqmClient#getDeliverableContent(Deliverable)} which does not require the web service APIs to be enabled to work. * Also, returned files do not self-destruct on stream close.<br> * See the javadoc of the original method for details. * * @throws FileNotFoundException */ public InputStream getDeliverableContent(Deliverable file) throws FileNotFoundException { List<com.enioka.jqm.model.Deliverable> dd = com.enioka.jqm.model.Deliverable.select(cnx, "deliverable_select_by_id", file.getId()); if (dd.isEmpty()) { throw new JqmInvalidRequestException("no deliverable with this ID"); } com.enioka.jqm.model.Deliverable d = dd.get(0); JobInstance ji = Query.create().setJobInstanceId(d.getJobId()).run().get(0); String nodeName = ji.getNodeName(); Node n = nodes.get(nodeName); return new FileInputStream(FilenameUtils.concat(n.getDlRepo(), file.getFilePath())); } }
@Override public Integer addDeliverable(String path, String fileLabel) { DbConn cnx = Helpers.getNewDbSession(); try { String outputRoot = this.ji.getNode().getDlRepo(); String ext = FilenameUtils.getExtension(path); String relDestPath = ji.getJD().getApplicationName() + "/" + ji.getId() + "/" + UUID.randomUUID() + "." + ext; String absDestPath = FilenameUtils.concat(outputRoot, relDestPath); String fileName = FilenameUtils.getName(path); jqmlogger.debug("A deliverable is added. Stored as " + absDestPath + ". Initial name: " + fileName); FileUtils.moveFile(new File(path), new File(absDestPath)); cnx.commit(); int res = Helpers.createDeliverable(relDestPath, fileName, fileLabel, this.ji.getId(), cnx); cnx.commit(); return res; } catch (IOException e) { throw new JqmClientException(e); } finally { Helpers.closeQuietly(cnx); } }
@Override public Integer addDeliverable(String path, String fileLabel) { DbConn cnx = Helpers.getNewDbSession(); try { String outputRoot = this.ji.getNode().getDlRepo(); String ext = FilenameUtils.getExtension(path); String relDestPath = ji.getJD().getApplicationName() + "/" + ji.getId() + "/" + UUID.randomUUID() + "." + ext; String absDestPath = FilenameUtils.concat(outputRoot, relDestPath); String fileName = FilenameUtils.getName(path); jqmlogger.debug("A deliverable is added. Stored as " + absDestPath + ". Initial name: " + fileName); FileUtils.moveFile(new File(path), new File(absDestPath)); cnx.commit(); int res = Helpers.createDeliverable(relDestPath, fileName, fileLabel, this.ji.getId(), cnx); cnx.commit(); return res; } catch (IOException e) { throw new JqmClientException(e); } finally { Helpers.closeQuietly(cnx); } }
if (!StringUtils.hasText(nn.getDlRepo()) || !StringUtils.hasText(nn.getRepo()) || !StringUtils.hasText(nn.getTmpDirectory()))
if (!StringUtils.hasText(nn.getDlRepo()) || !StringUtils.hasText(nn.getRepo()) || !StringUtils.hasText(nn.getTmpDirectory()))
/** * Retrieve all the files created by a job, with auth, without SSL */ @Test public void testGetDeliverables() throws Exception { Helpers.setSingleParam("disableWsApi", "false", cnx); Helpers.setSingleParam("enableWsApiAuth", "true", cnx); Helpers.setSingleParam("enableWsApiSsl", "false", cnx); int id = JqmSimpleTest.create(cnx, "pyl.EngineApiSendDeliverable").addDefParameter("filepath", TestHelpers.node.getDlRepo()) .addDefParameter("fileName", "jqm-test-deliverable1.txt").run(this); List<InputStream> tmp = JqmClientFactory.getClient().getJobDeliverablesContent(id); // Assert.assertTrue(tmp.get(0).available() > 0); String res = IOUtils.toString(tmp.get(0), Charset.defaultCharset()); Assert.assertTrue(res.startsWith("Hello World!")); tmp.get(0).close(); }
/** * Retrieve a remote file with authentication, without SSL. */ @Test public void testGetOneDeliverableWithAuth() throws Exception { Helpers.setSingleParam("disableWsApi", "false", cnx); Helpers.setSingleParam("enableWsApiAuth", "true", cnx); Helpers.setSingleParam("enableWsApiSsl", "false", cnx); int jobId = JqmSimpleTest.create(cnx, "pyl.EngineApiSendDeliverable").addDefParameter("filepath", TestHelpers.node.getDlRepo()) .addDefParameter("fileName", "jqm-test-deliverable2.txt").run(this); File f = new File(TestHelpers.node.getDlRepo() + "jqm-test-deliverable2.txt"); Assert.assertEquals(false, f.exists()); // file should have been moved List<com.enioka.jqm.api.Deliverable> files = JqmClientFactory.getClient().getJobDeliverables(jobId); Assert.assertEquals(1, files.size()); InputStream tmp = JqmClientFactory.getClient().getDeliverableContent(files.get(0)); Assert.assertTrue(tmp.available() > 0); String res = IOUtils.toString(tmp, Charset.defaultCharset()); Assert.assertTrue(res.startsWith("Hello World!")); tmp.close(); }
/** * Same as above, except authentication is disabled as well as SSL. */ @Test public void testGetOneDeliverableWithoutAuth() throws Exception { Helpers.setSingleParam("disableWsApi", "false", cnx); Helpers.setSingleParam("enableWsApiAuth", "false", cnx); Helpers.setSingleParam("enableWsApiSsl", "false", cnx); int jobId = JqmSimpleTest.create(cnx, "pyl.EngineApiSendDeliverable").addDefParameter("filepath", TestHelpers.node.getDlRepo()) .addDefParameter("fileName", "jqm-test-deliverable3.txt").run(this); File f = new File(TestHelpers.node.getDlRepo() + "jqm-test-deliverable3.txt"); Assert.assertEquals(false, f.exists()); // file should have been moved List<com.enioka.jqm.api.Deliverable> files = JqmClientFactory.getClient().getJobDeliverables(jobId); Assert.assertEquals(1, files.size()); InputStream tmp = JqmClientFactory.getClient().getDeliverableContent(files.get(0)); Assert.assertTrue(tmp.available() > 0); String res = IOUtils.toString(tmp, Charset.defaultCharset()); Assert.assertTrue(res.startsWith("Hello World!")); tmp.close(); }
/** * Retrieve a remote file with authentication, with SSL. */ @Test public void testGetOneDeliverableWithAuthWithSsl() throws Exception { Helpers.setSingleParam("disableWsApi", "false", cnx); Helpers.setSingleParam("enableWsApiAuth", "true", cnx); Helpers.setSingleParam("enableWsApiSsl", "true", cnx); JqmClientFactory.resetClient(null); JqmClientFactory.setProperty("com.enioka.jqm.ws.truststoreFile", "./conf/trusted.jks"); JqmClientFactory.setProperty("com.enioka.jqm.ws.truststorePass", "SuperPassword"); int jobId = JqmSimpleTest.create(cnx, "pyl.EngineApiSendDeliverable").addDefParameter("filepath", TestHelpers.node.getDlRepo()) .addDefParameter("fileName", "jqm-test-deliverable4.txt").run(this); File f = new File(TestHelpers.node.getDlRepo() + "jqm-test-deliverable4.txt"); Assert.assertEquals(false, f.exists()); // file should have been moved List<com.enioka.jqm.api.Deliverable> files = JqmClientFactory.getClient().getJobDeliverables(jobId); Assert.assertEquals(1, files.size()); InputStream tmp = JqmClientFactory.getClient().getDeliverableContent(files.get(0)); Assert.assertTrue(tmp.available() > 0); String res = IOUtils.toString(tmp, Charset.defaultCharset()); Assert.assertTrue(res.startsWith("Hello World!")); tmp.close(); }
/** * This test is DB only - no simple service use */ @Test public void testGetAllDeliverables() throws Exception { int jobId = JqmSimpleTest.create(cnx, "pyl.EngineApiSendDeliverable").addDefParameter("filepath", TestHelpers.node.getDlRepo()) .addDefParameter("fileName", "jqm-test-deliverable5.txt").run(this); List<com.enioka.jqm.api.Deliverable> tmp = JqmClientFactory.getClient().getJobDeliverables(jobId); Assert.assertEquals(1, tmp.size()); } }
tmp.add("NormalQueue"); XmlQueueExporter.export(TestHelpers.node.getDlRepo() + "xmlexportqueuetest.xml", cnx, tmp); File t = new File(TestHelpers.node.getDlRepo() + "xmlexportqueuetest.xml"); Assert.assertEquals(true, t.exists()); XmlQueueParser.parse(TestHelpers.node.getDlRepo() + "xmlexportqueuetest.xml", cnx);
"DateTime", null, "Franquin", "ModuleMachin", "other", "other", false, cnx); XmlQueueExporter.export(TestHelpers.node.getDlRepo() + "xmlexportqueuetest.xml", cnx); File t = new File(TestHelpers.node.getDlRepo() + "xmlexportqueuetest.xml"); Assert.assertEquals(true, t.exists()); XmlQueueParser.parse(TestHelpers.node.getDlRepo() + "xmlexportqueuetest.xml", cnx);
"DateTime2", null, "Franquin", "ModuleMachin", "other", "other", false, cnx); XmlJobDefExporter.export(TestHelpers.node.getDlRepo() + "xmlexportjobdeftest.xml", cnx); File f = new File(TestHelpers.node.getDlRepo() + "xmlexportjobdeftest.xml"); Assert.assertEquals(true, f.exists()); XmlJobDefParser.parse(TestHelpers.node.getDlRepo() + "xmlexportjobdeftest.xml", cnx);