diff --git a/index.md b/index.md index 444468e4a2..4caa2a9cc0 100644 --- a/index.md +++ b/index.md @@ -235,9 +235,13 @@ Test quality metrics for framework packages.
latest |
- main |
+ autobom |
mutation | |
---|---|---|---|---|
2024-06-07T09:37:18 |
+ autobom |
+ mutation | +||
2024-06-07T07:22:45 |
main |
mutation | @@ -314,10 +318,6 @@ Test quality metrics for framework packages.dependabot/npm_and_yarn/report/report-ng/babel/core-7.24.6 |
mutation |
2024-05-27T01:13:54 |
- dependabot/npm_and_yarn/report/report-ng/mermaid-10.9.1 |
- mutation | -
- -1 - | -- - - - - - | -package com.mastercard.test.flow.builder; |
- -2 - | -- - - - - - | -|
- -3 - | -- - - - - - | -import java.util.function.Consumer; |
- -4 - | -- - - - - - | -|
- -5 - | -- - - - - - | -import com.mastercard.test.flow.Dependency; |
- -6 - | -- - - - - - | -import com.mastercard.test.flow.Flow; |
- -7 - | -- - - - - - | -import com.mastercard.test.flow.builder.mutable.MutableDependency; |
- -8 - | -- - - - - - | -import com.mastercard.test.flow.builder.mutable.MutableFlow; |
- -9 - | -- - - - - - | -|
- -10 - | -- - - - - - | -/** |
- -11 - | -- - - - - - | - * Convenience class for defining a {@link Flow} based on an existing instance |
- -12 - | -- - - - - - | - */ |
- -13 - | -- - - - - - | -@SkipTrace |
- -14 - | -- - - - - - | -public class Deriver extends Builder<Deriver> { |
- -15 - | -- - - - - - | -|
- -16 - | -- - - - - - | - private Deriver( Flow basis ) { |
- -17 - | -- - - - - - | - super( new MutableFlow( basis ) ); |
- -18 - | -- - - - - - | - } |
- -19 - | -- - - - - - | -|
- -20 - | -- - - - - - | - /** |
- -21 - | -- - - - - - | - * Constructs a derived {@link Flow} |
- -22 - | -- - - - - - | - * |
- -23 - | -- - - - - - | - * @param basis The {@link Flow} on which to build |
- -24 - | -- - - - - - | - * @param steps How to update the new {@link Flow} |
- -25 - | -- - - - - - | - * @return The resulting {@link Flow} |
- -26 - | -- - - - - - | - */ |
- -27 - | -- - - - - - | - @SafeVarargs |
- -28 - | -- - - - - - | - public static Flow build( Flow basis, Consumer<? super Deriver>... steps ) { |
- -29 - | -- - - - - - | - Deriver d = new Deriver( basis ); |
- -30 - | -- - - - - - | -|
- -31 - | -- - - - - - | - // I can't think of any situation where you'd want to inherit a chain tag, so |
- -32 - | -- - - - - - | - // let's default to removing them |
- -33 - | -
-
-1
-
-1. build : removed call to java/util/function/Consumer::accept → KILLED - - - - |
- Chain.unlink().accept( d ); |
- -34 - | -- - - - - - | -|
- -35 - | -- - - - - - | - for( Consumer<? super Deriver> step : steps ) { |
- -36 - | -
-
-1
-
-1. build : removed call to java/util/function/Consumer::accept → KILLED - - - - |
- step.accept( d ); |
- -37 - | -- - - - - - | - } |
- -38 - | -
-
-1
-
-1. build : replaced return value with null for com/mastercard/test/flow/builder/Deriver::build → KILLED - - - - |
- return d.build(); |
- -39 - | -- - - - - - | - } |
- -40 - | -- - - - - - | -|
- -41 - | -- - - - - - | - /** |
- -42 - | -- - - - - - | - * <p> |
- -43 - | -- - - - - - | - * Imports dependencies from the basis {@link Flow}. The {@link Dependency} |
- -44 - | -- - - - - - | - * endpoint {@link Flow}s will be updated: |
- -45 - | -- - - - - - | - * </p> |
- -46 - | -- - - - - - | - * <ul> |
- -47 - | -- - - - - - | - * <li>{@link Dependency#source()} updated per the arguments to this method</li> |
- -48 - | -- - - - - - | - * <li>{@link Dependency#sink()} updated to the flow under construction</li> |
- -49 - | -- - - - - - | - * </ul> |
- -50 - | -- - - - - - | - * <p> |
- -51 - | -- - - - - - | - * All other aspects of the imported {@link Dependency} will remain the same. |
- -52 - | -- - - - - - | - * </p> |
- -53 - | -- - - - - - | - * |
- -54 - | -- - - - - - | - * @param oldDep The {@link Flow} upon which the basis {@link Flow} depended |
- -55 - | -- - - - - - | - * @param newDep The {@link Flow} upon which this {@link Flow} will depend in |
- -56 - | -- - - - - - | - * the same way |
- -57 - | -- - - - - - | - * @return <code>this</code> |
- -58 - | -- - - - - - | - */ |
- -59 - | -- - - - - - | - public Deriver inheritDependencies( Flow oldDep, Flow newDep ) { |
- -60 - | -- - - - - - | - flow.basis().dependencies() |
- -61 - | -
-
-2
-
-1. lambda$inheritDependencies$0 : replaced boolean return with true for com/mastercard/test/flow/builder/Deriver::lambda$inheritDependencies$0 → KILLED -2. lambda$inheritDependencies$0 : negated conditional → KILLED - - - - |
- .filter( d -> d.source().flow() == oldDep ) |
- -62 - | -- - - - - - | - .map( MutableDependency::new ) |
- -63 - | -
-
-1
-
-1. lambda$inheritDependencies$3 : replaced return value with null for com/mastercard/test/flow/builder/Deriver::lambda$inheritDependencies$3 → KILLED - - - - |
- .map( d -> d |
- -64 - | -- - - - - - | - .source( s -> s.flow( newDep ) ) |
- -65 - | -- - - - - - | - .sink( s -> s.flow( SELF ) ) ) |
- -66 - | -
-
-1
-
-1. inheritDependencies : removed call to java/util/stream/Stream::forEach → KILLED - - - - |
- .forEach( flow::dependency ); |
- -67 - | -
-
-1
-
-1. inheritDependencies : replaced return value with null for com/mastercard/test/flow/builder/Deriver::inheritDependencies → KILLED - - - - |
- return this; |
- -68 - | -- - - - - - | - } |
- -69 - | -- - - - - - | -|
- -70 - | -- - - - - - | - private Flow build() { |
- -71 - | -
-
-1
-
-1. build : replaced return value with null for com/mastercard/test/flow/builder/Deriver::build → KILLED - - - - |
- return flow.build(); |
- -72 - | -- - - - - - | - } |
- -73 - | -- - - - - - | -|
- -74 - | -- - - - - - | -} |
Mutations | ||
33 | -- |
-
-
-
- 1.1 |
-
36 | -- |
-
-
-
- 1.1 |
-
38 | -- |
-
-
-
- 1.1 |
-
61 | -- |
-
-
-
- 1.1 2.2 |
-
63 | -- |
-
-
-
- 1.1 |
-
66 | -- |
-
-
-
- 1.1 |
-
67 | -- |
-
-
-
- 1.1 |
-
71 | -- |
-
-
-
- 1.1 |
-
- -1 - | -- - - - - - | -package com.mastercard.test.flow.report.duct; |
- -2 - | -- - - - - - | -|
- -3 - | -- - - - - - | -import static com.mastercard.test.flow.report.FailureSink.SILENT; |
- -4 - | -- - - - - - | -import static java.util.stream.Collectors.joining; |
- -5 - | -- - - - - - | -|
- -6 - | -- - - - - - | -import java.awt.GraphicsEnvironment; |
- -7 - | -- - - - - - | -import java.io.File; |
- -8 - | -- - - - - - | -import java.net.URL; |
- -9 - | -- - - - - - | -import java.nio.file.Files; |
- -10 - | -- - - - - - | -import java.nio.file.Path; |
- -11 - | -- - - - - - | -import java.nio.file.Paths; |
- -12 - | -- - - - - - | -import java.time.Duration; |
- -13 - | -- - - - - - | -import java.time.Instant; |
- -14 - | -- - - - - - | -import java.time.temporal.ChronoUnit; |
- -15 - | -- - - - - - | -import java.util.ArrayList; |
- -16 - | -- - - - - - | -import java.util.Collection; |
- -17 - | -- - - - - - | -import java.util.HashMap; |
- -18 - | -- - - - - - | -import java.util.List; |
- -19 - | -- - - - - - | -import java.util.Map; |
- -20 - | -- - - - - - | -import java.util.Objects; |
- -21 - | -- - - - - - | -import java.util.prefs.Preferences; |
- -22 - | -- - - - - - | -import java.util.stream.Stream; |
- -23 - | -- - - - - - | -|
- -24 - | -- - - - - - | -import org.slf4j.Logger; |
- -25 - | -- - - - - - | -import org.slf4j.LoggerFactory; |
- -26 - | -- - - - - - | -|
- -27 - | -- - - - - - | -import com.mastercard.test.flow.report.FailureSink; |
- -28 - | -- - - - - - | -import com.mastercard.test.flow.report.LocalBrowse; |
- -29 - | -- - - - - - | -import com.mastercard.test.flow.report.Reader; |
- -30 - | -- - - - - - | -import com.mastercard.test.flow.report.Writer; |
- -31 - | -- - - - - - | -import com.mastercard.test.flow.report.data.Index; |
- -32 - | -- - - - - - | -import com.mastercard.test.flow.report.duct.HttpClient.Response; |
- -33 - | -- - - - - - | -import com.mastercard.test.flow.util.Option; |
- -34 - | -- - - - - - | -|
- -35 - | -- - - - - - | -/** |
- -36 - | -- - - - - - | - * An application that lives in the system tray and serves flow reports. |
- -37 - | -- - - - - - | - */ |
- -38 - | -- - - - - - | -public class Duct { |
- -39 - | -- - - - - - | -|
- -40 - | -- - - - - - | - /** |
- -41 - | -- - - - - - | - * Will be supplied with diagnostic data for duct initialisation failures. This |
- -42 - | -- - - - - - | - * framework does not assume that clients use a logging framework, and it tries |
- -43 - | -- - - - - - | - * to keep silent on stdout. <i>This</i> class uses slf4j for the bulk of |
- -44 - | -- - - - - - | - * operations, but those will be running in a different process to the test. The |
- -45 - | -- - - - - - | - * interaction between the test and the duct process (where we can't use slf4j) |
- -46 - | -- - - - - - | - * does a bunch of failure-prone things though, so it's nice to have the option |
- -47 - | -- - - - - - | - * of seeing the issues when you're wondering why your report is not being |
- -48 - | -- - - - - - | - * served. |
- -49 - | -- - - - - - | - */ |
- -50 - | -- - - - - - | - private static FailureSink debug = SILENT; |
- -51 - | -- - - - - - | -|
- -52 - | -- - - - - - | - /** |
- -53 - | -- - - - - - | - * Allows insight into failures of duct launch behaviour |
- -54 - | -- - - - - - | - * |
- -55 - | -- - - - - - | - * @param sink Will be supplied with duct launch failure diagnostics |
- -56 - | -- - - - - - | - */ |
- -57 - | -- - - - - - | - public static void debuggingTo( FailureSink sink ) { |
- -58 - | -- - - - - - | - debug = sink; |
- -59 - | -- - - - - - | - } |
- -60 - | -- - - - - - | -|
- -61 - | -- - - - - - | - /** |
- -62 - | -- - - - - - | - * Allows control over whether a duct gui is shown or not |
- -63 - | -- - - - - - | - */ |
- -64 - | -- - - - - - | - public static final Option GUI_SUPPRESS = new Option.Builder() |
- -65 - | -- - - - - - | - .property( "mctf.suppress.duct.gui" ) |
- -66 - | -- - - - - - | - .description( "Supply 'true' to suppress the duct gui" ); |
- -67 - | -- - - - - - | -|
- -68 - | -- - - - - - | - /** |
- -69 - | -- - - - - - | - * The preference name where we save our index directories |
- -70 - | -- - - - - - | - */ |
- -71 - | -- - - - - - | - static final String SERVED_REPORT_PATHS_PREF = "served_report_paths"; |
- -72 - | -- - - - - - | - /** |
- -73 - | -- - - - - - | - * Our preferences object |
- -74 - | -- - - - - - | - */ |
- -75 - | -- - - - - - | - static final Preferences PREFS = Preferences.userNodeForPackage( Duct.class ); |
- -76 - | -- - - - - - | -|
- -77 - | -- - - - - - | - /** |
- -78 - | -- - - - - - | - * Application entrypoint |
- -79 - | -- - - - - - | - * |
- -80 - | -- - - - - - | - * @param args List of report paths to serve and browse |
- -81 - | -- - - - - - | - */ |
- -82 - | -- - - - - - | - public static void main( String... args ) { |
- -83 - | -- - - - - - | - Duct duct = new Duct(); |
- -84 - | -
-
-1
-
-1. main : removed call to com/mastercard/test/flow/report/duct/Duct::start → SURVIVED - - - - |
- duct.start(); |
- -85 - | -- - - - - - | - Stream.of( args ) |
- -86 - | -
-
-1
-
-1. lambda$main$0 : replaced return value with null for com/mastercard/test/flow/report/duct/Duct::lambda$main$0 → KILLED - - - - |
- .map( Paths::get ) |
- -87 - | -- - - - - - | - .map( Path::toAbsolutePath ) |
- -88 - | -- - - - - - | - .map( duct::add ) |
- -89 - | -- - - - - - | - .filter( Objects::nonNull ) |
- -90 - | -
-
-1
-
-1. lambda$main$1 : replaced return value with "" for com/mastercard/test/flow/report/duct/Duct::lambda$main$1 → SURVIVED - - - - |
- .map( path -> "http://localhost:" + PORT + path ) |
- -91 - | -
-
-2
-
-1. lambda$main$2 : removed call to com/mastercard/test/flow/report/LocalBrowse::to → SURVIVED -2. main : removed call to java/util/stream/Stream::forEach → KILLED - - - - |
- .forEach( served -> LocalBrowse.WITH_AWT.to( served, LOG::info ) ); |
- -92 - | -- - - - - - | - } |
- -93 - | -- - - - - - | -|
- -94 - | -- - - - - - | - /** |
- -95 - | -- - - - - - | - * Makes a best-effort attempt at serving a report via {@link Duct} and opening |
- -96 - | -- - - - - - | - * a browser to it. This might involve starting a fresh instance of the duct |
- -97 - | -- - - - - - | - * application. It might fail silently |
- -98 - | -- - - - - - | - * |
- -99 - | -- - - - - - | - * @param report The report directory to serve |
- -100 - | -- - - - - - | - */ |
- -101 - | -- - - - - - | - public static void serve( Path report ) { |
- -102 - | -- - - - - - | - // try adding via http request |
- -103 - | -- - - - - - | - URL added = tryAdd( report ); |
- -104 - | -
-
-1
-
-1. serve : negated conditional → KILLED - - - - |
- if( added != null ) { |
- -105 - | -- - - - - - | - // there's an existing instance! |
- -106 - | -
-
-1
-
-1. serve : removed call to com/mastercard/test/flow/report/LocalBrowse::to → SURVIVED - - - - |
- LocalBrowse.WITH_AWT.to( added, debug ); |
- -107 - | -- - - - - - | - } |
- -108 - | -- - - - - - | - else { |
- -109 - | -
-
-1
-
-1. serve : removed call to com/mastercard/test/flow/report/duct/Spawn::launchFor → RUN_ERROR - - - - |
- Spawn.launchFor( report, debug ); |
- -110 - | -- - - - - - | - } |
- -111 - | -- - - - - - | - } |
- -112 - | -- - - - - - | -|
- -113 - | -- - - - - - | - /** |
- -114 - | -- - - - - - | - * Attempts to add a report to an existing duct instance |
- -115 - | -- - - - - - | - * |
- -116 - | -- - - - - - | - * @return The URL of the served report, or <code>null</code> if the request |
- -117 - | -- - - - - - | - * failed, perhaps because there <i>was</i> no existing duct instance |
- -118 - | -- - - - - - | - */ |
- -119 - | -- - - - - - | - private static URL tryAdd( Path report ) { |
- -120 - | -- - - - - - | - Response<String> res = HttpClient.request( |
- -121 - | -- - - - - - | - "http://localhost:" + PORT + "/add", |
- -122 - | -- - - - - - | - "POST", |
- -123 - | -- - - - - - | - report.toAbsolutePath().toString() ); |
- -124 - | -- - - - - - | -|
- -125 - | -
-
-1
-
-1. tryAdd : negated conditional → SURVIVED - - - - |
- if( res.code != 200 ) { |
- -126 - | -
-
-1
-
-1. tryAdd : removed call to com/mastercard/test/flow/report/FailureSink::log → KILLED - - - - |
- debug.log( "Unsuccessful addition response\n:{}", res ); |
- -127 - | -- - - - - - | - return null; |
- -128 - | -- - - - - - | - } |
- -129 - | -- - - - - - | -|
- -130 - | -
-
-1
-
-1. tryAdd : negated conditional → SURVIVED - - - - |
- if( !res.body.matches( "[\\w/]+" ) ) { |
- -131 - | -
-
-1
-
-1. tryAdd : removed call to com/mastercard/test/flow/report/FailureSink::log → NO_COVERAGE - - - - |
- debug.log( "Declining to browse dubious path '{}", res.body ); |
- -132 - | -- - - - - - | - return null; |
- -133 - | -- - - - - - | - } |
- -134 - | -- - - - - - | -|
- -135 - | -- - - - - - | - try { |
- -136 - | -
-
-1
-
-1. tryAdd : replaced return value with null for com/mastercard/test/flow/report/duct/Duct::tryAdd → SURVIVED - - - - |
- return new URL( String.format( "http://localhost:%s/%s", PORT, res.body ) ); |
- -137 - | -- - - - - - | - } |
- -138 - | -- - - - - - | - catch( Exception e ) { |
- -139 - | -
-
-1
-
-1. tryAdd : removed call to com/mastercard/test/flow/report/FailureSink::log → NO_COVERAGE - - - - |
- debug.log( "Failed to parse '{}' as a url", res.body, e ); |
- -140 - | -- - - - - - | - return null; |
- -141 - | -- - - - - - | - } |
- -142 - | -- - - - - - | - } |
- -143 - | -- - - - - - | -|
- -144 - | -- - - - - - | - /** |
- -145 - | -- - - - - - | - * How long a {@link Duct} instance will live without heartbeat requests |
- -146 - | -- - - - - - | - */ |
- -147 - | -- - - - - - | - private static final Duration LIFESPAN = Duration.of( 90, ChronoUnit.SECONDS ); |
- -148 - | -- - - - - - | -|
- -149 - | -- - - - - - | - /** |
- -150 - | -- - - - - - | - * The port that {@link Duct} will serve on |
- -151 - | -- - - - - - | - */ |
- -152 - | -- - - - - - | - public static final int PORT = 2276; |
- -153 - | -- - - - - - | -|
- -154 - | -- - - - - - | - /** |
- -155 - | -- - - - - - | - * The directory that holds our index application and log file |
- -156 - | -- - - - - - | - */ |
- -157 - | -- - - - - - | - static final Path INDEX_DIRECTORY = Paths.get( System.getProperty( "java.io.tmpdir" ) ) |
- -158 - | -- - - - - - | - .resolve( "mctf_duct" ); |
- -159 - | -- - - - - - | -|
- -160 - | -- - - - - - | - private static final Logger LOG; |
- -161 - | -- - - - - - | - static { |
- -162 - | -- - - - - - | - // logger initialisation has to happen *after* the index directory is known |
- -163 - | -- - - - - - | - try { |
- -164 - | -- - - - - - | - Files.createDirectories( INDEX_DIRECTORY ); |
- -165 - | -- - - - - - | - System.setProperty( "org.slf4j.simpleLogger.logFile", |
- -166 - | -- - - - - - | - INDEX_DIRECTORY.resolve( "log.txt" ).toAbsolutePath().toString() ); |
- -167 - | -- - - - - - | - LOG = LoggerFactory.getLogger( Duct.class ); |
- -168 - | -- - - - - - | -|
- -169 - | -- - - - - - | - LOG.info( "Creating index files" ); |
- -170 - | -- - - - - - | - Writer.writeDuctIndex( INDEX_DIRECTORY ); |
- -171 - | -- - - - - - | - } |
- -172 - | -- - - - - - | - catch( Exception e ) { |
- -173 - | -- - - - - - | - throw new IllegalStateException( "Failed to create index directory", e ); |
- -174 - | -- - - - - - | - } |
- -175 - | -- - - - - - | - } |
- -176 - | -- - - - - - | -|
- -177 - | -- - - - - - | - private final Gui gui; |
- -178 - | -- - - - - - | - private final Server server = new Server( this, PORT ); |
- -179 - | -- - - - - - | - private Instant expiry = Instant.now(); |
- -180 - | -- - - - - - | - private Map<Path, ReportSummary> index = new HashMap<>(); |
- -181 - | -- - - - - - | -|
- -182 - | -- - - - - - | - /** |
- -183 - | -- - - - - - | - * Constructs a new {@link Duct} instance |
- -184 - | -- - - - - - | - */ |
- -185 - | -- - - - - - | - public Duct() { |
- -186 - | -
-
-2
-
-1. <init> : negated conditional → SURVIVED -2. <init> : negated conditional → KILLED - - - - |
- if( GUI_SUPPRESS.isTrue() || GraphicsEnvironment.isHeadless() ) { |
- -187 - | -- - - - - - | - gui = new HeadlessGui(); |
- -188 - | -- - - - - - | - } |
- -189 - | -- - - - - - | - else { |
- -190 - | -- - - - - - | - gui = new SystrayGui( this ); |
- -191 - | -- - - - - - | - } |
- -192 - | -- - - - - - | - } |
- -193 - | -- - - - - - | -|
- -194 - | -- - - - - - | - /** |
- -195 - | -- - - - - - | - * Starts duct. The GUI will be shown and the server kicked off |
- -196 - | -- - - - - - | - */ |
- -197 - | -- - - - - - | - public void start() { |
- -198 - | -
-
-1
-
-1. start : removed call to com/mastercard/test/flow/report/duct/Gui::show → SURVIVED - - - - |
- gui.show(); |
- -199 - | -- - - - - - | -|
- -200 - | -
-
-1
-
-1. start : removed call to com/mastercard/test/flow/report/duct/Server::start → KILLED - - - - |
- server.start(); |
- -201 - | -- - - - - - | - // map the index page routes |
- -202 - | -
-
-1
-
-1. start : removed call to com/mastercard/test/flow/report/duct/Server::map → SURVIVED - - - - |
- server.map( "/", INDEX_DIRECTORY ); |
- -203 - | -- - - - - - | -|
- -204 - | -- - - - - - | - // load the saved report directories |
- -205 - | -- - - - - - | - Stream.of( PREFS.get( SERVED_REPORT_PATHS_PREF, "" ) |
- -206 - | -- - - - - - | - .split( File.pathSeparator ) ) |
- -207 - | -
-
-2
-
-1. lambda$start$3 : negated conditional → RUN_ERROR -2. lambda$start$3 : replaced boolean return with true for com/mastercard/test/flow/report/duct/Duct::lambda$start$3 → RUN_ERROR - - - - |
- .filter( s -> !s.isEmpty() ) |
- -208 - | -
-
-1
-
-1. lambda$start$4 : replaced return value with null for com/mastercard/test/flow/report/duct/Duct::lambda$start$4 → KILLED - - - - |
- .map( Paths::get ) |
- -209 - | -
-
-1
-
-1. start : removed call to java/util/stream/Stream::forEach → KILLED - - - - |
- .forEach( p -> index.put( p, null ) ); |
- -210 - | -- - - - - - | -|
- -211 - | -
-
-1
-
-1. start : removed call to com/mastercard/test/flow/report/duct/Duct::reindex → KILLED - - - - |
- reindex(); |
- -212 - | -- - - - - - | -|
- -213 - | -- - - - - - | - expiry = Instant.now().plus( LIFESPAN ); |
- -214 - | -
-
-1
-
-1. start : removed call to com/mastercard/test/flow/report/duct/Reaper::start → SURVIVED - - - - |
- new Reaper( this ).start(); |
- -215 - | -- - - - - - | - } |
- -216 - | -- - - - - - | -|
- -217 - | -- - - - - - | - /** |
- -218 - | -- - - - - - | - * Shuts down the server and hides the GUI. The JVM will be free to exit after |
- -219 - | -- - - - - - | - * this. |
- -220 - | -- - - - - - | - */ |
- -221 - | -- - - - - - | - public void stop() { |
- -222 - | -
-
-1
-
-1. stop : removed call to com/mastercard/test/flow/report/duct/Server::stop → TIMED_OUT - - - - |
- server.stop(); |
- -223 - | -
-
-1
-
-1. stop : removed call to com/mastercard/test/flow/report/duct/Gui::hide → SURVIVED - - - - |
- gui.hide(); |
- -224 - | -- - - - - - | - } |
- -225 - | -- - - - - - | -|
- -226 - | -- - - - - - | - /** |
- -227 - | -- - - - - - | - * Extends the lifespan |
- -228 - | -- - - - - - | - * |
- -229 - | -- - - - - - | - * @return the new expiry |
- -230 - | -- - - - - - | - */ |
- -231 - | -- - - - - - | - public Instant heartbeat() { |
- -232 - | -- - - - - - | - expiry = Instant.now().plus( LIFESPAN ); |
- -233 - | -- - - - - - | - LOG.debug( "beep! life extended to {}", expiry ); |
- -234 - | -
-
-1
-
-1. heartbeat : replaced return value with null for com/mastercard/test/flow/report/duct/Duct::heartbeat → KILLED - - - - |
- return expiry; |
- -235 - | -- - - - - - | - } |
- -236 - | -- - - - - - | -|
- -237 - | -- - - - - - | - /** |
- -238 - | -- - - - - - | - * Gets the time at which duct should shut down |
- -239 - | -- - - - - - | - * |
- -240 - | -- - - - - - | - * @return The expiry time |
- -241 - | -- - - - - - | - */ |
- -242 - | -- - - - - - | - Instant expiry() { |
- -243 - | -
-
-1
-
-1. expiry : replaced return value with null for com/mastercard/test/flow/report/duct/Duct::expiry → RUN_ERROR - - - - |
- return expiry; |
- -244 - | -- - - - - - | - } |
- -245 - | -- - - - - - | -|
- -246 - | -- - - - - - | - /** |
- -247 - | -- - - - - - | - * Adds a report to be served |
- -248 - | -- - - - - - | - * |
- -249 - | -- - - - - - | - * @param source The report directory |
- -250 - | -- - - - - - | - * @return The served report path, or <code>null</code> on failure |
- -251 - | -- - - - - - | - */ |
- -252 - | -- - - - - - | - public String add( Path source ) { |
- -253 - | -- - - - - - | - heartbeat(); |
- -254 - | -- - - - - - | -|
- -255 - | -
-
-1
-
-1. add : negated conditional → KILLED - - - - |
- if( !Reader.isReportDir( source ) ) { |
- -256 - | -- - - - - - | - LOG.error( "{} is not a report", source ); |
- -257 - | -
-
-1
-
-1. add : replaced return value with "" for com/mastercard/test/flow/report/duct/Duct::add → RUN_ERROR - - - - |
- return null; |
- -258 - | -- - - - - - | - } |
- -259 - | -- - - - - - | -|
- -260 - | -- - - - - - | - LOG.info( "Adding {}", source ); |
- -261 - | -- - - - - - | -|
- -262 - | -- - - - - - | - try { |
- -263 - | -- - - - - - | - Index idx = new Reader( source ).read(); |
- -264 - | -- - - - - - | -|
- -265 - | -- - - - - - | - String servedPath = String.format( "/%s/", source.toString().replaceAll( "\\W+", "_" ) ); |
- -266 - | -
-
-1
-
-1. add : removed call to com/mastercard/test/flow/report/duct/Server::map → KILLED - - - - |
- server.map( servedPath, source ); |
- -267 - | -- - - - - - | - index.put( source, new ReportSummary( idx, servedPath ) ); |
- -268 - | -- - - - - - | -|
- -269 - | -
-
-1
-
-1. add : removed call to java/util/prefs/Preferences::put → KILLED - - - - |
- PREFS.put( SERVED_REPORT_PATHS_PREF, index.keySet().stream() |
- -270 - | -- - - - - - | - .map( Path::toString ) |
- -271 - | -- - - - - - | - .collect( joining( File.pathSeparator ) ) ); |
- -272 - | -- - - - - - | -|
- -273 - | -
-
-1
-
-1. add : replaced return value with "" for com/mastercard/test/flow/report/duct/Duct::add → RUN_ERROR - - - - |
- return servedPath; |
- -274 - | -- - - - - - | - } |
- -275 - | -- - - - - - | - catch( Exception e ) { |
- -276 - | -- - - - - - | - LOG.error( "Failed to add {}", source, e ); |
- -277 - | -
-
-1
-
-1. add : replaced return value with "" for com/mastercard/test/flow/report/duct/Duct::add → KILLED - - - - |
- return null; |
- -278 - | -- - - - - - | - } |
- -279 - | -- - - - - - | - } |
- -280 - | -- - - - - - | -|
- -281 - | -- - - - - - | - /** |
- -282 - | -- - - - - - | - * @return The port that {@link Duct} is serving on |
- -283 - | -- - - - - - | - */ |
- -284 - | -- - - - - - | - int port() { |
- -285 - | -
-
-1
-
-1. port : replaced int return with 0 for com/mastercard/test/flow/report/duct/Duct::port → KILLED - - - - |
- return server.port(); |
- -286 - | -- - - - - - | - } |
- -287 - | -- - - - - - | -|
- -288 - | -- - - - - - | - /** |
- -289 - | -- - - - - - | - * Clears the index |
- -290 - | -- - - - - - | - */ |
- -291 - | -- - - - - - | - public void clearIndex() { |
- -292 - | -
-
-1
-
-1. clearIndex : removed call to java/util/Set::forEach → SURVIVED - - - - |
- index.keySet().forEach( server::unmap ); |
- -293 - | -
-
-1
-
-1. clearIndex : removed call to java/util/Map::clear → RUN_ERROR - - - - |
- index.clear(); |
- -294 - | -
-
-1
-
-1. clearIndex : removed call to java/util/prefs/Preferences::remove → SURVIVED - - - - |
- PREFS.remove( SERVED_REPORT_PATHS_PREF ); |
- -295 - | -- - - - - - | - } |
- -296 - | -- - - - - - | -|
- -297 - | -- - - - - - | - /** |
- -298 - | -- - - - - - | - * Regenerates the served index list |
- -299 - | -- - - - - - | - */ |
- -300 - | -- - - - - - | - public void reindex() { |
- -301 - | -- - - - - - | - LOG.info( "Regenerating index" ); |
- -302 - | -- - - - - - | - List<Path> dirs = new ArrayList<>( index.keySet() ); |
- -303 - | -- - - - - - | - List<Path> toRemove = new ArrayList<>(); |
- -304 - | -- - - - - - | -|
- -305 - | -- - - - - - | - // try to remap each of our existing reports |
- -306 - | -
-
-1
-
-1. reindex : removed call to java/util/List::forEach → TIMED_OUT - - - - |
- dirs.forEach( dir -> { |
- -307 - | -
-
-1
-
-1. lambda$reindex$6 : negated conditional → KILLED - - - - |
- if( add( dir ) == null ) { |
- -308 - | -- - - - - - | - // if they failed to map then we should remove it from the index |
- -309 - | -- - - - - - | - toRemove.add( dir ); |
- -310 - | -- - - - - - | - } |
- -311 - | -- - - - - - | - } ); |
- -312 - | -- - - - - - | -|
- -313 - | -
-
-1
-
-1. reindex : removed call to java/util/List::forEach → SURVIVED - - - - |
- toRemove.forEach( index::remove ); |
- -314 - | -- - - - - - | - } |
- -315 - | -- - - - - - | -|
- -316 - | -- - - - - - | - /** |
- -317 - | -- - - - - - | - * Gets a summary of served reports |
- -318 - | -- - - - - - | - * |
- -319 - | -- - - - - - | - * @return served report summaries |
- -320 - | -- - - - - - | - */ |
- -321 - | -- - - - - - | - Collection<ReportSummary> index() { |
- -322 - | -
-
-1
-
-1. index : replaced return value with Collections.emptyList for com/mastercard/test/flow/report/duct/Duct::index → KILLED - - - - |
- return index.values(); |
- -323 - | -- - - - - - | - } |
- -324 - | -- - - - - - | -} |
Mutations | ||
84 | -- |
-
-
-
- 1.1 |
-
86 | -- |
-
-
-
- 1.1 |
-
90 | -- |
-
-
-
- 1.1 |
-
91 | -- |
-
-
-
- 1.1 2.2 |
-
104 | -- |
-
-
-
- 1.1 |
-
106 | -- |
-
-
-
- 1.1 |
-
109 | -- |
-
-
-
- 1.1 |
-
125 | -- |
-
-
-
- 1.1 |
-
126 | -- |
-
-
-
- 1.1 |
-
130 | -- |
-
-
-
- 1.1 |
-
131 | -- |
-
-
-
- 1.1 |
-
136 | -- |
-
-
-
- 1.1 |
-
139 | -- |
-
-
-
- 1.1 |
-
186 | -- |
-
-
-
- 1.1 2.2 |
-
198 | -- |
-
-
-
- 1.1 |
-
200 | -- |
-
-
-
- 1.1 |
-
202 | -- |
-
-
-
- 1.1 |
-
207 | -- |
-
-
-
- 1.1 2.2 |
-
208 | -- |
-
-
-
- 1.1 |
-
209 | -- |
-
-
-
- 1.1 |
-
211 | -- |
-
-
-
- 1.1 |
-
214 | -- |
-
-
-
- 1.1 |
-
222 | -- |
-
-
-
- 1.1 |
-
223 | -- |
-
-
-
- 1.1 |
-
234 | -- |
-
-
-
- 1.1 |
-
243 | -- |
-
-
-
- 1.1 |
-
255 | -- |
-
-
-
- 1.1 |
-
257 | -- |
-
-
-
- 1.1 |
-
266 | -- |
-
-
-
- 1.1 |
-
269 | -- |
-
-
-
- 1.1 |
-
273 | -- |
-
-
-
- 1.1 |
-
277 | -- |
-
-
-
- 1.1 |
-
285 | -- |
-
-
-
- 1.1 |
-
292 | -- |
-
-
-
- 1.1 |
-
293 | -- |
-
-
-
- 1.1 |
-
294 | -- |
-
-
-
- 1.1 |
-
306 | -- |
-
-
-
- 1.1 |
-
307 | -- |
-
-
-
- 1.1 |
-
313 | -- |
-
-
-
- 1.1 |
-
322 | -- |
-
-
-
- 1.1 |
-
- -1 - | -- - - - - - | -package com.mastercard.test.flow.report.duct; |
- -2 - | -- - - - - - | -|
- -3 - | -- - - - - - | -import java.time.Duration; |
- -4 - | -- - - - - - | -import java.time.Instant; |
- -5 - | -- - - - - - | -import java.util.function.Consumer; |
- -6 - | -- - - - - - | -import java.util.function.Supplier; |
- -7 - | -- - - - - - | -|
- -8 - | -- - - - - - | -import org.slf4j.Logger; |
- -9 - | -- - - - - - | -import org.slf4j.LoggerFactory; |
- -10 - | -- - - - - - | -|
- -11 - | -- - - - - - | -/** |
- -12 - | -- - - - - - | - * A {@link Thread} that monitors {@link Duct#expiry()}. When the expiry has |
- -13 - | -- - - - - - | - * been reached the {@link Duct} is shut down |
- -14 - | -- - - - - - | - */ |
- -15 - | -- - - - - - | -class Reaper extends Thread { |
- -16 - | -- - - - - - | - private static final Logger LOG = LoggerFactory.getLogger( Reaper.class ); |
- -17 - | -- - - - - - | -|
- -18 - | -- - - - - - | - private final Duct duct; |
- -19 - | -- - - - - - | -|
- -20 - | -- - - - - - | - private Supplier<Instant> now = Instant::now; |
- -21 - | -- - - - - - | -|
- -22 - | -- - - - - - | - private Consumer<Duration> sleep = delay -> { |
- -23 - | -- - - - - - | - try { |
- -24 - | -- - - - - - | - LOG.debug( "Sleeping for a bit over {}", delay ); |
- -25 - | -- - - - - - | - // if we sleep for *exactly* the time left then we get a busy-loop of |
- -26 - | -- - - - - - | - // zero-duration sleeps right before dying. Allowing 10ms grace for another |
- -27 - | -- - - - - - | - // heartbeat to come in avoids pointless log noise |
- -28 - | -
-
-2
-
-1. lambda$new$0 : removed call to java/lang/Thread::sleep → KILLED -2. lambda$new$0 : Replaced long addition with subtraction → KILLED - - - - |
- Thread.sleep( delay.toMillis() + 10 ); |
- -29 - | -- - - - - - | - } |
- -30 - | -- - - - - - | - catch( InterruptedException e ) { |
- -31 - | -- - - - - - | - LOG.warn( "unexpected interruption", e ); |
- -32 - | -
-
-1
-
-1. lambda$new$0 : removed call to java/lang/Thread::interrupt → NO_COVERAGE - - - - |
- Thread.currentThread().interrupt(); |
- -33 - | -- - - - - - | - } |
- -34 - | -- - - - - - | - }; |
- -35 - | -- - - - - - | -|
- -36 - | -- - - - - - | - /** |
- -37 - | -- - - - - - | - * @param duct The {@link Duct} instance to control |
- -38 - | -- - - - - - | - */ |
- -39 - | -- - - - - - | - Reaper( Duct duct ) { |
- -40 - | -- - - - - - | - super( "duct reaper" ); |
- -41 - | -- - - - - - | - this.duct = duct; |
- -42 - | -
-
-1
-
-1. <init> : removed call to com/mastercard/test/flow/report/duct/Reaper::setDaemon → KILLED - - - - |
- setDaemon( true ); |
- -43 - | -- - - - - - | - } |
- -44 - | -- - - - - - | -|
- -45 - | -- - - - - - | - @Override |
- -46 - | -- - - - - - | - public void run() { |
- -47 - | -- - - - - - | - Duration delay = Duration.between( now.get(), duct.expiry() ); |
- -48 - | -
-
-1
-
-1. run : negated conditional → KILLED - - - - |
- while( !delay.isNegative() ) { |
- -49 - | -
-
-1
-
-1. run : removed call to java/util/function/Consumer::accept → KILLED - - - - |
- sleep.accept( delay ); |
- -50 - | -- - - - - - | - delay = Duration.between( now.get(), duct.expiry() ); |
- -51 - | -- - - - - - | - } |
- -52 - | -- - - - - - | -|
- -53 - | -- - - - - - | - LOG.warn( "Expiry breached by {}, shutting down duct", delay.abs() ); |
- -54 - | -
-
-1
-
-1. run : removed call to com/mastercard/test/flow/report/duct/Duct::stop → KILLED - - - - |
- duct.stop(); |
- -55 - | -- - - - - - | - } |
- -56 - | -- - - - - - | -|
- -57 - | -- - - - - - | - /** |
- -58 - | -- - - - - - | - * For use in unit tests, overrides the default wall-clock behaviours |
- -59 - | -- - - - - - | - * |
- -60 - | -- - - - - - | - * @param n How to find out what time it is |
- -61 - | -- - - - - - | - * @param s How to wait for a defined duration |
- -62 - | -- - - - - - | - * @return <code>this</code> |
- -63 - | -- - - - - - | - */ |
- -64 - | -- - - - - - | - Reaper withClock( Supplier<Instant> n, Consumer<Duration> s ) { |
- -65 - | -- - - - - - | - now = n; |
- -66 - | -- - - - - - | - sleep = s; |
- -67 - | -
-
-1
-
-1. withClock : replaced return value with null for com/mastercard/test/flow/report/duct/Reaper::withClock → KILLED - - - - |
- return this; |
- -68 - | -- - - - - - | - } |
- -69 - | -- - - - - - | -|
- -70 - | -- - - - - - | - /** |
- -71 - | -- - - - - - | - * For use in unit tests, returns the current sleep function |
- -72 - | -- - - - - - | - * |
- -73 - | -- - - - - - | - * @return the sleep function |
- -74 - | -- - - - - - | - */ |
- -75 - | -- - - - - - | - Consumer<Duration> sleep() { |
- -76 - | -
-
-1
-
-1. sleep : replaced return value with null for com/mastercard/test/flow/report/duct/Reaper::sleep → KILLED - - - - |
- return sleep; |
- -77 - | -- - - - - - | - } |
- -78 - | -- - - - - - | -} |
Mutations | ||
28 | -- |
-
-
-
- 1.1 2.2 |
-
32 | -- |
-
-
-
- 1.1 |
-
42 | -- |
-
-
-
- 1.1 |
-
48 | -- |
-
-
-
- 1.1 |
-
49 | -- |
-
-
-
- 1.1 |
-
54 | -- |
-
-
-
- 1.1 |
-
67 | -- |
-
-
-
- 1.1 |
-
76 | -- |
-
-
-
- 1.1 |
-
1.1
Location : box
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::box → KILLED
1.1
Location : box
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] removed call to java/util/function/Consumer::accept → KILLED
1.1
Location : box
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::box → KILLED
1.1
Location : content
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::content → KILLED
1.1
Location : append
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] Replaced integer addition with subtraction → KILLED
1.1
Location : append
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::append → KILLED
1.1
Location : fill
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] negated conditional → KILLED
2.2
Location : fill
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] changed conditional boundary → KILLED
1.1
Location : fill
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::fill → KILLED
1.1
Location : styled
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] Replaced integer addition with subtraction → KILLED
1.1
Location : styled
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::styled → KILLED
1.1
Location : ellipsised
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::ellipsised → KILLED
2.2
Location : ellipsised
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer subtraction with addition → KILLED
3.3
Location : ellipsised
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer subtraction with addition → KILLED
1.1
Location : endLine
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] Replaced integer subtraction with addition → KILLED
2.2
Location : endLine
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] Replaced integer subtraction with addition → KILLED
1.1
Location : endLine
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] changed conditional boundary → KILLED
2.2
Location : endLine
Killed by : negated conditional → TIMED_OUT
1.1
Location : endLine
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli::endLine → KILLED
1.1
Location : <init>
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] Replaced integer subtraction with addition → KILLED
1.1
Location : <init>
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] negated conditional → KILLED
1.1
Location : <init>
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:title()] Replaced integer subtraction with addition → KILLED
1.1
Location : section
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:nesting()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::section → KILLED
1.1
Location : box
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:nesting()] Replaced integer addition with subtraction → KILLED
1.1
Location : box
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:nesting()] removed call to java/util/function/Consumer::accept → KILLED
1.1
Location : box
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:nesting()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::box → KILLED
1.1
Location : paragraph
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:title()] removed call to java/util/stream/Stream::forEach → KILLED
1.1
Location : paragraph
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:paragraph()] removed call to java/util/stream/Stream::forEach → KILLED
1.1
Location : lambda$paragraph$1
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:title()] removed call to java/util/Deque::forEach → KILLED
1.1
Location : lambda$paragraph$1
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:paragraph()] removed call to java/util/Deque::forEach → KILLED
1.1
Location : paragraph
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:paragraph()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::paragraph → KILLED
1.1
Location : line
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] removed call to java/util/stream/Stream::forEach → KILLED
1.1
Location : line
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::line → KILLED
1.1
Location : words
Killed by : com.mastercard.test.flow.assrt.filter.cli.TagPhaseTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.TagPhaseTest]/[method:wrapping()] removed call to java/util/Deque::forEach → KILLED
1.1
Location : lambda$words$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.TagPhaseTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.TagPhaseTest]/[method:wrapping()] removed call to java/util/List::forEach → KILLED
1.1
Location : words
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::words → KILLED
1.1
Location : descriptionList
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] Replaced integer addition with subtraction → KILLED
1.1
Location : descriptionList
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] removed call to java/util/function/Consumer::accept → KILLED
1.1
Location : descriptionList
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::descriptionList → KILLED
1.1
Location : indexedTaggedList
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer addition with subtraction → KILLED
1.1
Location : indexedTaggedList
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] removed call to java/util/function/Consumer::accept → KILLED
1.1
Location : indexedTaggedList
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::indexedTaggedList → KILLED
1.1
Location : close
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:lines()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$Box::close → KILLED
1.1
Location : item
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$DescriptionList::item → KILLED
1.1
Location : close
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] removed call to java/util/Map::forEach → KILLED
1.1
Location : lambda$close$1
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] Replaced integer subtraction with addition → KILLED
2.2
Location : lambda$close$1
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] Replaced integer subtraction with addition → KILLED
1.1
Location : lambda$close$1
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:descriptionList()] removed call to java/util/Deque::forEach → KILLED
1.1
Location : close
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$DescriptionList::close → KILLED
1.1
Location : item
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$IndexedTaggedList::item → KILLED
1.1
Location : lambda$close$0
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] replaced int return with 0 for com/mastercard/test/flow/assrt/filter/cli/Cli$IndexedTaggedList::lambda$close$0 → KILLED
1.1
Location : close
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer addition with subtraction → KILLED
1.1
Location : close
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] removed call to java/util/List::forEach → KILLED
1.1
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer addition with subtraction → KILLED
1.1
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer subtraction with addition → KILLED
2.2
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer subtraction with addition → KILLED
3.3
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer subtraction with addition → KILLED
1.1
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] removed call to java/util/List::forEach → KILLED
1.1
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] removed call to java/util/Deque::forEach → KILLED
2.2
Location : lambda$close$4
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] Replaced integer subtraction with addition → KILLED
1.1
Location : lambda$null$3
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:indexedTaggedList()] removed call to java/util/List::forEach → KILLED
1.1
Location : close
Killed by : com.mastercard.test.flow.assrt.filter.cli.CliTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CliTest]/[method:fluency()] replaced return value with null for com/mastercard/test/flow/assrt/filter/cli/Cli$IndexedTaggedList::close → KILLED
1.1
Location : syntax
Killed by : com.mastercard.test.flow.assrt.filter.cli.IndexPhaseTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.IndexPhaseTest]/[method:input()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/CommandCompleter$Command::syntax → KILLED
1.1
Location : invokedBy
Killed by : com.mastercard.test.flow.assrt.filter.cli.IndexPhaseTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.IndexPhaseTest]/[method:input()] replaced boolean return with false for com/mastercard/test/flow/assrt/filter/cli/CommandCompleter$Command::invokedBy → KILLED
2.2
Location : invokedBy
Killed by : com.mastercard.test.flow.assrt.filter.cli.TagPhaseTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.TagPhaseTest]/[method:input()] replaced boolean return with true for com/mastercard/test/flow/assrt/filter/cli/CommandCompleter$Command::invokedBy → KILLED
1.1
Location : complete
Killed by : com.mastercard.test.flow.assrt.filter.cli.ResetTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.ResetTest]/[method:reset()] negated conditional → KILLED
1.1
Location : tr
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::tr → KILLED
1.1
Location : tl
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::tl → KILLED
1.1
Location : br
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::br → KILLED
1.1
Location : bl
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::bl → KILLED
1.1
Location : lTee
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::lTee → KILLED
1.1
Location : rTee
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::rTee → KILLED
1.1
Location : tTee
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::tTee → KILLED
1.1
Location : bTee
Killed by : com.mastercard.test.flow.assrt.filter.cli.CornerTest.[engine:junit-jupiter]/[class:com.mastercard.test.flow.assrt.filter.cli.CornerTest]/[method:boxen()] replaced return value with "" for com/mastercard/test/flow/assrt/filter/cli/Corner::bTee → KILLED