Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ public final class ClangCompileTaskAction: TaskAction, BuildValueValidatingTaskA
}
outputDelegate.incrementClangCacheMiss()
outputDelegate.incrementTaskCounter(.cacheMisses)
outputDelegate.emitOutput("Cache miss\n")
return false
}

Expand All @@ -385,6 +386,7 @@ public final class ClangCompileTaskAction: TaskAction, BuildValueValidatingTaskA
}
outputDelegate.incrementClangCacheMiss()
outputDelegate.incrementTaskCounter(.cacheMisses)
outputDelegate.emitOutput("Cache miss\n")
return false
}
}
Expand All @@ -397,6 +399,7 @@ public final class ClangCompileTaskAction: TaskAction, BuildValueValidatingTaskA
}
outputDelegate.incrementClangCacheHit()
outputDelegate.incrementTaskCounter(.cacheHits)
outputDelegate.emitOutput("Cache hit\n")
outputDelegate.emitOutput(ByteString(encodingAsUTF8: diagnosticText))
return true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -647,9 +647,11 @@ public final class SwiftDriverJobTaskAction: TaskAction, BuildValueValidatingTas
if result {
outputDelegate.incrementSwiftCacheHit()
outputDelegate.incrementTaskCounter(.cacheHits)
outputDelegate.emitOutput("Cache hit\n")
} else {
outputDelegate.incrementSwiftCacheMiss()
outputDelegate.incrementTaskCounter(.cacheMisses)
outputDelegate.emitOutput("Cache miss\n")
}
return result
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1842,6 +1842,7 @@ extension BuildOperationTester.BuildResults {
Issue.record("Unable to find cache miss diagnostic for task \(task)", sourceLocation: sourceLocation)
return
}
check(contains: .taskHadEvent(task, event: .hadOutput(contents: "Cache miss\n")), sourceLocation: sourceLocation)
}

fileprivate func checkCompileCacheHit(_ task: Task, sourceLocation: SourceLocation = #_sourceLocation) {
Expand All @@ -1851,5 +1852,6 @@ extension BuildOperationTester.BuildResults {
return
}
while getDiagnosticMessageForTask(.contains("using CAS output"), kind: .note, task: task) != nil {}
check(contains: .taskHadEvent(task, event: .hadOutput(contents: "Cache hit\n")), sourceLocation: sourceLocation)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ fileprivate struct SwiftCompilationCachingTests: CoreBasedTests {
results.checkTask(.matchTargetName("Application"), .matchRule(["SwiftCompile", "normal", "arm64", "Compiling App.swift", "\(tmpDirPath.str)/Test/aProject/App.swift"])) { task in
task.checkCommandLineMatches([.suffix("swift-frontend"), .anySequence, "-cache-compile-job", .anySequence])
numCompile += 1
results.checkKeyQueryCacheMiss(task)
}
results.checkTask(.matchTargetName("Application"), .matchRule(["SwiftEmitModule", "normal", "arm64", "Emitting module for Application"])) { _ in }

Expand All @@ -121,6 +122,10 @@ fileprivate struct SwiftCompilationCachingTests: CoreBasedTests {

tester.userInfo = rawUserInfo.withAdditionalEnvironment(environment: metricsEnv("two"))
try await tester.checkBuild(runDestination: .anyiOSDevice, persistent: true) { results in
results.checkTask(.matchRule(["SwiftCompile", "normal", "arm64", "Compiling App.swift", "\(tmpDirPath.str)/Test/aProject/App.swift"])) { task in
results.checkKeyQueryCacheHit(task)
}

results.checkNote("4 hits (100%), 0 misses")
}
#expect(try readMetrics("two").contains("\"swiftCacheHits\":\(numCompile),\"swiftCacheMisses\":0"))
Expand Down Expand Up @@ -206,6 +211,7 @@ extension BuildOperationTester.BuildResults {
Issue.record("Unable to find cache miss diagnostic for task \(task)", sourceLocation: sourceLocation)
return
}
check(contains: .taskHadEvent(task, event: .hadOutput(contents: "Cache miss\n")), sourceLocation: sourceLocation)
}

fileprivate func checkKeyQueryCacheHit(_ task: Task, sourceLocation: SourceLocation = #_sourceLocation) {
Expand All @@ -214,5 +220,6 @@ extension BuildOperationTester.BuildResults {
Issue.record("Unable to find cache hit diagnostic for task \(task)", sourceLocation: sourceLocation)
return
}
check(contains: .taskHadEvent(task, event: .hadOutput(contents: "Cache hit\n")), sourceLocation: sourceLocation)
}
}