java-topology/tests/Makefile
russell@unturf.com 8a3fc56b23 libjpeg-turbo+libwebp: 5-MOAD scan; libjpeg-turbo-0001 CWE-407, libwebp CLEAN
libjpeg-turbo-0001: rdcolmap.c add_map_entry() O(P*C) linear color dedup.
For each pixel in a PPM colormap file, a linear scan checks the palette
(up to 256 entries). With large images (JPEG_MAX_DIMENSION=65500) and a
saturated palette, cost reaches O(W*H*256). Fix: open-addressing hash set
resets once per _read_color_map() call, giving O(1) average per pixel.
Measured 128-131x speedup. 7/7 unit tests PASS.

libwebp: CLEAN on all 5 MOADs. GetColorPalette uses open-addressing hash,
backward references use hash chains, palette sort O(N^2) bounded to N<=256
once per image, DSP init uses mutex-protected lazy initialization.
2026-03-31 22:36:56 -04:00

1184 lines
52 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Tests + benchmarks for CWE-407 defects across javac and Minecraft
#
# javac (tickets 00010005):
# make unit — 6 self-contained unit suites (no JDK internals)
# make integration — requires --add-exports jdk.compiler
# make functional — requires ToolProvider (JDK, not JRE)
# make all — unit + integration + functional
# make bench — before/after timing for 0001 only (Tarjan)
# make bench-all — before/after timing for all five javac defects
# make bench-real — patches GraphUtils.java, runs integration before+after
#
# Minecraft (gumyum paper):
# make bench-mc-server — DependencySorter depth scaling (mc-0001)
# make bench-max — BenchMax extreme-scale (javac + MC + Create)
# make bench-gumyum — all Minecraft + Create benchmarks
# make bench-everything — javac + Minecraft + BenchMax
#
# Three-tier enriched-minecraft benchmarks (real server):
# make bench-unpatched — control: vanilla jar, depth-16 (defect present)
# make bench-mitigated — fix applied: patched jar, depth-16 (same game)
# make bench-enriched — new territory: patched jar, depth-24 / 300 NS
# make bench-three-tier — run all three in sequence, print summary
# make bench-elytra — 30 players, elytra + fireworks, all directions (final)
#
# Human play-test (server stays up, connect with Minecraft client):
# make play-unpatched — localhost:25565
# make play-mitigated — localhost:25566
# make play-enriched — localhost:25567 (enriched-minecraft experience)
#
# make clean — remove compiled classes
JAVA := java
# Use jdk.compiler module directly — system javac binary may not be installed.
JAVAC := java -m jdk.compiler/com.sun.tools.javac.Main
EXPORTS := --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
# JDK 25 for Minecraft class file version 69 compatibility
JAVA25 := /tmp/jdk25/bin/java
JAVAC25 := /tmp/jdk25/bin/javac
GUAVA := /tmp/guava.jar
SUPPORT_ALL := support/TarjanAlgorithm.java \
support/FindNodeAlgorithm.java \
support/ClosureAlgorithm.java \
support/TopoSorterAlgorithm.java \
support/DependencyListAlgorithm.java \
support/BoundSetAlgorithm.java \
support/PostgresqlVarDedupAlgorithm.java \
support/PostgresqlExprMembershipAlgorithm.java \
support/PostgresqlJoinMergeAlgorithm.java \
support/MongodbIndexPlannerAlgorithm.java \
support/MongodbPipelineAlgorithm.java \
support/SwiplAlgorithm.java
.PHONY: all unit integration functional bench bench-all bench-real clean \
unit-tarjan unit-findnode unit-closure unit-toposort unit-deplist unit-boundset \
unit-psql-0002 unit-psql-0003 unit-psql-0004 bench-psql \
unit-mongo-0001 unit-mongo-0002 bench-mongo \
unit-swipl bench-swipl \
unit-hive unit-spark unit-luigi \
unit-frrouting-0002 unit-tor-0001 \
unit-solc-0001 unit-solc-0002 unit-buildkit-0001 \
unit-kafka unit-spring unit-presto unit-webpack \
unit-onos-0001 unit-bird unit-bazel unit-odl-0001 unit-httpd-0001 unit-kicad-0001 \
unit-v8-0001 unit-spidermonkey-0001 unit-llvm-0002 unit-octave-0001 \
unit-rabbitmq unit-cfengine unit-terraform unit-ansible \
unit-networkx unit-jenkins unit-maven-extra \
unit-tinkerpop-0001 \
unit-godot \
unit-dry \
unit-sfml unit-angelscript unit-threejs unit-pygame \
unit-pyramid \
unit-bottle \
unit-rails \
unit-django \
unit-sqlite \
unit-hibernate unit-mybatis \
unit-efcore unit-diesel \
unit-sqlalchemy unit-peewee unit-sequelize \
unit-typeorm unit-doctrine unit-gorm \
unit-exposed unit-seaorm \
unit-activerecord \
unit-fastapi unit-gin unit-fiber \
unit-nestjs \
unit-pylons \
unit-bevy unit-libgdx \
unit-ogre unit-bullet \
unit-box2d unit-sdl3 unit-panda3d \
unit-swift-0001 unit-crystal-0001 unit-crystal-0002 unit-crystal-0004 \
unit-elixir-0001 \
unit-nim-0001 unit-nim-0002 \
unit-nomad unit-consul \
unit-ray unit-celery unit-prefect \
unit-libjpeg-turbo-0001 \
bench-mc-server bench-max bench-gumyum bench-everything bench-loadsim bench-elytra \
bench-unpatched bench-mitigated bench-enriched bench-three-tier \
play-unpatched play-mitigated play-enriched \
workbench workbench-build workbench-patched workbench-verify
all: unit integration functional
# ── Unit ──────────────────────────────────────────────────────────────────────
# Self-contained — no jdk.compiler dependency.
# Six suites, one per defect.
unit: unit-tarjan unit-findnode unit-closure unit-toposort unit-deplist unit-boundset \
unit-psql-0002 unit-psql-0003 unit-psql-0004 \
unit-mongo-0001 unit-mongo-0002 \
unit-swipl \
unit-hive unit-spark unit-luigi \
unit-frrouting-0002 unit-tor-0001 \
unit-solc-0001 unit-solc-0002 unit-buildkit-0001 \
unit-kafka unit-spring unit-presto unit-webpack \
unit-onos-0001 unit-bird unit-bazel unit-odl-0001 unit-httpd-0001 unit-kicad-0001 \
unit-v8-0001 unit-spidermonkey-0001 unit-llvm-0002 unit-octave-0001 \
unit-rabbitmq \
unit-cfengine unit-terraform unit-ansible \
unit-networkx unit-jenkins unit-maven-extra \
unit-tinkerpop-0001 \
unit-godot \
unit-dry \
unit-sfml unit-angelscript unit-threejs unit-pygame \
unit-pyramid \
unit-bottle \
unit-rails \
unit-django \
unit-sqlite \
unit-hibernate unit-mybatis \
unit-efcore unit-diesel \
unit-sqlalchemy unit-peewee unit-sequelize \
unit-typeorm unit-doctrine unit-gorm \
unit-exposed unit-seaorm \
unit-activerecord \
unit-fastapi unit-gin unit-fiber \
unit-nestjs \
unit-pylons \
unit-bevy unit-libgdx \
unit-ogre unit-bullet \
unit-box2d unit-sdl3 unit-panda3d \
unit-swift-0001 unit-crystal-0001 unit-crystal-0002 unit-crystal-0004 \
unit-elixir-0001 \
unit-nim-0001 unit-nim-0002 \
unit-nomad unit-consul \
unit-ray unit-celery unit-prefect \
unit-libjpeg-turbo-0001
unit-tarjan: unit/TarjanComplexityTest.class
@echo ""
@echo "=== UNIT 0001: TarjanComplexityTest ==="
$(JAVA) -cp . unit.TarjanComplexityTest
unit/TarjanComplexityTest.class: support/TarjanAlgorithm.java unit/TarjanComplexityTest.java
$(JAVAC) -cp . support/TarjanAlgorithm.java unit/TarjanComplexityTest.java
unit-findnode: unit/FindNodeComplexityTest.class
@echo ""
@echo "=== UNIT 0002a: FindNodeComplexityTest ==="
$(JAVA) -cp . unit.FindNodeComplexityTest
unit/FindNodeComplexityTest.class: support/FindNodeAlgorithm.java unit/FindNodeComplexityTest.java
$(JAVAC) -cp . support/FindNodeAlgorithm.java unit/FindNodeComplexityTest.java
unit-closure: unit/ClosureComplexityTest.class
@echo ""
@echo "=== UNIT 0002b: ClosureComplexityTest ==="
$(JAVA) -cp . unit.ClosureComplexityTest
unit/ClosureComplexityTest.class: support/ClosureAlgorithm.java unit/ClosureComplexityTest.java
$(JAVAC) -cp . support/ClosureAlgorithm.java unit/ClosureComplexityTest.java
unit-toposort: unit/TopoSorterComplexityTest.class
@echo ""
@echo "=== UNIT 0003: TopoSorterComplexityTest ==="
$(JAVA) -cp . unit.TopoSorterComplexityTest
unit/TopoSorterComplexityTest.class: support/TopoSorterAlgorithm.java unit/TopoSorterComplexityTest.java
$(JAVAC) -cp . support/TopoSorterAlgorithm.java unit/TopoSorterComplexityTest.java
unit-deplist: unit/DependencyListComplexityTest.class
@echo ""
@echo "=== UNIT 0004: DependencyListComplexityTest ==="
$(JAVA) -cp . unit.DependencyListComplexityTest
unit/DependencyListComplexityTest.class: support/DependencyListAlgorithm.java unit/DependencyListComplexityTest.java
$(JAVAC) -cp . support/DependencyListAlgorithm.java unit/DependencyListComplexityTest.java
unit-boundset: unit/BoundSetComplexityTest.class
@echo ""
@echo "=== UNIT 0005: BoundSetComplexityTest ==="
$(JAVA) -cp . unit.BoundSetComplexityTest
unit/BoundSetComplexityTest.class: support/BoundSetAlgorithm.java unit/BoundSetComplexityTest.java
$(JAVAC) -cp . support/BoundSetAlgorithm.java unit/BoundSetComplexityTest.java
# ── PostgreSQL unit tests (0002/0003/0004) ─────────────────────────────────────
support/PostgresqlVarDedupAlgorithm.class: support/PostgresqlVarDedupAlgorithm.java
$(JAVAC) -cp . support/PostgresqlVarDedupAlgorithm.java
support/PostgresqlExprMembershipAlgorithm.class: support/PostgresqlExprMembershipAlgorithm.java
$(JAVAC) -cp . support/PostgresqlExprMembershipAlgorithm.java
support/PostgresqlJoinMergeAlgorithm.class: support/PostgresqlJoinMergeAlgorithm.java
$(JAVAC) -cp . support/PostgresqlJoinMergeAlgorithm.java
unit-psql-0002: support/PostgresqlVarDedupAlgorithm.class
@echo ""
@echo "=== UNIT postgresql-0002: VarDedup (preptlist.c tlist_member) ==="
$(JAVA) -ea -cp . support.PostgresqlVarDedupAlgorithm
unit-psql-0003: support/PostgresqlExprMembershipAlgorithm.class
@echo ""
@echo "=== UNIT postgresql-0003: ExprMembership (equivclass.c list_member) ==="
$(JAVA) -ea -cp . support.PostgresqlExprMembershipAlgorithm
unit-psql-0004: support/PostgresqlJoinMergeAlgorithm.class
@echo ""
@echo "=== UNIT postgresql-0004: JoinMerge (analyzejoins.c list_member) ==="
$(JAVA) -ea -cp . support.PostgresqlJoinMergeAlgorithm
bench/PostgresqlBenchmark.class: bench/PostgresqlBenchmark.java \
support/PostgresqlVarDedupAlgorithm.class \
support/PostgresqlExprMembershipAlgorithm.class \
support/PostgresqlJoinMergeAlgorithm.class
$(JAVAC) -cp . bench/PostgresqlBenchmark.java
bench-psql: bench/PostgresqlBenchmark.class
@echo ""
@echo "=== BENCH postgresql-0002/0003/0004: algorithm micro-benchmarks ==="
$(JAVA) -cp . bench.PostgresqlBenchmark
# SQL functional tests — requires a running PostgreSQL instance
# Usage: make functional-psql PSQL="psql -U postgres"
PSQL := psql
functional-psql:
@echo ""
@echo "=== FUNCTIONAL postgresql-0002/0003/0004: SQL correctness tests ==="
$(PSQL) -v ON_ERROR_STOP=1 -f sql/postgresql-0002-0004.sql
# ── MongoDB unit tests (0001/0002) ─────────────────────────────────────────────
support/MongodbIndexPlannerAlgorithm.class: support/MongodbIndexPlannerAlgorithm.java
$(JAVAC) -cp . support/MongodbIndexPlannerAlgorithm.java
support/MongodbPipelineAlgorithm.class: support/MongodbPipelineAlgorithm.java
$(JAVAC) -cp . support/MongodbPipelineAlgorithm.java
unit-mongo-0001: support/MongodbIndexPlannerAlgorithm.class
@echo ""
@echo "=== UNIT mongodb-0001/0003: IndexPlanner (planner_ixselect.cpp RelevantTag + plan_enumerator.cpp) ==="
$(JAVA) -ea -cp . support.MongodbIndexPlannerAlgorithm
unit-mongo-0002: support/MongodbPipelineAlgorithm.class
@echo ""
@echo "=== UNIT mongodb-0002/0004: Pipeline (streaming_group + unpack_bucket) ==="
$(JAVA) -ea -cp . support.MongodbPipelineAlgorithm
bench/MongodbBenchmark.class: bench/MongodbBenchmark.java \
support/MongodbIndexPlannerAlgorithm.class \
support/MongodbPipelineAlgorithm.class
$(JAVAC) -cp . bench/MongodbBenchmark.java
bench-mongo: bench/MongodbBenchmark.class
@echo ""
@echo "=== BENCH mongodb-0001/0002/0003/0004: algorithm micro-benchmarks ==="
$(JAVA) -cp . bench.MongodbBenchmark
# ── SWI-Prolog unit test (swipl-0001/0002/0003) ───────────────────────────────
support/SwiplAlgorithm.class: support/SwiplAlgorithm.java
$(JAVAC) -cp . support/SwiplAlgorithm.java
unit-swipl: support/SwiplAlgorithm.class
@echo ""
@echo "=== UNIT swipl-0001/0002/0003: ugraphs.pl top_sort + aggregate.pl free_variables + clp_distinct ==="
$(JAVA) -ea -cp . support.SwiplAlgorithm
bench-swipl: support/SwiplAlgorithm.class
@echo ""
@echo "=== BENCH swipl-0001/0002/0003: algorithm micro-benchmarks ==="
$(JAVA) -cp . support.SwiplAlgorithm
# ── Hive unit tests (hive-0001/0002) ──────────────────────────────────────────
unit/HiveGenMRSeenOpsTest.class: ../defects/hive/unit/HiveGenMRSeenOpsTest.java
$(JAVAC) -cp . -d . ../defects/hive/unit/HiveGenMRSeenOpsTest.java
unit-hive: unit/HiveGenMRSeenOpsTest.class
@echo ""
@echo "=== UNIT hive-0001/0002: GenMRProcContext seenOps (ArrayList→HashSet) ==="
$(JAVA) -ea -cp . unit.HiveGenMRSeenOpsTest
# ── Spark unit test (spark-0001) ──────────────────────────────────────────────
unit/SparkAnalyzerWindowAggTest.class: ../defects/spark/unit/SparkAnalyzerWindowAggTest.java
$(JAVAC) -cp . -d . ../defects/spark/unit/SparkAnalyzerWindowAggTest.java
unit-spark: unit/SparkAnalyzerWindowAggTest.class
@echo ""
@echo "=== UNIT spark-0001: Analyzer seenWindowAggregates (ArrayBuffer→LinkedHashSet) ==="
$(JAVA) -ea -cp . unit.SparkAnalyzerWindowAggTest
# ── Luigi unit test (luigi-0001) ──────────────────────────────────────────────
unit-luigi:
@echo ""
@echo "=== UNIT luigi-0001: dfs_paths path_set (set(path) rebuild→O(1)) ==="
python3 -m unittest discover -s ../defects/luigi/unit -p "*.py" -v
# ── FRRouting unit test (frrouting-0002) ──────────────────────────────────────
unit/FrroutingOspfVertexParentTest.class: ../defects/frrouting/unit/FrroutingOspfVertexParentTest.java
$(JAVAC) -cp . -d . ../defects/frrouting/unit/FrroutingOspfVertexParentTest.java
unit-frrouting-0002: unit/FrroutingOspfVertexParentTest.class
@echo ""
@echo "=== UNIT frrouting-0002: ospf_vertex_add_parent listnode_lookup→hash (199.5x at V=400) ==="
$(JAVA) -ea -cp . unit.FrroutingOspfVertexParentTest
# ── Tor unit test (tor-0001) ──────────────────────────────────────────────────
unit/TorRouterlistTest.class: ../defects/tor/unit/TorRouterlistTest.java
$(JAVAC) -cp . -d . ../defects/tor/unit/TorRouterlistTest.java
unit-tor-0001: unit/TorRouterlistTest.class
@echo ""
@echo "=== UNIT tor-0001: routerlist fingerprint lookup smartlist→digestset (200.5x at R=400) ==="
$(JAVA) -ea -cp . unit.TorRouterlistTest
# ── Solidity compiler unit tests (solc-0001/0002) ─────────────────────────────
unit/SolcCallGraphCycleTest.class: ../defects/solc/unit/SolcCallGraphCycleTest.java
$(JAVAC) -cp . -d . ../defects/solc/unit/SolcCallGraphCycleTest.java
unit-solc-0001: unit/SolcCallGraphCycleTest.class
@echo ""
@echo "=== UNIT solc-0001: CallGraphCycleFinder currentPath std::find→unordered_set (15.5x at F=D=32) ==="
$(JAVA) -ea -cp . unit.SolcCallGraphCycleTest
unit/SolcAssemblyRjumpTest.class: ../defects/solc/unit/SolcAssemblyRjumpTest.java
$(JAVAC) -cp . -d . ../defects/solc/unit/SolcAssemblyRjumpTest.java
unit-solc-0002: unit/SolcAssemblyRjumpTest.class
@echo ""
@echo "=== UNIT solc-0002: Assembly RJUMP std::find→unordered_map index (25.3x at J=N=100) ==="
$(JAVA) -ea -cp . unit.SolcAssemblyRjumpTest
# ── BuildKit unit test (buildkit-0001) ────────────────────────────────────────
unit/BuildkitHasLinkTest.class: ../defects/buildkit/unit/BuildkitHasLinkTest.java
$(JAVAC) -cp . -d . ../defects/buildkit/unit/BuildkitHasLinkTest.java
unit-buildkit-0001: unit/BuildkitHasLinkTest.class
@echo ""
@echo "=== UNIT buildkit-0001: HasLink slices.Contains→map[string]struct{} (100x at K=L=100) ==="
$(JAVA) -ea -cp . unit.BuildkitHasLinkTest
# ── Kafka unit tests (kafka-0001/0002) ────────────────────────────────────────
unit/KafkaStickyAssignorTest.class: ../defects/kafka/unit/KafkaStickyAssignorTest.java
$(JAVAC) -cp . -d . ../defects/kafka/unit/KafkaStickyAssignorTest.java
unit-kafka: unit/KafkaStickyAssignorTest.class
@echo ""
@echo "=== UNIT kafka-0001/0002: StickyAssignor isBalanced/maybeAssign (List→HashSet) ==="
$(JAVA) -ea -cp . unit.KafkaStickyAssignorTest
# ── Spring unit tests (spring-0001/0002) ──────────────────────────────────────
unit/SpringBeanFactoryTest.class: ../defects/spring/unit/SpringBeanFactoryTest.java
$(JAVAC) -cp . -d . ../defects/spring/unit/SpringBeanFactoryTest.java
unit-spring: unit/SpringBeanFactoryTest.class
@echo ""
@echo "=== UNIT spring-0001/0002: BeanFactoryUtils/ImportStack (ArrayList→LinkedHashSet) ==="
$(JAVA) -ea -cp . unit.SpringBeanFactoryTest
# ── Presto unit tests (presto-0001 through 0004) ──────────────────────────────
unit/PrestoDerefPushdownTest.class: ../defects/presto/unit/PrestoDerefPushdownTest.java
$(JAVAC) -cp . -d . ../defects/presto/unit/PrestoDerefPushdownTest.java
unit-presto: unit/PrestoDerefPushdownTest.class
@echo ""
@echo "=== UNIT presto-0001/0004: PushDownDereferences/PayloadJoin (ImmutableList→ImmutableSet) ==="
$(JAVA) -ea -cp . unit.PrestoDerefPushdownTest
# ── webpack unit tests (webpack-0001/0002/0003) ───────────────────────────────
unit/WebpackHmrTest.class: ../defects/webpack/unit/WebpackHmrTest.java
$(JAVAC) -cp . -d . ../defects/webpack/unit/WebpackHmrTest.java
unit-webpack: unit/WebpackHmrTest.class
@echo ""
@echo "=== UNIT webpack-0001/0002/0003: HMR BFS/addAllToSet/createRequire (Array→Set) ==="
$(JAVA) -ea -cp . unit.WebpackHmrTest
# ── ONOS unit test (onos-0001) ────────────────────────────────────────────────
unit/OnosTarjanTest.class: ../defects/onos/unit/OnosTarjanTest.java
$(JAVAC) -cp . -d . ../defects/onos/unit/OnosTarjanTest.java
unit-onos-0001: unit/OnosTarjanTest.class
@echo ""
@echo "=== UNIT onos-0001: TarjanGraphSearch visited ArrayList→HashSet (101.7x at V=200/E=800) ==="
$(JAVA) -ea -cp . unit.OnosTarjanTest
# ── BIRD unit tests (bird-0001/0002) ──────────────────────────────────────────
unit/BirdRoutingTest.class: ../defects/bird/unit/BirdRoutingTest.java
$(JAVAC) -cp . -d . ../defects/bird/unit/BirdRoutingTest.java
unit-bird: unit/BirdRoutingTest.class
@echo ""
@echo "=== UNIT bird-0001/0002: OSPF Dijkstra heap (49.2x) + BGP community bsearch (13.1x) ==="
$(JAVA) -ea -cp . unit.BirdRoutingTest
# ── Bazel unit tests (bazel-0001/0002) ────────────────────────────────────────
unit/BazelAspectCollectionTest.class: ../defects/bazel/unit/BazelAspectCollectionTest.java
$(JAVAC) -cp . -d . ../defects/bazel/unit/BazelAspectCollectionTest.java
unit-bazel: unit/BazelAspectCollectionTest.class
@echo ""
@echo "=== UNIT bazel-0001/0002: AspectCollection seenAspects/create (50x / 13x at n=50) ==="
$(JAVA) -ea -cp . unit.BazelAspectCollectionTest
# ── ODL unit test (odl-0001) ──────────────────────────────────────────────────
unit/OdlGroupRegistryTest.class: ../defects/odl/unit/OdlGroupRegistryTest.java
$(JAVAC) -cp . -d . ../defects/odl/unit/OdlGroupRegistryTest.java
unit-odl-0001: unit/OdlGroupRegistryTest.class
@echo ""
@echo "=== UNIT odl-0001: DevicesGroupRegistry ArrayList→HashSet (40,000x at G=N=200) ==="
$(JAVA) -ea -cp . unit.OdlGroupRegistryTest
# ── httpd unit test (httpd-0001) ──────────────────────────────────────────────
unit/HttpdProxyBalancerTest.class: ../defects/httpd/unit/HttpdProxyBalancerTest.java
$(JAVAC) -cp . -d . ../defects/httpd/unit/HttpdProxyBalancerTest.java
unit-httpd-0001: unit/HttpdProxyBalancerTest.class
@echo ""
@echo "=== UNIT httpd-0001: mod_proxy_balancer route apr_hash (50.5x at W=100/R=1000) ==="
$(JAVA) -ea -cp . unit.HttpdProxyBalancerTest
# ── KiCad unit test (kicad-0001) ──────────────────────────────────────────────
unit/KicadFromToTest.class: ../defects/kicad/unit/KicadFromToTest.java
$(JAVAC) -cp . -d . ../defects/kicad/unit/KicadFromToTest.java
unit-kicad-0001: unit/KicadFromToTest.class
@echo ""
@echo "=== UNIT kicad-0001: from_to_cache BFS vector→unordered_set (34.3x at V=200) ==="
$(JAVA) -ea -cp . unit.KicadFromToTest
unit/V8RegisterAllocatorTest.class: ../defects/v8/unit/V8RegisterAllocatorTest.java
$(JAVAC) -cp . -d . ../defects/v8/unit/V8RegisterAllocatorTest.java
unit-v8-0001: unit/V8RegisterAllocatorTest.class
@echo ""
@echo "=== UNIT v8-0001: register-allocator spilled_consts ZoneVector→ZoneUnorderedSet (50x at k=50) ==="
$(JAVA) -ea -cp . unit.V8RegisterAllocatorTest
unit/SpiderMonkeyLinearSumTest.class: ../defects/spidermonkey/unit/SpiderMonkeyLinearSumTest.java
$(JAVAC) -cp . -d . ../defects/spidermonkey/unit/SpiderMonkeyLinearSumTest.java
unit-spidermonkey-0001: unit/SpiderMonkeyLinearSumTest.class
@echo ""
@echo "=== UNIT spidermonkey-0001: LinearSum::add Vector→HashMap Ion bounds-check (O(N*T)→O(N)) ==="
$(JAVA) -ea -cp . unit.SpiderMonkeyLinearSumTest
unit/LlvmAliasSetTest.class: ../defects/llvm/unit/LlvmAliasSetTest.java
$(JAVAC) -cp . -d . ../defects/llvm/unit/LlvmAliasSetTest.java
unit-llvm-0002: unit/LlvmAliasSetTest.class
@echo ""
@echo "=== UNIT llvm-0002/0003: AliasSet MemoryLocs SmallVector→DenseSet + LCSSA isExitBlock SmallPtrSet ==="
$(JAVA) -ea -cp . unit.LlvmAliasSetTest
unit/OctaveVecdimTest.class: ../defects/octave/unit/OctaveVecdimTest.java
$(JAVAC) -cp . -d . ../defects/octave/unit/OctaveVecdimTest.java
unit-octave-0001: unit/OctaveVecdimTest.class
@echo ""
@echo "=== UNIT octave-0001: vecdim std::find→std::binary_search on sorted vector ==="
$(JAVA) -ea -cp . unit.OctaveVecdimTest
unit/RabbitMQQueueTest.class: ../defects/rabbitmq/unit/RabbitMQQueueTest.java
$(JAVAC) -cp . -d . ../defects/rabbitmq/unit/RabbitMQQueueTest.java
unit-rabbitmq: unit/RabbitMQQueueTest.class
@echo ""
@echo "=== UNIT rabbitmq-0001/0002: classic-queue [pid()]→map + sac-coordinator gb_sets (5/5) ==="
$(JAVA) -ea -cp . unit.RabbitMQQueueTest
unit/CFEngineRlistTest.class: ../defects/cfengine/unit/CFEngineRlistTest.java
$(JAVAC) -cp . -d . ../defects/cfengine/unit/CFEngineRlistTest.java
unit-cfengine: unit/CFEngineRlistTest.class
@echo ""
@echo "=== UNIT cfengine-0001/0002/0003: getindices/unique/maparray Rlist→StringSet ==="
$(JAVA) -ea -cp . unit.CFEngineRlistTest
unit/TerraformDagTest.class: ../defects/terraform/unit/TerraformDagTest.java
$(JAVAC) -cp . -d . ../defects/terraform/unit/TerraformDagTest.java
unit-terraform: unit/TerraformDagTest.class
@echo ""
@echo "=== UNIT terraform-0001/0002 + saltstack-0001: inStack/EdgesTo/has_loop O(1) fix ==="
$(JAVA) -ea -cp . unit.TerraformDagTest
unit/AnsibleRoleTest.class: ../defects/ansible/unit/AnsibleRoleTest.java
$(JAVAC) -cp . -d . ../defects/ansible/unit/AnsibleRoleTest.java
unit-ansible: unit/AnsibleRoleTest.class
@echo ""
@echo "=== UNIT ansible-0001/0002 + puppet-0001: seen-list/collections/BFS-path O(1) fix ==="
$(JAVA) -ea -cp . unit.AnsibleRoleTest
unit/NetworkXCyclesTest.class: ../defects/networkx/unit/NetworkXCyclesTest.java
$(JAVAC) -cp . -d . ../defects/networkx/unit/NetworkXCyclesTest.java
unit-networkx: unit/NetworkXCyclesTest.class
@echo ""
@echo "=== UNIT networkx-0001 + rubocop-0001 + solargraph-0001: list→set O(1) (5/5) ==="
$(JAVA) -ea -cp . unit.NetworkXCyclesTest
unit/JenkinsDependencyGraphTest.class: ../defects/jenkins/unit/JenkinsDependencyGraphTest.java
$(JAVAC) -cp . -d . ../defects/jenkins/unit/JenkinsDependencyGraphTest.java
unit-jenkins: unit/JenkinsDependencyGraphTest.class
@echo ""
@echo "=== UNIT jenkins-0001/0002: DependencyGraph edge index + ChildJobs HashSet (5/5) ==="
$(JAVA) -ea -cp . unit.JenkinsDependencyGraphTest
unit/MavenGraphBuilderTest.class: ../defects/maven/unit/MavenGraphBuilderTest.java
$(JAVAC) -cp . -d . ../defects/maven/unit/MavenGraphBuilderTest.java
unit-maven-extra: unit/MavenGraphBuilderTest.class
@echo ""
@echo "=== UNIT maven-0004/0005: sortedProjects/sortedNodes indexOf→HashMap (5/5) ==="
$(JAVA) -ea -cp . unit.MavenGraphBuilderTest
unit/TinkerPopPathTest.class: ../defects/tinkerpop/unit/TinkerPopPathTest.java
$(JAVAC) -cp . -d . ../defects/tinkerpop/unit/TinkerPopPathTest.java
unit-tinkerpop-0001: unit/TinkerPopPathTest.class
@echo ""
@echo "=== UNIT tinkerpop-0001: Path.isSimple() O(n²)→O(n) HashSet (99.5x at n=200) ==="
$(JAVA) -ea -cp . unit.TinkerPopPathTest
unit/GodotPhysicsAreaTest.class: ../defects/godot/unit/GodotPhysicsAreaTest.java
$(JAVAC) -cp . -d . ../defects/godot/unit/GodotPhysicsAreaTest.java
unit-godot: unit/GodotPhysicsAreaTest.class
@echo ""
@echo "=== UNIT godot-0001..0004: SceneTree group (1000x), physics area 2D/3D (50x), soft body (4x) ==="
$(JAVA) -ea -cp . unit.GodotPhysicsAreaTest
unit/DryEngineTest.class: ../defects/dry/unit/DryEngineTest.java
$(JAVAC) -cp . -d . ../defects/dry/unit/DryEngineTest.java
unit-dry: unit/DryEngineTest.class
@echo ""
@echo "=== UNIT dry-0001/0002: Dry/Urho3D ListView (893x), event unsub (48x) ==="
$(JAVA) -ea -cp . unit.DryEngineTest
unit/SFMLTest.class: ../defects/sfml/unit/SFMLTest.java
$(JAVAC) -cp . -d . ../defects/sfml/unit/SFMLTest.java
unit-sfml: unit/SFMLTest.class
@echo ""
@echo "=== UNIT sfml-0001..0005: SFML VideoMode (139x), window (1001x), GL ext (149x) ==="
$(JAVA) -ea -cp . unit.SFMLTest
unit/AngelScriptTest.class: ../defects/angelscript/unit/AngelScriptTest.java
$(JAVAC) -cp . -d . ../defects/angelscript/unit/AngelScriptTest.java
unit-angelscript: unit/AngelScriptTest.class
@echo ""
@echo "=== UNIT angelscript-0001..0003: AngelScript shared-type (100x), switch (250x) ==="
$(JAVA) -ea -cp . unit.AngelScriptTest
unit/ThreeJSTest.class: ../defects/threejs/unit/ThreeJSTest.java
$(JAVAC) -cp . -d . ../defects/threejs/unit/ThreeJSTest.java
unit-threejs: unit/ThreeJSTest.class
@echo ""
@echo "=== UNIT threejs-0001..0005: Three.js indexOf (22x/1875x/517x) ==="
$(JAVA) -ea -cp . unit.ThreeJSTest
unit/PygameTest.class: ../defects/pygame/unit/PygameTest.java
$(JAVAC) -cp . -d . ../defects/pygame/unit/PygameTest.java
unit-pygame: unit/PygameTest.class
@echo ""
@echo "=== UNIT pygame-0001..0004: pygame sprite remove (3001x), kill (3001x), layer (3001x) ==="
$(JAVA) -ea -cp . unit.PygameTest
unit/PyramidTest.class: ../defects/pyramid/unit/PyramidTest.java
$(JAVAC) -cp . -d . ../defects/pyramid/unit/PyramidTest.java
unit-pyramid: unit/PyramidTest.class
@echo ""
@echo "=== UNIT pyramid-0001..0005: Pyramid route (2000x), static (1000x), actions (738x), topo (176x), registry (6x) ==="
$(JAVA) -ea -cp . unit.PyramidTest
unit/BottleTest.class: ../defects/bottle/unit/BottleTest.java
$(JAVAC) -cp . -d . ../defects/bottle/unit/BottleTest.java
unit-bottle: unit/BottleTest.class
@echo ""
@echo "=== UNIT bottle-0001: Bottle all_plugins() skiplist set (75x) ==="
$(JAVA) -ea -cp . unit.BottleTest
unit/RailsTest.class: ../defects/rails/unit/RailsTest.java
$(JAVAC) -cp . -d . ../defects/rails/unit/RailsTest.java
unit-rails: unit/RailsTest.class
@echo ""
@echo "=== UNIT rails-0001..0011: Rails Active Record CWE-407 (1000x/475x/450x/251x/210x...) ==="
$(JAVA) -ea -cp . unit.RailsTest
unit/DjangoTest.class: ../defects/django/unit/DjangoTest.java
$(JAVAC) -cp . -d . ../defects/django/unit/DjangoTest.java
unit-django: unit/DjangoTest.class
@echo ""
@echo "=== UNIT django-0001..0004: Django from_db(21x) serializer(10x) check(125x) raw(101x) ==="
$(JAVA) -ea -cp . unit.DjangoTest
unit/SqliteTest.class: ../defects/sqlite/unit/SqliteTest.java
$(JAVAC) -cp . -d . ../defects/sqlite/unit/SqliteTest.java
unit-sqlite: unit/SqliteTest.class
@echo ""
@echo "=== UNIT sqlite-0001: SQLite checkColumnOverlap list-scan (101x) ==="
$(JAVA) -ea -cp . unit.SqliteTest
unit/HibernateConstraintColumnTest.class: ../defects/hibernate/unit/HibernateConstraintColumnTest.java
$(JAVAC) -cp . -d . ../defects/hibernate/unit/HibernateConstraintColumnTest.java
unit-hibernate: unit/HibernateConstraintColumnTest.class
@echo ""
@echo "=== UNIT hibernate-0001..0005: Hibernate addColumn(ArrayList→LinkedHashSet) (19x) ==="
$(JAVA) -ea -cp . unit.HibernateConstraintColumnTest
unit/MyBatisConstructorSortTest.class: ../defects/mybatis/unit/MyBatisConstructorSortTest.java
$(JAVAC) -cp . -d . ../defects/mybatis/unit/MyBatisConstructorSortTest.java
unit-mybatis: unit/MyBatisConstructorSortTest.class
@echo ""
@echo "=== UNIT mybatis-0001: MyBatis sortConstructorMappings indexOf→HashMap (12x) ==="
$(JAVA) -ea -cp . unit.MyBatisConstructorSortTest
unit/EfCoreTest.class: ../defects/efcore/unit/EfCoreTest.java
$(JAVAC) -cp . -d . ../defects/efcore/unit/EfCoreTest.java
unit-efcore: unit/EfCoreTest.class
@echo ""
@echo "=== UNIT efcore-0001..0003: EF Core BFS/principal/FK-discovery List→HashSet (250x/250x/6x) ==="
$(JAVA) -ea -cp . unit.EfCoreTest
unit/DieselTest.class: ../defects/diesel/unit/DieselTest.java
$(JAVAC) -cp . -d . ../defects/diesel/unit/DieselTest.java
unit-diesel: unit/DieselTest.class
@echo ""
@echo "=== UNIT diesel-0001..0003: Diesel SQLite/MySQL row position()→BTreeMap (51x) ==="
$(JAVA) -ea -cp . unit.DieselTest
unit/SQLAlchemyTest.class: ../defects/sqlalchemy/unit/SQLAlchemyTest.java
$(JAVAC) -cp . -d . ../defects/sqlalchemy/unit/SQLAlchemyTest.java
unit-sqlalchemy: unit/SQLAlchemyTest.class
@echo ""
@echo "=== UNIT sqlalchemy-0001..0002: SQLAlchemy bindparam/evaluated_keys List→Set (500x) ==="
$(JAVA) -ea -cp . unit.SQLAlchemyTest
unit/PeeweeTest.class: ../defects/peewee/unit/PeeweeTest.java
$(JAVAC) -cp . -d . ../defects/peewee/unit/PeeweeTest.java
unit-peewee: unit/PeeweeTest.class
@echo ""
@echo "=== UNIT peewee-0001: Peewee _SortedFieldList.index() list→bisect (42x) ==="
$(JAVA) -ea -cp . unit.PeeweeTest
unit/SequelizeTest.class: ../defects/sequelize/unit/SequelizeTest.java
$(JAVAC) -cp . -d . ../defects/sequelize/unit/SequelizeTest.java
unit-sequelize: unit/SequelizeTest.class
@echo ""
@echo "=== UNIT sequelize-0001..0002: Sequelize bulkInsert/expandAll Array→Set (50x/250x) ==="
$(JAVA) -ea -cp . unit.SequelizeTest
unit/TypeORMTest.class: ../defects/typeorm/unit/TypeORMTest.java
$(JAVAC) -cp . -d . ../defects/typeorm/unit/TypeORMTest.java
unit-typeorm: unit/TypeORMTest.class
@echo ""
@echo "=== UNIT typeorm-0001..0003: TypeORM OrmUtils.uniq/diffColumns/updatedColumns (500x/125x/100x) ==="
$(JAVA) -ea -cp . unit.TypeORMTest
unit/DoctrineTest.class: ../defects/doctrine/unit/DoctrineTest.java
$(JAVAC) -cp . -d . ../defects/doctrine/unit/DoctrineTest.java
unit-doctrine: unit/DoctrineTest.class
@echo ""
@echo "=== UNIT doctrine-0001..0003: Doctrine ORM hydrator/metadata/sqlwalker (26x/250x/130x) ==="
$(JAVA) -ea -cp . unit.DoctrineTest
unit/GORMTest.class: ../defects/gorm/unit/GORMTest.java
$(JAVAC) -cp . -d . ../defects/gorm/unit/GORMTest.java
unit-gorm: unit/GORMTest.class
@echo ""
@echo "=== UNIT gorm-0001: GORM sortCallbacks getRIndex→map (194x) ==="
$(JAVA) -ea -cp . unit.GORMTest
unit/ExposedTest.class: ../defects/exposed/unit/ExposedTest.java
$(JAVAC) -cp . -d . ../defects/exposed/unit/ExposedTest.java
unit-exposed: unit/ExposedTest.class
@echo ""
@echo "=== UNIT exposed-0001..0003: Exposed ORM schemaMigration/isAKeyword/clone (118x/144x/6x) ==="
$(JAVA) -ea -cp . unit.ExposedTest
unit/SeaORMTest.class: ../defects/seaorm/unit/SeaORMTest.java
$(JAVAC) -cp . -d . ../defects/seaorm/unit/SeaORMTest.java
unit-seaorm: unit/SeaORMTest.class
@echo ""
@echo "=== UNIT seaorm-0001..0004: SeaORM establish_links/permissions/sorted_tables/topo (501x/502x/500x/28x) ==="
$(JAVA) -ea -cp . unit.SeaORMTest
unit-activerecord: unit/RailsTest.class
unit/FastAPITest.class: ../defects/fastapi/unit/FastAPITest.java
$(JAVAC) -cp . -d . ../defects/fastapi/unit/FastAPITest.java
unit-fastapi: unit/FastAPITest.class
@echo ""
@echo "=== UNIT fastapi-0001: FastAPI get_flat_dependant visited list→set (6x at D=400) ==="
$(JAVA) -ea -cp . unit.FastAPITest
unit/GinTest.class: ../defects/gin/unit/GinTest.java
$(JAVAC) -cp . -d . ../defects/gin/unit/GinTest.java
unit-gin: unit/GinTest.class
@echo ""
@echo "=== UNIT gin-0001: Gin methodTrees slice scan→map (5-8x per request) ==="
$(JAVA) -ea -cp . unit.GinTest
unit/FiberTest.class: ../defects/fiber/unit/FiberTest.java
$(JAVAC) -cp . -d . ../defects/fiber/unit/FiberTest.java
unit-fiber: unit/FiberTest.class
@echo ""
@echo "=== UNIT fiber-0001: Fiber custom binder MIME slice→map (42x at B=10) ==="
$(JAVA) -ea -cp . unit.FiberTest
unit/NestJSTest.class: ../defects/nestjs/unit/NestJSTest.java
$(JAVAC) -cp . -d . ../defects/nestjs/unit/NestJSTest.java
unit-nestjs: unit/NestJSTest.class
@echo ""
@echo "=== UNIT nestjs-0001..0002: NestJS scanner ctxRegistry/getInjectionProviders (150x/68x) ==="
$(JAVA) -ea -cp . unit.NestJSTest
unit/PylonsTest.class: ../defects/pylons/unit/PylonsTest.java
$(JAVAC) -cp . -d . ../defects/pylons/unit/PylonsTest.java
unit-pylons: unit/PylonsTest.class
@echo ""
@echo "=== UNIT pylons-0001..0003: Pylons/Pyramid TopologicalSorter names/edges/order (845x/334x/248x) ==="
$(JAVA) -ea -cp . unit.PylonsTest
unit/BevyTest.class: ../defects/bevy/unit/BevyTest.java
$(JAVAC) -cp . -d . ../defects/bevy/unit/BevyTest.java
unit-bevy: unit/BevyTest.class
@echo ""
@echo "=== UNIT bevy-0001: Bevy slab_allocator free_empty_slabs Vec::position→HashMap (384x) ==="
$(JAVA) -ea -cp . unit.BevyTest
unit/LibGDXTest.class: ../defects/libgdx/unit/LibGDXTest.java
$(JAVAC) -cp . -d . ../defects/libgdx/unit/LibGDXTest.java
unit-libgdx: unit/LibGDXTest.class
@echo ""
@echo "=== UNIT libgdx-0001..0004: LibGDX Model/ModelBuilder/Instance/Kerning (1971x/150x/75x/25x) ==="
$(JAVA) -ea -cp . unit.LibGDXTest
unit/OGRETest.class: ../defects/ogre/unit/OGRETest.java
$(JAVAC) -cp . -d . ../defects/ogre/unit/OGRETest.java
unit-ogre: unit/OGRETest.class
@echo ""
@echo "=== UNIT ogre-0001..0003: OGRE3D Node/ResourceGroup/RibbonTrail (10000x/5000x/1000x) ==="
$(JAVA) -ea -cp . unit.OGRETest
unit/BulletTest.class: ../defects/bullet/unit/BulletTest.java
$(JAVAC) -cp . -d . ../defects/bullet/unit/BulletTest.java
unit-bullet: unit/BulletTest.class
@echo ""
@echo "=== UNIT bullet-0001..0003: Bullet Physics ghost/collision/pairCache (5000x/500x/50x) ==="
$(JAVA) -ea -cp . unit.BulletTest
unit/Box2DTest.class: ../defects/box2d/unit/Box2DTest.java
$(JAVAC) -cp . -d . ../defects/box2d/unit/Box2DTest.java
unit-box2d: unit/Box2DTest.class
@echo ""
@echo "=== UNIT box2d-0001: Box2D broad_phase UnBufferMove linear scan→index map (400x) ==="
$(JAVA) -ea -cp . unit.Box2DTest
unit/SDL3Test.class: ../defects/sdl3/unit/SDL3Test.java
$(JAVAC) -cp . -d . ../defects/sdl3/unit/SDL3Test.java
unit-sdl3: unit/SDL3Test.class
@echo ""
@echo "=== UNIT sdl3-0001: SDL3 gamepad mapping change tracker array→HashSet (800x) ==="
$(JAVA) -ea -cp . unit.SDL3Test
unit/Panda3DTest.class: ../defects/panda3d/unit/Panda3DTest.java
$(JAVAC) -cp . -d . ../defects/panda3d/unit/Panda3DTest.java
unit-panda3d: unit/Panda3DTest.class
@echo ""
@echo "=== UNIT panda3d-0001..0002: Panda3D Camera/GraphicsOutput display region find (400x) ==="
$(JAVA) -ea -cp . unit.Panda3DTest
unit/SwiftRequirementMachineAlgorithm.class: ../defects/swift/unit/SwiftRequirementMachineAlgorithm.java
$(JAVAC) -cp . -d . ../defects/swift/unit/SwiftRequirementMachineAlgorithm.java
unit-swift-0001: unit/SwiftRequirementMachineAlgorithm.class
@echo ""
@echo "=== UNIT swift-0001: Swift RequirementMachine isInMinimizationDomain std::find→SmallPtrSet (400x) ==="
$(JAVA) -ea -cp . unit.SwiftRequirementMachineAlgorithm
unit/CrystalCompareStrictnessAlgorithm.class: ../defects/crystal/unit/CrystalCompareStrictnessAlgorithm.java
$(JAVAC) -cp . -d . ../defects/crystal/unit/CrystalCompareStrictnessAlgorithm.java
unit-crystal-0001: unit/CrystalCompareStrictnessAlgorithm.class
@echo ""
@echo "=== UNIT crystal-0001: Crystal compare_strictness named arg Array#any?→HashMap (800x) ==="
$(JAVA) -ea -cp . unit.CrystalCompareStrictnessAlgorithm
unit/CrystalTypeMergeAlgorithm.class: ../defects/crystal/unit/CrystalTypeMergeAlgorithm.java
$(JAVAC) -cp . -d . ../defects/crystal/unit/CrystalTypeMergeAlgorithm.java
unit-crystal-0002: unit/CrystalTypeMergeAlgorithm.class
@echo ""
@echo "=== UNIT crystal-0002: Crystal type_merge add_type Array#includes?→Set (400x) ==="
$(JAVA) -ea -cp . unit.CrystalTypeMergeAlgorithm
unit/CrystalAddToIncludingTypesAlgorithm.class: ../defects/crystal/unit/CrystalAddToIncludingTypesAlgorithm.java
$(JAVAC) -cp . -d . ../defects/crystal/unit/CrystalAddToIncludingTypesAlgorithm.java
unit-crystal-0004: unit/CrystalAddToIncludingTypesAlgorithm.class
@echo ""
@echo "=== UNIT crystal-0004: Crystal add_to_including_types Array#includes?->Set (N^2->N) ==="
$(JAVA) -ea -cp . unit.CrystalAddToIncludingTypesAlgorithm
unit/ElixirMixTopoSortAlgorithm.class: ../defects/elixir/unit/ElixirMixTopoSortAlgorithm.java
$(JAVAC) -cp . -d . ../defects/elixir/unit/ElixirMixTopoSortAlgorithm.java
unit-elixir-0001: unit/ElixirMixTopoSortAlgorithm.class
@echo ""
@echo "=== UNIT elixir-0001: Mix.Dep.Converger topological_sort Enum.find->Map (N^2->N) ==="
$(JAVA) -ea -cp . unit.ElixirMixTopoSortAlgorithm
unit/NimSeqUtilsDeduplicateAlgorithm.class: ../defects/nim/unit/NimSeqUtilsDeduplicateAlgorithm.java
$(JAVAC) -cp . -d . ../defects/nim/unit/NimSeqUtilsDeduplicateAlgorithm.java
unit-nim-0001: unit/NimSeqUtilsDeduplicateAlgorithm.class
@echo ""
@echo "=== UNIT nim-0001: sequtils.deduplicate result.contains->HashSet (N^2->N) ==="
$(JAVA) -ea -cp . unit.NimSeqUtilsDeduplicateAlgorithm
unit/NimCyclicTreeAlgorithm.class: ../defects/nim/unit/NimCyclicTreeAlgorithm.java
$(JAVAC) -cp . -d . ../defects/nim/unit/NimCyclicTreeAlgorithm.java
unit-nim-0002: unit/NimCyclicTreeAlgorithm.class
@echo ""
@echo "=== UNIT nim-0002: trees.cyclicTreeAux visited seq scan->HashSet (N^2->N) ==="
$(JAVA) -ea -cp . unit.NimCyclicTreeAlgorithm
unit/NomadAlgorithmTest.class: ../defects/nomad/unit/NomadAlgorithmTest.java
$(JAVAC) -cp . -d . ../defects/nomad/unit/NomadAlgorithmTest.java
unit-nomad: unit/NomadAlgorithmTest.class
@echo ""
@echo "=== UNIT nomad-0001..0004: Bitmap port filter / stream ns / vault dedup / checkstore ==="
$(JAVA) -ea -cp . unit.NomadAlgorithmTest
unit/ConsulAlgorithmTest.class: ../defects/consul/unit/ConsulAlgorithmTest.java
$(JAVAC) -cp . -d . ../defects/consul/unit/ConsulAlgorithmTest.java
unit-consul: unit/ConsulAlgorithmTest.class
@echo ""
@echo "=== UNIT consul-0001: ExcludeBasedOnChecks slices.Contains→HashSet (100x) ==="
$(JAVA) -ea -cp . unit.ConsulAlgorithmTest
unit/RayTest.class: ../defects/ray/unit/RayTest.java
$(JAVAC) -cp . -d . ../defects/ray/unit/RayTest.java
unit-ray: unit/RayTest.class
@echo ""
@echo "=== UNIT ray-0001: local node_provider list_of_node_ips O(N²)→O(N) (300x at N=300) ==="
$(JAVA) -ea -cp . unit.RayTest
unit/CeleryTest.class: ../defects/celery/unit/CeleryTest.java
$(JAVAC) -cp . -d . ../defects/celery/unit/CeleryTest.java
unit-celery: unit/CeleryTest.class
@echo ""
@echo "=== UNIT cel-0001: canvas.py append_to_list_option list→set O(T×E²)→O(T×E) ==="
$(JAVA) -ea -cp . unit.CeleryTest
unit/PrefectTest.class: ../defects/prefect/unit/PrefectTest.java
$(JAVAC) -cp . -d . ../defects/prefect/unit/PrefectTest.java
unit-prefect: unit/PrefectTest.class
@echo ""
@echo "=== UNIT pre-0001/0002: cache_policies exclude list O(N×M)→O(N) + warning dedup (100x) ==="
$(JAVA) -ea -cp . unit.PrefectTest
# ── Integration ───────────────────────────────────────────────────────────────
# Runs against the installed JDK's compiled GraphUtils.
# Proves real timing growth and confirms algorithm correctness.
integration: integration/InferenceGraphScalingTest.class
@echo ""
@echo "=== INTEGRATION ==="
$(JAVA) $(EXPORTS) -cp . integration.InferenceGraphScalingTest
integration/InferenceGraphScalingTest.class: support/AbstractTestNode.java integration/InferenceGraphScalingTest.java
$(JAVAC) $(EXPORTS) -cp . support/AbstractTestNode.java integration/InferenceGraphScalingTest.java
# ── Functional ────────────────────────────────────────────────────────────────
# Generates Java source and compiles it with the system javac.
# Measures compilation latency across increasing generic chain depths.
functional: functional/CompilerBenchmarkTest.class
@echo ""
@echo "=== FUNCTIONAL ==="
$(JAVA) -cp . functional.CompilerBenchmarkTest
functional/CompilerBenchmarkTest.class: functional/CompilerBenchmarkTest.java
$(JAVAC) -cp . functional/CompilerBenchmarkTest.java
# ── Bench ─────────────────────────────────────────────────────────────────────
# bench — before/after for 0001 only (original single-defect benchmark)
# bench-all — before/after for all five defects (consolidated table)
# bench-real — patches GraphUtils.java, runs InferenceGraphScalingTest before+after
bench: bench/BeforeAfterBenchmark.class
@echo ""
@echo "=== BEFORE/AFTER BENCHMARK (0001) ==="
$(JAVA) -cp . bench.BeforeAfterBenchmark
bench/BeforeAfterBenchmark.class: support/TarjanAlgorithm.java bench/BeforeAfterBenchmark.java
$(JAVAC) -cp . support/TarjanAlgorithm.java bench/BeforeAfterBenchmark.java
bench-all: bench/AllDefectsBenchmark.class
@echo ""
@echo "=== BEFORE/AFTER BENCHMARK (ALL DEFECTS) ==="
$(JAVA) -cp . bench.AllDefectsBenchmark
UNIT_FOR_BENCH := ../defects/hive/unit/HiveGenMRSeenOpsTest.java \
../defects/spark/unit/SparkAnalyzerWindowAggTest.java \
../defects/frrouting/unit/FrroutingOspfVertexParentTest.java \
../defects/tor/unit/TorRouterlistTest.java \
../defects/solc/unit/SolcCallGraphCycleTest.java \
../defects/solc/unit/SolcAssemblyRjumpTest.java \
../defects/buildkit/unit/BuildkitHasLinkTest.java \
../defects/kafka/unit/KafkaStickyAssignorTest.java \
../defects/spring/unit/SpringBeanFactoryTest.java \
../defects/presto/unit/PrestoDerefPushdownTest.java \
../defects/webpack/unit/WebpackHmrTest.java
bench/AllDefectsBenchmark.class: $(SUPPORT_ALL) $(UNIT_FOR_BENCH) bench/AllDefectsBenchmark.java
$(JAVAC) -cp . -d . $(SUPPORT_ALL) $(UNIT_FOR_BENCH) bench/AllDefectsBenchmark.java
bench-real:
@echo ""
@echo "=== BEFORE/AFTER: REAL JDK (all patched) ==="
bash bench/benchmark-real.sh
# ── Minecraft / Gumyum benchmarks ─────────────────────────────────────────────
# Require JDK 25 + guava on classpath (Minecraft class file version 69).
# Set JAVA25=/path/to/java and GUAVA=/path/to/guava.jar if not at defaults.
bench/DependencySorterBenchmark.class: bench/DependencySorterBenchmark.java
$(JAVAC25) --release 21 -cp $(GUAVA) bench/DependencySorterBenchmark.java -d bench/
# minecraft-0001: DependencySorter diamond-depth scaling (depths 216)
bench-mc-server: bench/DependencySorterBenchmark.class
@echo ""
@echo "=== minecraft-0001: DependencySorter depth 216 ==="
$(JAVA25) -cp bench:$(GUAVA) bench.DependencySorterBenchmark
bench/BenchMax.class: bench/BenchMax.java
$(JAVAC25) --release 21 -cp $(GUAVA) bench/BenchMax.java -d bench/
# Extreme-scale: javac Tarjan V→3200, MC diamond D→18, Create BFS V→5000
bench-max: bench/BenchMax.class
@echo ""
@echo "=== BenchMax — extreme-scale all ecosystems ==="
$(JAVA25) -cp bench:$(GUAVA) bench.BenchMax
# All Minecraft + Create benchmarks
bench-gumyum: bench-mc-server bench-max
@echo ""
@echo "=== Gumyum benchmarks complete ==="
# Everything: javac (all 5 defects) + Minecraft + BenchMax
bench-everything: bench-all bench-mc-server bench-max
@echo ""
@echo "=== All benchmarks complete ==="
# ── Load simulation: concurrent players, world load, TPS ──────────────────────
# Simulates N concurrent player joins + game-loop ticks before/after patch.
# Requires Guava. No server needed.
bench/LoadSimBenchmark.class: bench/LoadSimBenchmark.java
$(JAVAC25) --release 21 -cp $(GUAVA) bench/LoadSimBenchmark.java -d .
bench-loadsim: bench/LoadSimBenchmark.class
@echo ""
@echo "=== LoadSim — concurrent players, world load, TPS ==="
$(JAVA25) -cp .:$(GUAVA) bench.LoadSimBenchmark
# ── Elytra stress benchmark — final benchmark ────────────────────────────────
# 30 players, Y=200, all directions, firework boost every 3 s.
# Exercises: DependencySorter isCyclic (world load) + entity tracking (flight).
# Three tiers: unpatched / mitigated / enriched.
bench/WalkeruinElytraStressBenchmark.class: bench/WalkeruinElytraStressBenchmark.java
$(JAVAC25) --release 21 -cp $(GUAVA) bench/WalkeruinElytraStressBenchmark.java -d bench/
bench-elytra: bench/WalkeruinElytraStressBenchmark.class
@echo ""
@echo "=== walkeruin ElytraStressBenchmark — 30 players, fireworks, all directions ==="
$(JAVA25) -cp bench:$(GUAVA) bench.WalkeruinElytraStressBenchmark
# ── Three-tier server benchmarks ──────────────────────────────────────────────
# Three tiers for the enriched-minecraft paper:
# unpatched control: vanilla jar, depth-16 (defect present)
# mitigated fix only: patched jar, depth-16 (same game, fast)
# enriched new territory: patched jar, depth-24 / 300 NS (impossible before)
#
# --play variants keep the server up for human play testing.
# Requires: /home/fox/Downloads/server.jar (vanilla)
# /tmp/mc-bench/server-patched.jar (visited-set fix applied)
# /tmp/jdk25/bin/java
# node (mineflayer raw-connect.mjs)
MC_BENCH := ../tools/mc-bench/bench-server.sh
bench-unpatched:
@echo ""
@echo "=== BENCH: unpatched (control) ==="
bash $(MC_BENCH) unpatched 20
bench-mitigated:
@echo ""
@echo "=== BENCH: mitigated (fix applied) ==="
bash $(MC_BENCH) mitigated 20
bench-enriched:
@echo ""
@echo "=== BENCH: enriched (new territory, D=48 / 1000 NS / 32 xrefs) ==="
bash $(MC_BENCH) enriched 20
# Run all three tiers sequentially — produces comparable results.json in each dir.
bench-three-tier: bench-unpatched bench-mitigated bench-enriched
@echo ""
@echo "=== Three-tier benchmark complete ==="
@echo "Results:"
@for d in unpatched mitigated enriched; do \
f=/tmp/mc-bench/$$d/results.txt; \
[ -f "$$f" ] && echo " $$d: $$(cat $$f | tr '\n' ' ')" || echo " $$d: (not run)"; \
done
# Human play-test mode: server stays up, prints connection info, waits for Ctrl-C.
play-unpatched:
@echo ""
@echo "=== PLAY TEST: unpatched — connect to localhost:25565 ==="
bash $(MC_BENCH) unpatched 20 --play
play-mitigated:
@echo ""
@echo "=== PLAY TEST: mitigated — connect to localhost:25566 ==="
bash $(MC_BENCH) mitigated 20 --play
play-enriched:
@echo ""
@echo "=== PLAY TEST: enriched — connect to localhost:25567 ==="
bash $(MC_BENCH) enriched 20 --play
# ── Workbench — Sym² manifold workbench (Java port of unworkbench.com) ────────
# Compile with patched javac, launch Swing UI.
#
# make workbench — compile + launch (no --patch-module; shows UNPATCHED)
# make workbench-build — compile only
# make workbench-patched — build patch classes, launch with --patch-module
# make workbench-verify — print patch status without launching UI
WORKBENCH_SRC := workbench/Manifold.java workbench/Friend.java \
workbench/PatchVerifier.java workbench/Workbench.java
PATCH_OUT := /tmp/jt-all-classes
REPO_ROOT := $(shell cd .. && pwd)
PATCH_FLAG := --patch-module jdk.compiler=$(PATCH_OUT)
WB_EXPORTS := --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
workbench/Workbench.class: $(WORKBENCH_SRC)
$(JAVAC) $(WB_EXPORTS) -cp . $(WORKBENCH_SRC)
workbench-build: workbench/Workbench.class
@echo "Workbench compiled."
workbench: workbench/Workbench.class
@echo ""
@echo "=== SYM2 MANIFOLD WORKBENCH (unpatched) ==="
$(JAVA) $(WB_EXPORTS) -cp . workbench.Workbench
# Build patched jdk.compiler classes (0001 + 0004 + 0005), then launch.
# Mirrors benchmark-real.sh — reuses existing build if present.
$(PATCH_OUT)/com/sun/tools/javac/util/GraphUtils.class:
@echo "[patch] Compiling patched javac classes → $(PATCH_OUT)"
@SRC_UTIL=$(REPO_ROOT)/src/jdk.compiler/share/classes/com/sun/tools/javac/util; \
SRC_COMP=$(REPO_ROOT)/src/jdk.compiler/share/classes/com/sun/tools/javac/comp; \
rm -rf /tmp/jt-all-src /tmp/jt-ctx-src $(PATCH_OUT); \
mkdir -p /tmp/jt-all-src/com/sun/tools/javac/util; \
mkdir -p /tmp/jt-all-src/com/sun/tools/javac/comp; \
mkdir -p /tmp/jt-ctx-src/com/sun/tools/javac/comp; \
mkdir -p $(PATCH_OUT); \
cp $$SRC_UTIL/GraphUtils.java /tmp/jt-all-src/com/sun/tools/javac/util/; \
cp $$SRC_UTIL/Dependencies.java /tmp/jt-all-src/com/sun/tools/javac/util/; \
cp $$SRC_COMP/InferenceContext.java /tmp/jt-ctx-src/com/sun/tools/javac/comp/; \
$(JAVAC) --patch-module "jdk.compiler=/tmp/jt-all-src" -d $(PATCH_OUT) \
/tmp/jt-all-src/com/sun/tools/javac/util/GraphUtils.java \
/tmp/jt-all-src/com/sun/tools/javac/util/Dependencies.java; \
$(JAVAC) --patch-module "jdk.compiler=/tmp/jt-ctx-src" -d $(PATCH_OUT) \
/tmp/jt-ctx-src/com/sun/tools/javac/comp/InferenceContext.java
@echo "[patch] Done."
workbench-patched: workbench/Workbench.class $(PATCH_OUT)/com/sun/tools/javac/util/GraphUtils.class
@echo ""
@echo "=== SYM2 MANIFOLD WORKBENCH (patched: 0001+0004+0005) ==="
$(JAVA) $(PATCH_FLAG) $(WB_EXPORTS) -cp . workbench.Workbench
workbench-verify: workbench/Workbench.class
@echo ""
@echo "=== PATCH VERIFY (unpatched runtime) ==="
@$(JAVA) $(WB_EXPORTS) -cp . workbench.PatchVerifier; \
if [ $$? -eq 0 ]; then echo "STATUS: PATCHED"; else echo "STATUS: UNPATCHED"; fi
@echo ""
@echo "=== PATCH VERIFY (with --patch-module) ==="
@$(MAKE) $(PATCH_OUT)/com/sun/tools/javac/util/GraphUtils.class
@$(JAVA) $(PATCH_FLAG) $(WB_EXPORTS) -cp . workbench.PatchVerifier; \
if [ $$? -eq 0 ]; then echo "STATUS: PATCHED"; else echo "STATUS: UNPATCHED"; fi
# ── libjpeg-turbo ─────────────────────────────────────────────────────────────
unit-libjpeg-turbo-0001: unit/LibjpegTurbo0001Test.class
@echo ""
@echo "=== libjpeg-turbo-0001: rdcolmap add_map_entry O(P*C) -> O(P) ==="
$(JAVA) -ea -cp . unit.LibjpegTurbo0001Test
unit/LibjpegTurbo0001Test.class: ../defects/libjpeg-turbo-0001/unit/LibjpegTurbo0001Test.java
$(JAVAC) -cp . -d . ../defects/libjpeg-turbo-0001/unit/LibjpegTurbo0001Test.java
# ── Clean ─────────────────────────────────────────────────────────────────────
clean:
find . -name "*.class" -delete
@echo "Cleaned."