From 5d6c521948d3ee0fb706859d5a41a03ee1661e76 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Wed, 29 Nov 2017 21:33:08 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30775 --- .../Targets/FTPTargetProcessor.cs | 12 + .../Targets/UNCTargetProcessor.cs | 24 -- ...roperties => mediacube-dev-bsh.properties} | 0 .../nexio/NexioClipEventDispatcher.java | 6 +- .../src/user/commons/octopus/IOctopusAPI.java | 6 +- .../commons/octopus/OctopusDataMiner.java | 242 +++++++++++------- .../octopus/test/OctopusDataMinerTest.java | 10 +- 7 files changed, 172 insertions(+), 128 deletions(-) rename server/-configuration/{mediacube-dev.properties => mediacube-dev-bsh.properties} (100%) diff --git a/client/MaestroShared/Targets/FTPTargetProcessor.cs b/client/MaestroShared/Targets/FTPTargetProcessor.cs index c193ef7f..d4ba5da2 100644 --- a/client/MaestroShared/Targets/FTPTargetProcessor.cs +++ b/client/MaestroShared/Targets/FTPTargetProcessor.cs @@ -58,6 +58,18 @@ namespace MaestroShared.Targets { targetFTP.DeleteFile(currentFile); } + private void CopyStream(Stream istream, long ilength, Stream ostream) { + byte[] buffer = new byte[32768]; + int read = 0; + long overall = 0; + while ((read = istream.Read(buffer, 0, buffer.Length)) > 0) { + ostream.Write(buffer, 0, read); + ostream.Flush(); + overall += read; + Progress = (int)((double)overall / ilength * 100); + } + } + protected override void UploadFile() { using (FileStream istream = File.OpenRead(Input)) { using (Stream ostream = targetFTP.OpenWrite(OutputName)) { diff --git a/client/MaestroShared/Targets/UNCTargetProcessor.cs b/client/MaestroShared/Targets/UNCTargetProcessor.cs index e6d1b154..3b546495 100644 --- a/client/MaestroShared/Targets/UNCTargetProcessor.cs +++ b/client/MaestroShared/Targets/UNCTargetProcessor.cs @@ -331,17 +331,6 @@ namespace MaestroShared.Targets { UploadContent(ouputPath, content); } - protected void CopyStream(Stream istream, long ilength, Stream ostream) { - byte[] buffer = new byte[32768]; - int read, overall = 0; - while ((read = istream.Read(buffer, 0, buffer.Length)) > 0) { - ostream.Write(buffer, 0, read); - ostream.Flush(); - overall += read; - Progress = (int)((double)overall / ilength * 100); - } - } - protected virtual void UploadContent(string outputPath, byte[] content) { File.WriteAllBytes(outputPath, content); } @@ -361,19 +350,6 @@ namespace MaestroShared.Targets { return "/".Equals(workingDir) ? fileName : Path.Combine(path, fileName); } - public static String RemoveDiacritics(String s) { - String normalizedString = s.Normalize(NormalizationForm.FormD); - StringBuilder stringBuilder = new StringBuilder(); - - for (int i = 0; i < normalizedString.Length; i++) { - Char c = normalizedString[i]; - if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) - stringBuilder.Append(c); - } - - return stringBuilder.ToString(); - } - protected string GetDynamicText(string pattern) { return PatternNameMaker.Get(pattern, ID, InputName, Parameters.MetadataText); } diff --git a/server/-configuration/mediacube-dev.properties b/server/-configuration/mediacube-dev-bsh.properties similarity index 100% rename from server/-configuration/mediacube-dev.properties rename to server/-configuration/mediacube-dev-bsh.properties diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java index a0a11137..23359c04 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java @@ -117,7 +117,7 @@ public class NexioClipEventDispatcher implements ClipEventListener { this.controller = new Controller(NEXIO_HOST); this.controller.connect(); //this.controller.getMediabase().getMediaListener().addClipEventListener(this); - logger.info("NexioClipEventDispatcher nexio server is connected."); + logger.info("NEXIO server is connected."); this.progressListenerList = new EventListenerList(); @@ -338,14 +338,14 @@ public class NexioClipEventDispatcher implements ClipEventListener { } /* - + int c = connection.read(buffer, 0, 2); //2 bytes hosszan az idokozben hozzaadott id-k szamossaga if (c < 2) { throw new ProtocolException("c, 2, 2"); } //MSB, LSB - + return nofIds; */ return ret; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java b/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java index 3266b69c..69d3e8d4 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java @@ -6,9 +6,9 @@ import java.util.List; import com.ibm.nosql.json.api.DBObject; public interface IOctopusAPI { - static final String RUNDOWN_COLLECTION_NAME = "rundowns"; - static final String STORY_COLLECTION_NAME = "stories"; - static final String STORY_FOLDER_COLLECTION_NAME = "story_folders"; + static final String RUNDOWN_COLLECTION = "rundowns"; + static final String STORY_COLLECTION = "stories"; + static final String FOLDER_COLLECTION = "story_folders"; static final String TIME_COLLECTION_NAME = "time"; static final String LASTUPDATE_TIME = "lastUpdateTime"; static final String NEXIO_MOS = "NEXIO.MOS"; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusDataMiner.java b/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusDataMiner.java index d5df0df1..5f427ad4 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusDataMiner.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusDataMiner.java @@ -34,6 +34,7 @@ import user.commons.remotestore.IProgressEventListener; import user.commons.remotestore.ProgressEvent; public class OctopusDataMiner implements Runnable { + private static final String _TMP = "_tmp"; private static final Logger logger = LogManager.getLogger(); private static final String LINEFEED = "\r\n"; private static final String SIMPLE_LINEFEED = "\n"; @@ -70,6 +71,9 @@ public class OctopusDataMiner implements Runnable { private Map storedStoryRundowns; private Map storedStoryStoryFolders; private Map storedStoryMosObjects; + private String RUNDOWN_COLLECTION = IOctopusAPI.RUNDOWN_COLLECTION; + private String FOLDER_COLLECTION = IOctopusAPI.FOLDER_COLLECTION; + private String STORY_COLLECTION = IOctopusAPI.STORY_COLLECTION; public OctopusDataMiner() { String jdbcUrl = System.getProperty("jobengine.nosql.db.url"); @@ -121,7 +125,7 @@ public class OctopusDataMiner implements Runnable { } private void buildStoriesReferences() { - DBCollection collection = db.getCollection(IOctopusAPI.STORY_COLLECTION_NAME); + DBCollection collection = db.getCollection(STORY_COLLECTION); DBCursor cursor = collection.find(null, new BasicDBObject(IOctopusAPI.ID, 1).append(IOctopusAPI.REF_RUNDOWN, 1).append(IOctopusAPI.REF_STORYFOLDER, 1) .append(IOctopusAPI.MOS_OBJECTS, 1)); //DBCursor find = collection.find(QueryBuilder.start(ID).greaterThan(0).get()); @@ -158,7 +162,7 @@ public class OctopusDataMiner implements Runnable { } } - private Map buildStoryFolderReferences(BasicDBList storyFolders) { + private Map buildFolderReferences(BasicDBList storyFolders) { Map result = new HashMap<>(); List storyFolderList = NoSQLUtils.asList(storyFolders); for (BasicDBObject storyFolder : storyFolderList) { @@ -181,9 +185,9 @@ public class OctopusDataMiner implements Runnable { } public void clear() { - db.getCollection(IOctopusAPI.RUNDOWN_COLLECTION_NAME).remove(); - db.getCollection(IOctopusAPI.STORY_COLLECTION_NAME).remove(); - db.getCollection(IOctopusAPI.STORY_FOLDER_COLLECTION_NAME).remove(); + db.getCollection(RUNDOWN_COLLECTION).remove(); + db.getCollection(STORY_COLLECTION).remove(); + db.getCollection(FOLDER_COLLECTION).remove(); db.getCollection(IOctopusAPI.TIME_COLLECTION_NAME).remove(); } @@ -205,7 +209,7 @@ public class OctopusDataMiner implements Runnable { private void deleteOrphanStories() { try { - DBCollection collection = db.getCollection(IOctopusAPI.STORY_COLLECTION_NAME); + DBCollection collection = db.getCollection(STORY_COLLECTION); BasicDBObject query = (BasicDBObject) QueryBuilder.start().put("id").notIn(storyIDs.toArray()).get(); WriteResult res = collection.remove(query); logger.trace(String.format("Deleted orphan stories: %d", res.getN())); @@ -215,19 +219,116 @@ public class OctopusDataMiner implements Runnable { } private void ensureIndexes() { - DBCollection collection = db.getCollection(IOctopusAPI.STORY_FOLDER_COLLECTION_NAME); + DBCollection collection = db.getCollection(FOLDER_COLLECTION); if (collection.count() == 0) collection.ensureIndex(IOctopusAPI.ID); - collection = db.getCollection(IOctopusAPI.RUNDOWN_COLLECTION_NAME); + collection = db.getCollection(RUNDOWN_COLLECTION); if (collection.count() == 0) { collection.ensureIndex(IOctopusAPI.ID); collection.ensureIndex(IOctopusAPI.SCHEDULED_START); } - collection = db.getCollection(IOctopusAPI.STORY_COLLECTION_NAME); + collection = db.getCollection(STORY_COLLECTION); if (collection.count() == 0) collection.ensureIndex(IOctopusAPI.ID); } + public void execute() { + logger.trace(STARTING); + try { + RUNDOWN_COLLECTION = IOctopusAPI.RUNDOWN_COLLECTION + _TMP; + FOLDER_COLLECTION = IOctopusAPI.FOLDER_COLLECTION + _TMP; + STORY_COLLECTION = IOctopusAPI.STORY_COLLECTION + _TMP; + + logger.info("Fetch rundowns"); + BasicDBList rundowns = queryRundowns(); + logger.info("Fetch rundown story references"); + storyRundowns = buildRundownReferences(rundowns); + logger.info("Fetch story folders"); + BasicDBList storyFolders = queryStoryFolders(); + logger.info("Fetch folder story references"); + storyStoryFolders = buildFolderReferences(storyFolders); + + if (rundowns == null || rundowns.size() == 0) { + progressEvent.setProgress(50); + fireProgressEvent(progressEvent); + } else { + logger.info("Process rundowns"); + storeRundowns(rundowns, null); + } + + if (storyFolders == null || storyFolders.size() == 0) { + progressEvent.setProgress(100); + fireProgressEvent(progressEvent); + } else { + logger.info("Process story folders"); + storeStoryFolders(storyFolders, null); + } + setLastUpdateTime(new Date()); + logger.info("Activate"); + db.getCollection(RUNDOWN_COLLECTION).rename(IOctopusAPI.RUNDOWN_COLLECTION, true); + db.getCollection(FOLDER_COLLECTION).rename(IOctopusAPI.FOLDER_COLLECTION, true); + db.getCollection(STORY_COLLECTION).rename(IOctopusAPI.STORY_COLLECTION, true); + + } catch (Exception e) { + logger.catching(e); + throw e; + } + logger.trace(FINISHED); + + } + + private BasicDBList extractRelevantMOSObjects(BasicDBObject story) { + List mosObjects = NoSQLUtils.asList(story, IOctopusAPI.MOS_OBJECTS); + if (mosObjects == null) + return null; + BasicDBList result = null; + for (BasicDBObject mosObject : mosObjects) { + if (!mosObject.containsKey(IOctopusAPI.MOS_ID)) + continue; + String mosId = mosObject.getString(IOctopusAPI.MOS_ID); + if (!IOctopusAPI.NEXIO_MOS.equals(mosId)) + continue; + if (result == null) + result = new BasicDBList(); + result.add(mosObject); + } + return result; + } + + // private boolean isModified(Date date, BasicDBObject object, String name) { + // Date actualModifiedString = toDate(object, name); + // if (actualModifiedString == null) + // logger.trace(ACTUAL_MODIFIED_STRING_IS_NULL); + // int result = date.compareTo(actualModifiedString); + // return result <= 0; + // } + + private String extractScriptContent(BasicDBObject story) { + BasicDBObject script = NoSQLUtils.asDBObject(story, IOctopusAPI.SCRIPT); + if (script == null || script.isEmpty()) + return null; + + List body = NoSQLUtils.asList(script, IOctopusAPI.BODY); + if (body == null || body.size() == 0) + return null; + + StringBuilder sb = new StringBuilder(); + + for (BasicDBObject bodyItem : body) { + if (bodyItem.containsKey(IOctopusAPI.LABEL)) { + sb.append(bodyItem.getString(IOctopusAPI.LABEL)); + sb.append(LINEFEED); + } + List contents = NoSQLUtils.asList(bodyItem, IOctopusAPI.CONTENT); + if (contents == null) + continue; + for (BasicDBObject content : contents) { + sb.append(extractContent(content)); + } + } + return sb.length() == 0 ? null : sb.toString(); + } + private void fireProgressEvent(ProgressEvent evt) { logger.debug("Progress changed to " + evt.getProgress() + "%"); if (progressListenerList == null) @@ -239,7 +340,7 @@ public class OctopusDataMiner implements Runnable { } } - private String GetContent(BasicDBObject content) { + private String extractContent(BasicDBObject content) { String scriptContent = ""; if (!content.containsKey(IOctopusAPI.TYPE)) return scriptContent; @@ -269,7 +370,7 @@ public class OctopusDataMiner implements Runnable { if (innerContents != null) { for (BasicDBObject actualInnerContent : innerContents) { if (actualInnerContent != null && actualInnerContent.isEmpty()) - scriptContent += GetContent(actualInnerContent); + scriptContent += extractContent(actualInnerContent); } } } @@ -279,15 +380,7 @@ public class OctopusDataMiner implements Runnable { return scriptContent; } - // private boolean isModified(Date date, BasicDBObject object, String name) { - // Date actualModifiedString = toDate(object, name); - // if (actualModifiedString == null) - // logger.trace(ACTUAL_MODIFIED_STRING_IS_NULL); - // int result = date.compareTo(actualModifiedString); - // return result <= 0; - // } - - private String GetCustomColumnValue(String columnName, BasicDBObject story) { + private String extractCustomColumnValue(String columnName, BasicDBObject story) { List customColumns = NoSQLUtils.asList(story, IOctopusAPI.CUSTOM_COLUMNS); if (customColumns == null) return null; @@ -317,50 +410,6 @@ public class OctopusDataMiner implements Runnable { return result; } - private BasicDBList GetRelevantMOSObjects(BasicDBObject story) { - List mosObjects = NoSQLUtils.asList(story, IOctopusAPI.MOS_OBJECTS); - if (mosObjects == null) - return null; - BasicDBList result = null; - for (BasicDBObject mosObject : mosObjects) { - if (!mosObject.containsKey(IOctopusAPI.MOS_ID)) - continue; - String mosId = mosObject.getString(IOctopusAPI.MOS_ID); - if (!IOctopusAPI.NEXIO_MOS.equals(mosId)) - continue; - if (result == null) - result = new BasicDBList(); - result.add(mosObject); - } - return result; - } - - private String GetScriptContent(BasicDBObject story) { - BasicDBObject script = NoSQLUtils.asDBObject(story, IOctopusAPI.SCRIPT); - if (script == null || script.isEmpty()) - return null; - - List body = NoSQLUtils.asList(script, IOctopusAPI.BODY); - if (body == null || body.size() == 0) - return null; - - StringBuilder sb = new StringBuilder(); - - for (BasicDBObject bodyItem : body) { - if (bodyItem.containsKey(IOctopusAPI.LABEL)) { - sb.append(bodyItem.getString(IOctopusAPI.LABEL)); - sb.append(LINEFEED); - } - List contents = NoSQLUtils.asList(bodyItem, IOctopusAPI.CONTENT); - if (contents == null) - continue; - for (BasicDBObject content : contents) { - sb.append(GetContent(content)); - } - } - return sb.length() == 0 ? null : sb.toString(); - } - private boolean isModified(Date date, BasicDBObject object) { if (date == null) return true; @@ -451,7 +500,7 @@ public class OctopusDataMiner implements Runnable { BasicDBList rundowns = queryRundowns(); storyRundowns = buildRundownReferences(rundowns); BasicDBList storyFolders = queryStoryFolders(); - storyStoryFolders = buildStoryFolderReferences(storyFolders); + storyStoryFolders = buildFolderReferences(storyFolders); if (rundowns == null || rundowns.size() == 0) { progressEvent.setProgress(50); @@ -477,10 +526,6 @@ public class OctopusDataMiner implements Runnable { public void run(boolean forceFull) { if (forceFull) { - // RUNDOWN_COLLECTION_NAME = "rundowns_tmp"; - // STORY_COLLECTION_NAME = "stories_tmp"; - // STORY_FOLDER_COLLECTION_NAME = "storyfolders_tmp"; - // TIME_COLLECTION_NAME = "octopusSyncTime_tmp"; clear(); } run(); @@ -520,7 +565,7 @@ public class OctopusDataMiner implements Runnable { storeRundownStories(stories, lastUpdateTime); rundown.put(IOctopusAPI.SCHEDULED_START, toDate(rundown, IOctopusAPI.SCHEDULED_START)); rundown.put(IOctopusAPI.MODIFIED, toDate(rundown, IOctopusAPI.MODIFIED)); - DBCollection collection = db.getCollection(IOctopusAPI.RUNDOWN_COLLECTION_NAME); + DBCollection collection = db.getCollection(RUNDOWN_COLLECTION); if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, rundown))) { logger.debug(SAVING_RUNDOWN, rundownID, name); collection.save(rundown); @@ -565,35 +610,38 @@ public class OctopusDataMiner implements Runnable { storyIDs.add(storyID); story.put(IOctopusAPI.MODIFIED, toDate(story, IOctopusAPI.MODIFIED)); BasicDBList rundownRef = storyRundowns.get(storyID); - rundownRef = (rundownRef == null) ? new BasicDBList() : rundownRef; BasicDBList storyFolderRef = storyStoryFolders.get(storyID); - storyFolderRef = (storyFolderRef == null) ? new BasicDBList() : storyFolderRef; - BasicDBList modifiedMOS = GetRelevantMOSObjects(story); - modifiedMOS = (modifiedMOS == null) ? new BasicDBList() : modifiedMOS; - - boolean uptodate = true; - if (!isModified(lastUpdateTime, story)) { - BasicDBList storedRundownRef = storedStoryRundowns.get(storyID); - storedRundownRef = (storedRundownRef == null) ? new BasicDBList() : storedRundownRef; - uptodate = storedRundownRef.equals(rundownRef); - - if (uptodate) { - BasicDBList storedStoryFolderRef = storedStoryStoryFolders.get(storyID); - storedStoryFolderRef = (storedStoryFolderRef == null) ? new BasicDBList() : storedStoryFolderRef; - uptodate = storedStoryFolderRef.equals(storyFolderRef); - } + BasicDBList modifiedMOS = extractRelevantMOSObjects(story); - if (uptodate) { - BasicDBList storedMOS = storedStoryMosObjects.get(storyID); - storedMOS = (storedMOS == null) ? new BasicDBList() : storedMOS; - uptodate = storedMOS.equals(modifiedMOS); - } + if (lastUpdateTime != null) { + rundownRef = (rundownRef == null) ? new BasicDBList() : rundownRef; + storyFolderRef = (storyFolderRef == null) ? new BasicDBList() : storyFolderRef; + modifiedMOS = (modifiedMOS == null) ? new BasicDBList() : modifiedMOS; + + boolean uptodate = true; + if (!isModified(lastUpdateTime, story)) { + BasicDBList storedRundownRef = storedStoryRundowns.get(storyID); + storedRundownRef = (storedRundownRef == null) ? new BasicDBList() : storedRundownRef; + uptodate = storedRundownRef.equals(rundownRef); + + if (uptodate) { + BasicDBList storedStoryFolderRef = storedStoryStoryFolders.get(storyID); + storedStoryFolderRef = (storedStoryFolderRef == null) ? new BasicDBList() : storedStoryFolderRef; + uptodate = storedStoryFolderRef.equals(storyFolderRef); + } + + if (uptodate) { + BasicDBList storedMOS = storedStoryMosObjects.get(storyID); + storedMOS = (storedMOS == null) ? new BasicDBList() : storedMOS; + uptodate = storedMOS.equals(modifiedMOS); + } - if (uptodate) - return; + if (uptodate) + return; + } } - DBCollection collection = db.getCollection(IOctopusAPI.STORY_COLLECTION_NAME); + DBCollection collection = db.getCollection(STORY_COLLECTION); if (lastUpdateTime != null) { BasicDBObject orig = (BasicDBObject) collection.findOne(new BasicDBObject(IOctopusAPI.ID, storyID), new BasicDBObject(IOctopusAPI.ID, 1)); if (orig != null) @@ -603,7 +651,7 @@ public class OctopusDataMiner implements Runnable { story.put(IOctopusAPI.REF_RUNDOWN, rundownRef); if (storyFolderRef != null) story.put(IOctopusAPI.REF_STORYFOLDER, storyFolderRef); - String scriptContent = GetScriptContent(story); + String scriptContent = extractScriptContent(story); story.put(SCRIPT_CONTENT, scriptContent); if (modifiedMOS == null || modifiedMOS.isEmpty()) { if (story.containsKey(IOctopusAPI.MOS_OBJECTS)) @@ -611,7 +659,7 @@ public class OctopusDataMiner implements Runnable { } else story.put(IOctopusAPI.MOS_OBJECTS, modifiedMOS); - String parentStoryId = GetCustomColumnValue(IOctopusAPI.PARENT_STORY_ID, story); + String parentStoryId = extractCustomColumnValue(IOctopusAPI.PARENT_STORY_ID, story); if (parentStoryId == null) story.append(IOctopusAPI.PARENT_STORY_ID, storyID); else @@ -630,7 +678,7 @@ public class OctopusDataMiner implements Runnable { if (stories != null) storeStoryFolderStories(stories, lastUpdateTime); storyFolder.put(IOctopusAPI.MODIFIED, toDate(storyFolder, IOctopusAPI.MODIFIED)); - DBCollection collection = db.getCollection(IOctopusAPI.STORY_FOLDER_COLLECTION_NAME); + DBCollection collection = db.getCollection(FOLDER_COLLECTION); if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, storyFolder))) { String name = storyFolder.getString(IOctopusAPI.NAME); logger.debug("Storing story folder {}", name); diff --git a/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java b/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java index 65657911..80e0bcc7 100644 --- a/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java +++ b/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java @@ -44,7 +44,7 @@ public class OctopusDataMinerTest { Properties properties = new Properties(); URL srcLocation = MethodHandles.lookup().lookupClass().getProtectionDomain().getCodeSource().getLocation(); - URL location = new URL(srcLocation, "../../-configuration/mediacube-dev.properties"); + URL location = new URL(srcLocation, "../../-configuration/mediacube-dev-bsh.properties"); //URL location = new URL(srcLocation, "../../-configuration/mediacube-dev-user.properties"); properties.load(new FileInputStream(location.toURI().getPath().toString())); System.getProperties().putAll(properties); @@ -97,6 +97,14 @@ public class OctopusDataMinerTest { } } + @Test + public void integrationExecute() { + // fixture + sut = new OctopusDataMiner(); + // Exercise + sut.execute(); + } + @Test public void integrationTestClear() { // fixture -- 2.54.0