sammccall added a comment. In D77847#1976020 <https://reviews.llvm.org/D77847#1976020>, @kadircet wrote:
> Thanks, LGTM! > > In D77847#1975940 <https://reviews.llvm.org/D77847#1975940>, @sammccall wrote: > > > In D77847#1974126 <https://reviews.llvm.org/D77847#1974126>, @kadircet > > wrote: > > > > > should we also have a unittest for checking ast caching works as expected? > > > > > > TUSchedulerTests has `NoopOnEmptyChanges` which I think tests exactly this, > > and `EvictedAST` which checks it's sensitive to the cache. > > > Right, but none of them checks exactly this behaviour. The > `NoopOnEmptyChanges` test only ensures we don't publish diagnostics again > and `EvictedAST` test actually asserts on the opposite, it checks the last > updated file is "always" cached. Maybe extending `EvictedAST` > test with a "noop update" might be a better fit. Up to you though. OK, I misunderstood what we're testing, please tell me if I got it right this time :-) Plausible bad behavior: we send a no-op change to a relatively inactive file. TUScheduler builds an AST (wasting CPU) and caches it (wasting CPU + latency by displacing a useful entry). We want to prevent either of those from happening. Caching is indirectly observable, building an AST isn't particularly observable. If building an AST *was* observable, then we have an alternate (IMO more meaningful) way of measuring the cache effects: try to use read the maybe-evicted AST and see if it rebuilds. So I think it would be nicer to structure a test around rebuilds. A couple of options I can think of: - add an API like `unsigned TUScheduler::buildCount(PathRef)`, exposing a counter only used for testing? (Or extend the memory usage API to provide this info too) - register a tracer for the test, and count `BuildAST` events (not too fragile if we assert there are exactly N > 0 of them). This seems hacky, technique/tracer may be reusable for other tests. Not sure whether that's a good thing. (Unless you object, I'll land this patch once I have a test out for review so we're sure the existing behavior this patch depends on is there) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77847/new/ https://reviews.llvm.org/D77847 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits