# Tests + benchmarks for CWE-407 defects across javac and Minecraft # # javac (tickets 0001–0005): # 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 2–16) bench-mc-server: bench/DependencySorterBenchmark.class @echo "" @echo "=== minecraft-0001: DependencySorter depth 2–16 ===" $(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."