Skip to content

Commit 3b3faa5

Browse files
Copilothsluoyz
andcommitted
Address code review feedback: improve error handling and regex patterns
Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
1 parent 207edb9 commit 3b3faa5

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

.github/workflows/performance-pr.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ jobs:
3939
mvn clean compile test-compile
4040
# Run JMH with reduced iterations for faster PR feedback
4141
# Uses: 2 warmup iterations, 3 measurement iterations instead of default 5,5
42+
# Pattern targets only EnforcerBenchmarkTest, not CachedEnforcerBenchmarkTest
4243
java -cp "target/test-classes:target/classes:$(mvn dependency:build-classpath -DincludeScope=test -Dmdep.outputFile=/dev/stdout -q)" \
43-
org.openjdk.jmh.Main ".*EnforcerBenchmarkTest.*" -wi 2 -i 3 -f 1 -r 1 -w 1 -rf json -rff pr-results.json 2>&1 | tee pr-bench.txt
44+
org.openjdk.jmh.Main "^.*\\.EnforcerBenchmarkTest\\." -wi 2 -i 3 -f 1 -r 1 -w 1 -rf json -rff pr-results.json 2>&1 | tee pr-bench.txt
4445
4546
# Checkout base branch and run benchmark
4647
- name: Checkout base branch
@@ -57,8 +58,9 @@ jobs:
5758
mvn clean compile test-compile
5859
# Run JMH with reduced iterations for faster PR feedback
5960
# Uses: 2 warmup iterations, 3 measurement iterations instead of default 5,5
61+
# Pattern targets only EnforcerBenchmarkTest, not CachedEnforcerBenchmarkTest
6062
java -cp "target/test-classes:target/classes:$(mvn dependency:build-classpath -DincludeScope=test -Dmdep.outputFile=/dev/stdout -q)" \
61-
org.openjdk.jmh.Main ".*EnforcerBenchmarkTest.*" -wi 2 -i 3 -f 1 -r 1 -w 1 -rf json -rff ../base-results.json 2>&1 | tee ../base-bench.txt
63+
org.openjdk.jmh.Main "^.*\\.EnforcerBenchmarkTest\\." -wi 2 -i 3 -f 1 -r 1 -w 1 -rf json -rff ../base-results.json 2>&1 | tee ../base-bench.txt
6264
6365
# Compare benchmarks
6466
- name: Parse and compare benchmarks
@@ -100,13 +102,22 @@ jobs:
100102
def parse_jmh_output(filename):
101103
"""Parse JMH benchmark output and extract throughput results."""
102104
results = {}
103-
with open(filename, 'r') as f:
104-
content = f.read()
105+
106+
if not os.path.exists(filename):
107+
return {}
108+
109+
try:
110+
with open(filename, 'r') as f:
111+
content = f.read()
112+
except (IOError, OSError) as e:
113+
print(f"Error reading file {filename}: {e}", file=sys.stderr)
114+
return {}
105115
106116
# Match benchmark results with throughput mode
107117
# Format: Benchmark Mode Cnt Score Error Units
108118
# org.casbin...benchmarkXXX thrpt 5 12345.678 ± 123.456 ops/ms
109-
pattern = r'(\S+)\s+thrpt\s+\d+\s+([\d.]+)\s+[±]\s+([\d.]+)\s+ops/ms'
119+
# Using flexible pattern for plus-minus symbol to handle different encodings
120+
pattern = r'(\S+)\s+thrpt\s+\d+\s+([\d.]+)\s+[±+\-]\s+([\d.]+)\s+ops/ms'
110121
111122
for match in re.finditer(pattern, content):
112123
benchmark_name = match.group(1)

0 commit comments

Comments
 (0)