ActionQueueKiller.java

1
package com.renomad.minum.queue;
2
3
import com.renomad.minum.state.Context;
4
import com.renomad.minum.logging.ILogger;
5
import com.renomad.minum.utils.TimeUtils;
6
7
/**
8
 * This class exists to properly kill off multiple action queues
9
 */
10
public final class ActionQueueKiller {
11
12
    private final Context context;
13
    private final ILogger logger;
14
15
    /**
16
     * If we were interrupted while attempting to cleanly kill the
17
     * action queues, this will be set true
18
     */
19
    private boolean hadToInterrupt;
20
21
    public ActionQueueKiller(Context context) {
22
        this.context = context;
23
        this.logger = context.getLogger();
24
        hadToInterrupt = false;
25
    }
26
27
    /**
28
     * Systematically stops and kills all the action queues that have been
29
     * instantiated in this call tree.
30
     */
31
    public void killAllQueues() {
32
        logger.logDebug(() -> TimeUtils.getTimestampIsoInstant() + " Killing all queue threads. ");
33 1 1. killAllQueues : negated conditional → KILLED
        for (AbstractActionQueue aq = context.getActionQueueState().pollFromQueue(); aq != null ; aq = context.getActionQueueState().pollFromQueue()) {
34
            AbstractActionQueue finalAq = aq;
35 1 1. killAllQueues : removed call to com/renomad/minum/queue/AbstractActionQueue::stop → KILLED
            finalAq.stop();
36
            logger.logDebug(() -> TimeUtils.getTimestampIsoInstant() + " killing " + ((ActionQueue)finalAq).getQueueThread());
37 1 1. killAllQueues : negated conditional → KILLED
            if (((ActionQueue)finalAq).getQueueThread() != null) {
38
                hadToInterrupt = true;
39
                System.out.println("had to interrupt " + finalAq);
40
                ((ActionQueue)finalAq).getQueueThread().interrupt();
41
            }
42
        }
43
    }
44
45
    /**
46
     * A helpful indicator of whether this object was interrupted while
47
     * looping through the list of action queues
48
     * @return true If we were interrupted while attempting to cleanly kill the
49
     *         action queues
50
     */
51
    public boolean hadToInterrupt() {
52 2 1. hadToInterrupt : replaced boolean return with false for com/renomad/minum/queue/ActionQueueKiller::hadToInterrupt → KILLED
2. hadToInterrupt : replaced boolean return with true for com/renomad/minum/queue/ActionQueueKiller::hadToInterrupt → KILLED
        return hadToInterrupt;
53
    }
54
55
}

Mutations

33

1.1
Location : killAllQueues
Killed by : com.renomad.minum.logging.LoggerTests.testShowWhiteSpace(com.renomad.minum.logging.LoggerTests)
negated conditional → KILLED

35

1.1
Location : killAllQueues
Killed by : com.renomad.minum.web.FullSystemTests.testFullSystem_EdgeCase_InstantlyClosed(com.renomad.minum.web.FullSystemTests)
removed call to com/renomad/minum/queue/AbstractActionQueue::stop → KILLED

37

1.1
Location : killAllQueues
Killed by : com.renomad.minum.utils.ActionQueueKillerTests.test_KillAllQueues_NeedingInterruption(com.renomad.minum.utils.ActionQueueKillerTests)
negated conditional → KILLED

52

1.1
Location : hadToInterrupt
Killed by : com.renomad.minum.utils.ActionQueueKillerTests.test_KillAllQueues_NeedingInterruption(com.renomad.minum.utils.ActionQueueKillerTests)
replaced boolean return with false for com/renomad/minum/queue/ActionQueueKiller::hadToInterrupt → KILLED

2.2
Location : hadToInterrupt
Killed by : com.renomad.minum.utils.ActionQueueKillerTests.test_KillAllQueues_NeedingInterruption(com.renomad.minum.utils.ActionQueueKillerTests)
replaced boolean return with true for com/renomad/minum/queue/ActionQueueKiller::hadToInterrupt → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0