-
Notifications
You must be signed in to change notification settings - Fork 594
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d2d6669
commit 9dab8f0
Showing
4 changed files
with
162 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
116 changes: 116 additions & 0 deletions
116
modules/nextflow/src/main/groovy/nextflow/trace/DefaultObserverFactory.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
package nextflow.trace | ||
|
||
import java.nio.file.Path | ||
|
||
import nextflow.Session | ||
|
||
/** | ||
* Creates Nextflow observes object | ||
* | ||
* @author Paolo Di Tommaso <paolo.ditommaso@gmail.com> | ||
*/ | ||
class DefaultObserverFactory implements TraceObserverFactory { | ||
|
||
private Map config | ||
private Session session | ||
|
||
@Override | ||
Collection<TraceObserver> create(Session session) { | ||
this.session = session | ||
this.config = session.config | ||
|
||
final result = new ArrayList(10) | ||
createTraceFileObserver(result) | ||
createReportObserver(result) | ||
createTimelineObserver(result) | ||
createDagObserver(result) | ||
createWebLogObserver(result) | ||
createAnsiLogObserver(result) | ||
return result | ||
} | ||
|
||
protected void createAnsiLogObserver(Collection<TraceObserver> result) { | ||
if( session.ansiLog ) { | ||
session.ansiLogObserver = new AnsiLogObserver() | ||
result << session.ansiLogObserver | ||
} | ||
} | ||
|
||
/** | ||
* Create workflow message observer | ||
* @param result | ||
*/ | ||
protected void createWebLogObserver(Collection<TraceObserver> result) { | ||
Boolean isEnabled = config.navigate('weblog.enabled') as Boolean | ||
String url = config.navigate('weblog.url') as String | ||
if ( isEnabled ) { | ||
if ( !url ) url = WebLogObserver.DEF_URL | ||
def observer = new WebLogObserver(url) | ||
result << observer | ||
} | ||
} | ||
|
||
/** | ||
* Create workflow report file observer | ||
*/ | ||
protected void createReportObserver(Collection<TraceObserver> result) { | ||
Boolean isEnabled = config.navigate('report.enabled') as Boolean | ||
if( !isEnabled ) | ||
return | ||
|
||
String fileName = config.navigate('report.file') | ||
def maxTasks = config.navigate('report.maxTasks', ReportObserver.DEF_MAX_TASKS) as int | ||
if( !fileName ) fileName = ReportObserver.DEF_FILE_NAME | ||
def report = (fileName as Path).complete() | ||
def observer = new ReportObserver(report) | ||
observer.maxTasks = maxTasks | ||
|
||
result << observer | ||
} | ||
|
||
/** | ||
* Create timeline report file observer | ||
*/ | ||
protected void createTimelineObserver(Collection<TraceObserver> result) { | ||
Boolean isEnabled = config.navigate('timeline.enabled') as Boolean | ||
if( !isEnabled ) | ||
return | ||
|
||
String fileName = config.navigate('timeline.file') | ||
if( !fileName ) fileName = TimelineObserver.DEF_FILE_NAME | ||
def traceFile = (fileName as Path).complete() | ||
def observer = new TimelineObserver(traceFile) | ||
result << observer | ||
} | ||
|
||
protected void createDagObserver(Collection<TraceObserver> result) { | ||
Boolean isEnabled = config.navigate('dag.enabled') as Boolean | ||
if( !isEnabled ) | ||
return | ||
|
||
String fileName = config.navigate('dag.file') | ||
if( !fileName ) fileName = GraphObserver.DEF_FILE_NAME | ||
def traceFile = (fileName as Path).complete() | ||
def observer = new GraphObserver(traceFile) | ||
result << observer | ||
} | ||
|
||
/* | ||
* create the execution trace observer | ||
*/ | ||
protected void createTraceFileObserver(Collection<TraceObserver> result) { | ||
Boolean isEnabled = config.navigate('trace.enabled') as Boolean | ||
if( !isEnabled ) | ||
return | ||
|
||
String fileName = config.navigate('trace.file') | ||
if( !fileName ) fileName = TraceFileObserver.DEF_FILE_NAME | ||
def traceFile = (fileName as Path).complete() | ||
def observer = new TraceFileObserver(traceFile) | ||
config.navigate('trace.raw') { it -> observer.useRawNumbers(it == true) } | ||
config.navigate('trace.sep') { observer.separator = it } | ||
config.navigate('trace.fields') { observer.setFieldsAndFormats(it) } | ||
result << observer | ||
} | ||
|
||
} |
20 changes: 20 additions & 0 deletions
20
modules/nextflow/src/main/groovy/nextflow/trace/TraceObserverFactory.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package nextflow.trace | ||
|
||
import nextflow.Session | ||
|
||
/** | ||
* Factory class creating {@link TraceObserver} instances | ||
* | ||
* @author Paolo Di Tommaso <paolo.ditommaso@gmail.com> | ||
*/ | ||
interface TraceObserverFactory { | ||
|
||
/** | ||
* Register the observer on the current session object | ||
* | ||
* @param session The current {@link nextflow.Session} instance | ||
* @return One or more instances of {@link TraceObserver} objects | ||
*/ | ||
Collection<TraceObserver> create(Session session) | ||
|
||
} |
17 changes: 17 additions & 0 deletions
17
modules/nextflow/src/main/resources/META-INF/services/nextflow.trace.TraceObserverFactory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# | ||
# Copyright 2019, Seqera Labs | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
|
||
nextflow.trace.DefaultObserverFactory |