Skip to content

Commit

Permalink
Fix runner waste collection: always provide a new instance instead of…
Browse files Browse the repository at this point in the history
… providing old one
  • Loading branch information
Vladislav Alekseev committed Jun 20, 2021
1 parent edc4037 commit 271ff7c
Show file tree
Hide file tree
Showing 11 changed files with 49 additions and 19 deletions.
2 changes: 1 addition & 1 deletion Sources/EmceeLib/Commands/DumpCommand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public final class DumpCommand: Command {
pluginEventBusProvider: try di.get(),
processControllerProvider: try di.get(),
resourceLocationResolver: try di.get(),
runnerWasteCollector: try di.get(),
runnerWasteCollectorProvider: try di.get(),
tempFolder: try di.get(),
testRunnerProvider: try di.get(),
uniqueIdentifierGenerator: try di.get(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ public final class RunTestsOnRemoteQueueCommand: Command {
pluginEventBusProvider: try di.get(),
processControllerProvider: try di.get(),
resourceLocationResolver: try di.get(),
runnerWasteCollector: try di.get(),
runnerWasteCollectorProvider: try di.get(),
tempFolder: try di.get(),
testRunnerProvider: try di.get(),
uniqueIdentifierGenerator: try di.get(),
Expand Down
4 changes: 2 additions & 2 deletions Sources/EmceeLib/InProcessMain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ public final class InProcessMain {
)

di.set(
RunnerWasteCollectorImpl(),
for: RunnerWasteCollector.self
RunnerWasteCollectorProviderImpl(),
for: RunnerWasteCollectorProvider.self
)

di.set(
Expand Down
9 changes: 5 additions & 4 deletions Sources/Runner/Runner.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public final class Runner {
private let pluginEventBusProvider: PluginEventBusProvider
private let pluginTearDownQueue = OperationQueue()
private let resourceLocationResolver: ResourceLocationResolver
private let runnerWasteCollector: RunnerWasteCollector
private let runnerWasteCollectorProvider: RunnerWasteCollectorProvider
private let specificMetricRecorder: SpecificMetricRecorder
private let tempFolder: TemporaryFolder
private let testRunnerProvider: TestRunnerProvider
Expand All @@ -55,7 +55,7 @@ public final class Runner {
persistentMetricsJobId: String?,
pluginEventBusProvider: PluginEventBusProvider,
resourceLocationResolver: ResourceLocationResolver,
runnerWasteCollector: RunnerWasteCollector,
runnerWasteCollectorProvider: RunnerWasteCollectorProvider,
specificMetricRecorder: SpecificMetricRecorder,
tempFolder: TemporaryFolder,
testRunnerProvider: TestRunnerProvider,
Expand All @@ -72,7 +72,7 @@ public final class Runner {
self.persistentMetricsJobId = persistentMetricsJobId
self.pluginEventBusProvider = pluginEventBusProvider
self.resourceLocationResolver = resourceLocationResolver
self.runnerWasteCollector = runnerWasteCollector
self.runnerWasteCollectorProvider = runnerWasteCollectorProvider
self.specificMetricRecorder = specificMetricRecorder
self.tempFolder = tempFolder
self.testRunnerProvider = testRunnerProvider
Expand Down Expand Up @@ -174,6 +174,7 @@ public final class Runner {
testRunner: testRunner
)

let runnerWasteCollector = runnerWasteCollectorProvider.createRunnerWasteCollector()
runnerWasteCollector.scheduleCollection(path: testContext.testsWorkingDirectory)
runnerWasteCollector.scheduleCollection(path: testContext.testRunnerWorkingDirectory)
runnerWasteCollector.scheduleCollection(path: simulator.path.appending(relativePath: "data/Library/Caches/com.apple.containermanagerd/Dead"))
Expand All @@ -188,7 +189,7 @@ public final class Runner {
pluginLocations: configuration.pluginLocations
)
defer {
pluginTearDownQueue.addOperation { [fileSystem, runnerWasteCollector] in
pluginTearDownQueue.addOperation { [fileSystem] in
eventBus.tearDown()
RunnerWasteCleanerImpl(fileSystem: fileSystem).cleanWaste(runnerWasteCollector: runnerWasteCollector)
}
Expand Down
11 changes: 11 additions & 0 deletions Sources/Runner/RunnerWasteCollectorProvider.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import Foundation

public protocol RunnerWasteCollectorProvider {
func createRunnerWasteCollector() -> RunnerWasteCollector
}

public final class RunnerWasteCollectorProviderImpl: RunnerWasteCollectorProvider {
public init() {}

public func createRunnerWasteCollector() -> RunnerWasteCollector { RunnerWasteCollectorImpl() }
}
2 changes: 1 addition & 1 deletion Sources/Scheduler/Scheduler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ public final class Scheduler {
persistentMetricsJobId: bucket.analyticsConfiguration.persistentMetricsJobId,
pluginEventBusProvider: try di.get(),
resourceLocationResolver: try di.get(),
runnerWasteCollector: try di.get(),
runnerWasteCollectorProvider: try di.get(),
specificMetricRecorder: specificMetricRecorder,
tempFolder: try di.get(),
testRunnerProvider: try di.get(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ final class RuntimeDumpTestDiscoverer: SpecificTestDiscoverer {
private let onDemandSimulatorPool: OnDemandSimulatorPool
private let pluginEventBusProvider: PluginEventBusProvider
private let resourceLocationResolver: ResourceLocationResolver
private let runnerWasteCollector: RunnerWasteCollector
private let runnerWasteCollectorProvider: RunnerWasteCollectorProvider
private let simulatorControlTool: SimulatorControlTool
private let tempFolder: TemporaryFolder
private let testEntryToQueryRuntimeDump: TestEntry
Expand All @@ -46,7 +46,7 @@ final class RuntimeDumpTestDiscoverer: SpecificTestDiscoverer {
onDemandSimulatorPool: OnDemandSimulatorPool,
pluginEventBusProvider: PluginEventBusProvider,
resourceLocationResolver: ResourceLocationResolver,
runnerWasteCollector: RunnerWasteCollector,
runnerWasteCollectorProvider: RunnerWasteCollectorProvider,
simulatorControlTool: SimulatorControlTool,
tempFolder: TemporaryFolder,
testEntryToQueryRuntimeDump: TestEntry = TestEntry(testName: TestName(className: "NonExistingTest", methodName: "fakeTest"), tags: [], caseId: nil),
Expand All @@ -65,7 +65,7 @@ final class RuntimeDumpTestDiscoverer: SpecificTestDiscoverer {
self.onDemandSimulatorPool = onDemandSimulatorPool
self.pluginEventBusProvider = pluginEventBusProvider
self.resourceLocationResolver = resourceLocationResolver
self.runnerWasteCollector = runnerWasteCollector
self.runnerWasteCollectorProvider = runnerWasteCollectorProvider
self.simulatorControlTool = simulatorControlTool
self.tempFolder = tempFolder
self.testEntryToQueryRuntimeDump = testEntryToQueryRuntimeDump
Expand Down Expand Up @@ -99,7 +99,7 @@ final class RuntimeDumpTestDiscoverer: SpecificTestDiscoverer {
persistentMetricsJobId: configuration.analyticsConfiguration.persistentMetricsJobId,
pluginEventBusProvider: pluginEventBusProvider,
resourceLocationResolver: resourceLocationResolver,
runnerWasteCollector: runnerWasteCollector,
runnerWasteCollectorProvider: runnerWasteCollectorProvider,
specificMetricRecorder: specificMetricRecorder,
tempFolder: tempFolder,
testRunnerProvider: testRunnerProvider,
Expand Down
8 changes: 4 additions & 4 deletions Sources/TestDiscovery/TestDiscoveryQuerierImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public final class TestDiscoveryQuerierImpl: TestDiscoveryQuerier {
private let pluginEventBusProvider: PluginEventBusProvider
private let processControllerProvider: ProcessControllerProvider
private let resourceLocationResolver: ResourceLocationResolver
private let runnerWasteCollector: RunnerWasteCollector
private let runnerWasteCollectorProvider: RunnerWasteCollectorProvider
private let tempFolder: TemporaryFolder
private let testRunnerProvider: TestRunnerProvider
private let uniqueIdentifierGenerator: UniqueIdentifierGenerator
Expand All @@ -48,7 +48,7 @@ public final class TestDiscoveryQuerierImpl: TestDiscoveryQuerier {
pluginEventBusProvider: PluginEventBusProvider,
processControllerProvider: ProcessControllerProvider,
resourceLocationResolver: ResourceLocationResolver,
runnerWasteCollector: RunnerWasteCollector,
runnerWasteCollectorProvider: RunnerWasteCollectorProvider,
tempFolder: TemporaryFolder,
testRunnerProvider: TestRunnerProvider,
uniqueIdentifierGenerator: UniqueIdentifierGenerator,
Expand All @@ -64,7 +64,7 @@ public final class TestDiscoveryQuerierImpl: TestDiscoveryQuerier {
self.pluginEventBusProvider = pluginEventBusProvider
self.processControllerProvider = processControllerProvider
self.resourceLocationResolver = resourceLocationResolver
self.runnerWasteCollector = runnerWasteCollector
self.runnerWasteCollectorProvider = runnerWasteCollectorProvider
self.tempFolder = tempFolder
self.testRunnerProvider = testRunnerProvider
self.uniqueIdentifierGenerator = uniqueIdentifierGenerator
Expand Down Expand Up @@ -299,7 +299,7 @@ public final class TestDiscoveryQuerierImpl: TestDiscoveryQuerier {
onDemandSimulatorPool: onDemandSimulatorPool,
pluginEventBusProvider: pluginEventBusProvider,
resourceLocationResolver: resourceLocationResolver,
runnerWasteCollector: runnerWasteCollector,
runnerWasteCollectorProvider: runnerWasteCollectorProvider,
simulatorControlTool: simulatorControlTool,
tempFolder: tempFolder,
testRunnerProvider: testRunnerProvider,
Expand Down
16 changes: 16 additions & 0 deletions Tests/RunnerTestHelpers/FakeRunnerWasteCollectorProvider.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import Foundation
import Runner

public class FakeRunnerWasteCollectorProvider: RunnerWasteCollectorProvider {
public var resultProvider: () -> RunnerWasteCollector

public init(
resultProvider: @escaping () -> RunnerWasteCollector = { RunnerWasteCollectorImpl() }
) {
self.resultProvider = resultProvider
}

public func createRunnerWasteCollector() -> RunnerWasteCollector {
resultProvider()
}
}
4 changes: 3 additions & 1 deletion Tests/RunnerTests/RunnerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,9 @@ public final class RunnerTests: XCTestCase {
persistentMetricsJobId: nil,
pluginEventBusProvider: noOpPluginEventBusProvider,
resourceLocationResolver: resolver,
runnerWasteCollector: runnerWasteCollector,
runnerWasteCollectorProvider: FakeRunnerWasteCollectorProvider { [runnerWasteCollector] in
runnerWasteCollector
},
specificMetricRecorder: SpecificMetricRecorderWrapper(NoOpMetricRecorder()),
tempFolder: tempFolder,
testRunnerProvider: testRunnerProvider,
Expand Down
2 changes: 1 addition & 1 deletion Tests/TestDiscoveryTests/TestDiscoveryQuerierTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ final class TestDiscoveryQuerierTests: XCTestCase {
pluginEventBusProvider: NoOoPluginEventBusProvider(),
processControllerProvider: FakeProcessControllerProvider(),
resourceLocationResolver: resourceLocationResolver,
runnerWasteCollector: RunnerWasteCollectorImpl(),
runnerWasteCollectorProvider: FakeRunnerWasteCollectorProvider(),
tempFolder: tempFolder,
testRunnerProvider: testRunnerProvider,
uniqueIdentifierGenerator: fixedValueUniqueIdentifierGenerator,
Expand Down

0 comments on commit 271ff7c

Please sign in to comment.