Skip to content

Commit 9bbce32

Browse files
committed
test
1 parent 73efedd commit 9bbce32

9 files changed

Lines changed: 185 additions & 5 deletions

File tree

crates/rspack_core/src/compiler/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,11 +273,11 @@ impl Compiler {
273273
);
274274
let is_hot = self.cache.before_compile(&mut self.compilation).await;
275275
if is_hot {
276-
let passes = self
277-
.options
278-
.incremental
279-
.passes
280-
.intersection(IncrementalPasses::BUILD_MODULE_GRAPH | IncrementalPasses::MODULES_HASHES);
276+
let passes = self.options.incremental.passes.intersection(
277+
IncrementalPasses::BUILD_MODULE_GRAPH
278+
| IncrementalPasses::MODULES_HASHES
279+
| IncrementalPasses::MODULES_CODEGEN,
280+
);
281281
if !passes.is_empty() {
282282
self.compilation.incremental = Incremental::new_hot(IncrementalOptions {
283283
silent: self.options.incremental.silent,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
DEBUG LOG from rspack.persistentCache
2+
<i> persistent cache enabled
3+
<i> build dependencies are valid (0 tracked)
4+
<t> validate build dependencies: xx ms
5+
<i> meta persistent cache recovery succeeded
6+
<t> read meta from persistent cache: xx ms
7+
<t> read snapshot from persistent cache: xx ms
8+
<i> make persistent cache recovery succeeded
9+
<t> read make from persistent cache: xx ms
10+
<t> write make to persistent cache: xx ms
11+
<i> module hashes persistent cache recovery succeeded
12+
<t> read module hashes from persistent cache: xx ms
13+
<t> write module hashes to persistent cache: xx ms
14+
<i> modules codegen persistent cache recovery succeeded
15+
<t> read modules codegen from persistent cache: xx ms
16+
<t> write modules codegen to persistent cache: xx ms
17+
<i> minimize persistent cache recovery succeeded
18+
<t> read minimize from persistent cache: xx ms
19+
<t> write minimize to persistent cache: xx ms
20+
<t> write meta to persistent cache: xx ms
21+
<t> write snapshot to persistent cache: xx ms
22+
<t> write build dependencies to persistent cache: xx ms
23+
<t> stage persistent cache: xx ms
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
DEBUG LOG from rspack.persistentCache
2+
<i> persistent cache enabled
3+
<i> build dependencies are valid (0 tracked)
4+
<t> validate build dependencies: xx ms
5+
<i> meta persistent cache recovery succeeded
6+
<t> read meta from persistent cache: xx ms
7+
<t> read snapshot from persistent cache: xx ms
8+
<i> snapshot restored with no changed dependencies
9+
<i> make persistent cache recovery succeeded
10+
<t> read make from persistent cache: xx ms
11+
<t> write make to persistent cache: xx ms
12+
<i> module hashes persistent cache recovery succeeded
13+
<t> read module hashes from persistent cache: xx ms
14+
<t> write module hashes to persistent cache: xx ms
15+
<i> modules codegen persistent cache recovery succeeded
16+
<t> read modules codegen from persistent cache: xx ms
17+
<t> write modules codegen to persistent cache: xx ms
18+
<i> minimize persistent cache recovery succeeded
19+
<t> read minimize from persistent cache: xx ms
20+
<t> write minimize to persistent cache: xx ms
21+
<t> write meta to persistent cache: xx ms
22+
<t> write snapshot to persistent cache: xx ms
23+
<t> write build dependencies to persistent cache: xx ms
24+
<t> stage persistent cache: xx ms
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
DEBUG LOG from rspack.persistentCache
2+
<t> write make to persistent cache: xx ms
3+
<t> write module hashes to persistent cache: xx ms
4+
<t> write modules codegen to persistent cache: xx ms
5+
<t> write meta to persistent cache: xx ms
6+
<t> write snapshot to persistent cache: xx ms
7+
<t> write build dependencies to persistent cache: xx ms
8+
<t> stage persistent cache: xx ms
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const value = 42;
2+
---
3+
export const value = 42;
4+
---
5+
export const value = 42;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default 1;
2+
---
3+
export default 1;
4+
---
5+
export default 2;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import value from "./file";
2+
import { stable } from "./stable";
3+
4+
it("should reduce affected modules in module codegen on persistent cache restart", async () => {
5+
const asyncMod = await import("./async-module");
6+
7+
expect(value).toBe(1);
8+
expect(stable).toBe("stable");
9+
expect(asyncMod.value).toBe(42);
10+
11+
if (COMPILER_INDEX == 0) {
12+
await NEXT_START();
13+
}
14+
if (COMPILER_INDEX == 1) {
15+
expect(value).toBe(1);
16+
await NEXT_HMR();
17+
expect(value).toBe(2);
18+
}
19+
});
20+
21+
module.hot.accept("./file");
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
let updateIndex = 0;
2+
3+
const MODULES_HASHES_LOGGER_NAME = 'rspack.incremental.modulesHashes';
4+
const MODULES_CODEGEN_LOGGER_NAME = 'rspack.incremental.modulesCodegen';
5+
6+
function getAffectedLogEntry(logging, loggerName) {
7+
return (logging?.[loggerName]?.entries ?? []).find(
8+
(e) =>
9+
e.type === 'log' &&
10+
typeof e.message === 'string' &&
11+
e.message.includes('modules are affected'),
12+
);
13+
}
14+
15+
function parseAffectedLogEntry(entry) {
16+
const match = entry?.message.match(
17+
/(\d+) modules are affected, (\d+) in total/,
18+
);
19+
expect(match).toBeTruthy();
20+
return {
21+
affected: Number(match[1]),
22+
total: Number(match[2]),
23+
};
24+
}
25+
26+
/** @type {import("@rspack/core").Configuration} */
27+
module.exports = {
28+
context: __dirname,
29+
mode: 'development',
30+
cache: {
31+
type: 'persistent',
32+
},
33+
incremental: {
34+
buildModuleGraph: true,
35+
modulesHashes: true,
36+
modulesCodegen: true,
37+
},
38+
optimization: {
39+
concatenateModules: false,
40+
innerGraph: false,
41+
mangleExports: false,
42+
providedExports: false,
43+
usedExports: false,
44+
},
45+
plugins: [
46+
{
47+
apply(compiler) {
48+
compiler.hooks.done.tap('ModuleCodegenPersistentCacheTest', (stats) => {
49+
const s = stats.toJson({
50+
all: false,
51+
logging: 'verbose',
52+
});
53+
const modulesCodegenAffectedLogEntry = getAffectedLogEntry(
54+
s.logging,
55+
MODULES_CODEGEN_LOGGER_NAME,
56+
);
57+
58+
if (updateIndex === 0) {
59+
expect(modulesCodegenAffectedLogEntry).toBeUndefined();
60+
}
61+
62+
if (updateIndex === 2) {
63+
expect(modulesCodegenAffectedLogEntry).toBeTruthy();
64+
const modulesHashesAffectedLogEntry = getAffectedLogEntry(
65+
s.logging,
66+
MODULES_HASHES_LOGGER_NAME,
67+
);
68+
expect(modulesHashesAffectedLogEntry).toBeTruthy();
69+
const modulesCodegen = parseAffectedLogEntry(
70+
modulesCodegenAffectedLogEntry,
71+
);
72+
expect(modulesCodegen.total).toBeGreaterThan(0);
73+
if (modulesCodegen.affected >= modulesCodegen.total) {
74+
throw new Error(
75+
[
76+
`Expected module codegen affected modules to be less than total modules.`,
77+
`modulesHashes: ${modulesHashesAffectedLogEntry?.message}`,
78+
`modulesCodegen: ${modulesCodegenAffectedLogEntry.message}`,
79+
].join('\n'),
80+
);
81+
}
82+
}
83+
84+
updateIndex++;
85+
});
86+
},
87+
},
88+
],
89+
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const stable = "stable";
2+
---
3+
export const stable = "stable";
4+
---
5+
export const stable = "stable";

0 commit comments

Comments
 (0)