{
  "ticket": "U37 #74",
  "status": "passed",
  "startedAt": "2026-10-28T17:28:09.517675+08:00",
  "finishedAt": "2026-10-28T17:28:27.005296+08:00",
  "input": "python3 labs/sentinel/run.py",
  "exitCode": 0,
  "environment": {
    "os": "macOS-27.2-arm64-arm-64bit",
    "arch": "arm64",
    "python": "3.9.6",
    "declaredVersions": {
      "spring-boot": "4.0.9",
      "spring-cloud": "2025.1.4",
      "spring-cloud-alibaba": "2025.1.0.0",
      "sentinel": "1.8.9",
      "aspectjweaver": "1.9.25.1",
      "java": "21"
    },
    "jdk": "openjdk version \"21.0.11\" 2026-04-21 LTS\nOpenJDK Runtime Environment (build 21.0.11+11-LTS)\nOpenJDK 64-Bit Server VM (build 21.0.11+11-LTS, mixed mode, sharing)",
    "maven": "Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)\nMaven home: /Users/gaochao/develop/maven-3.9.9\nJava version: 21.0.11, vendor: BellSoft, runtime: /Library/Java/JavaVirtualMachines/liberica-jdk-21.jdk/Contents/Home\nDefault locale: zh_CN_#Hans, platform encoding: UTF-8\nOS name: \"mac os x\", version: \"27.2\", arch: \"aarch64\", family: \"mac\"",
    "dependencies": {
      "com.alibaba.csp:sentinel-core": "1.8.9",
      "com.alibaba.csp:sentinel-parameter-flow-control": "1.8.9",
      "com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru": "1.4.2",
      "com.alibaba.csp:sentinel-datasource-extension": "1.8.9",
      "com.alibaba.csp:sentinel-annotation-aspectj": "1.8.9",
      "org.aspectj:aspectjweaver": "1.9.25.1",
      "com.alibaba.cloud:spring-cloud-starter-alibaba-sentinel": "2025.1.0.0",
      "com.alibaba.csp:sentinel-transport-simple-http": "1.8.9",
      "com.alibaba.csp:sentinel-transport-common": "1.8.9",
      "com.alibaba:fastjson": "2.0.58",
      "com.alibaba.fastjson2:fastjson2-extension": "2.0.58",
      "com.alibaba.fastjson2:fastjson2": "2.0.58",
      "com.alibaba.csp:sentinel-spring-webflux-adapter": "1.8.9",
      "com.alibaba.csp:sentinel-spring-webmvc-v6x-adapter": "1.8.9",
      "com.alibaba.csp:sentinel-web-adapter-common": "1.8.9",
      "org.slf4j:slf4j-api": "2.0.20",
      "com.alibaba.csp:sentinel-cluster-server-default": "1.8.9",
      "com.alibaba.csp:sentinel-cluster-common-default": "1.8.9",
      "io.netty:netty-handler": "4.2.19.Final",
      "io.netty:netty-common": "4.2.19.Final",
      "io.netty:netty-resolver": "4.2.19.Final",
      "io.netty:netty-buffer": "4.2.19.Final",
      "io.netty:netty-transport": "4.2.19.Final",
      "io.netty:netty-transport-native-unix-common": "4.2.19.Final",
      "io.netty:netty-codec-base": "4.2.19.Final",
      "com.alibaba.csp:sentinel-cluster-client-default": "1.8.9",
      "com.alibaba.cloud:spring-cloud-alibaba-sentinel-datasource": "2025.1.0.0",
      "com.alibaba.cloud:spring-cloud-alibaba-commons": "2025.1.0.0",
      "com.alibaba.cloud:spring-cloud-circuitbreaker-sentinel": "2025.1.0.0",
      "org.springframework.cloud:spring-cloud-commons": "5.0.4",
      "org.springframework.security:spring-security-crypto": "7.0.8",
      "com.alibaba.csp:sentinel-reactor-adapter": "1.8.9",
      "org.springframework.boot:spring-boot-starter-test": "4.0.9",
      "org.springframework.boot:spring-boot-starter": "4.0.9",
      "org.springframework.boot:spring-boot-starter-logging": "4.0.9",
      "ch.qos.logback:logback-classic": "1.5.38",
      "ch.qos.logback:logback-core": "1.5.38",
      "org.apache.logging.log4j:log4j-to-slf4j": "2.25.5",
      "org.apache.logging.log4j:log4j-api": "2.25.5",
      "org.slf4j:jul-to-slf4j": "2.0.20",
      "org.springframework.boot:spring-boot-autoconfigure": "4.0.9",
      "jakarta.annotation:jakarta.annotation-api": "3.0.0",
      "org.yaml:snakeyaml": "2.5",
      "org.springframework.boot:spring-boot-test": "4.0.9",
      "org.springframework.boot:spring-boot": "4.0.9",
      "org.springframework:spring-context": "7.0.10",
      "org.springframework:spring-aop": "7.0.10",
      "org.springframework:spring-beans": "7.0.10",
      "org.springframework:spring-expression": "7.0.10",
      "io.micrometer:micrometer-observation": "1.16.8",
      "io.micrometer:micrometer-commons": "1.16.8",
      "org.springframework.boot:spring-boot-test-autoconfigure": "4.0.9",
      "com.jayway.jsonpath:json-path": "2.10.0",
      "jakarta.xml.bind:jakarta.xml.bind-api": "4.0.5",
      "jakarta.activation:jakarta.activation-api": "2.1.4",
      "net.minidev:json-smart": "2.6.0",
      "net.minidev:accessors-smart": "2.6.0",
      "org.ow2.asm:asm": "9.7.1",
      "org.assertj:assertj-core": "3.27.7",
      "net.bytebuddy:byte-buddy": "1.17.8",
      "org.awaitility:awaitility": "4.3.0",
      "org.hamcrest:hamcrest": "3.0",
      "org.junit.jupiter:junit-jupiter": "6.0.3",
      "org.junit.jupiter:junit-jupiter-api": "6.0.3",
      "org.opentest4j:opentest4j": "1.3.0",
      "org.junit.platform:junit-platform-commons": "6.0.3",
      "org.apiguardian:apiguardian-api": "1.1.2",
      "org.junit.jupiter:junit-jupiter-params": "6.0.3",
      "org.junit.jupiter:junit-jupiter-engine": "6.0.3",
      "org.junit.platform:junit-platform-engine": "6.0.3",
      "org.mockito:mockito-core": "5.20.0",
      "net.bytebuddy:byte-buddy-agent": "1.17.8",
      "org.objenesis:objenesis": "3.3",
      "org.mockito:mockito-junit-jupiter": "5.20.0",
      "org.skyscreamer:jsonassert": "1.5.3",
      "com.vaadin.external.google:android-json": "0.0.20131108.vaadin1",
      "org.springframework:spring-core": "7.0.10",
      "commons-logging:commons-logging": "1.3.6",
      "org.jspecify:jspecify": "1.0.1",
      "org.springframework:spring-test": "7.0.10",
      "org.xmlunit:xmlunit-core": "2.10.4"
    }
  },
  "expectedTestCount": 12,
  "expectedTests": {
    "study.sentinel.RuleBehaviorTest": [
      "degradeStrategiesAndHalfOpenProbe",
      "entryAndContextPairing",
      "flowQpsFastRejectAndPrioritized",
      "paramFlowItemThresholdsAndBurst",
      "slidingWindowAndTracerAccounting",
      "slotChainOrderAndSilentOverflow",
      "systemRuleInOnlyAndAuthorityList",
      "threadIsolationWithoutQueueing",
      "warmUpRampAndThrottlingSpacing"
    ],
    "study.sentinel.DataSourceAndAnnotationTest": [
      "fileDataSourceHotReload",
      "sentinelResourceAnnotation"
    ],
    "study.sentinel.StarterIntegrationTest": [
      "starterDependencyResolution"
    ]
  },
  "reports": [
    {
      "name": "study.sentinel.DataSourceAndAnnotationTest",
      "tests": "2",
      "failures": "0",
      "errors": "0",
      "skipped": "0",
      "testNames": [
        "sentinelResourceAnnotation",
        "fileDataSourceHotReload"
      ],
      "sha256": "de717035c09623c5504f3070ff5fec18f42b1480f593413dbaa7369e33cebf61"
    },
    {
      "name": "study.sentinel.RuleBehaviorTest",
      "tests": "9",
      "failures": "0",
      "errors": "0",
      "skipped": "0",
      "testNames": [
        "warmUpRampAndThrottlingSpacing",
        "systemRuleInOnlyAndAuthorityList",
        "flowQpsFastRejectAndPrioritized",
        "entryAndContextPairing",
        "slotChainOrderAndSilentOverflow",
        "paramFlowItemThresholdsAndBurst",
        "slidingWindowAndTracerAccounting",
        "threadIsolationWithoutQueueing",
        "degradeStrategiesAndHalfOpenProbe"
      ],
      "sha256": "744f68637ff4adeac7099de0720af9f741e774df1c29c6e1bb457e983f65299d"
    },
    {
      "name": "study.sentinel.StarterIntegrationTest",
      "tests": "1",
      "failures": "0",
      "errors": "0",
      "skipped": "0",
      "testNames": [
        "starterDependencyResolution"
      ],
      "sha256": "0915a2b206b86a74ac6e58343380ca71f15b9e49a0c309255101c5965934cff9"
    }
  ],
  "testCount": 12,
  "observed": [
    "U37 starterBoot4=PASS",
    "U37 annotation=PASS",
    "U37 fileDatasource=PASS",
    "U37 warmupThrottle=PASS",
    "U37 systemAuthority=PASS",
    "U37 flowQps=PASS",
    "U37 entryContext=PASS",
    "U37 slotChain=PASS",
    "U37 paramFlow=PASS",
    "U37 slidingWindow=PASS",
    "U37 flowThread=PASS",
    "U37 degrade=PASS"
  ],
  "results": [
    {
      "name": "jdk",
      "command": [
        "/Library/Java/JavaVirtualMachines/liberica-jdk-21.jdk/Contents/Home/bin/java",
        "-version"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/sentinel",
      "startedAt": "2026-10-28T17:28:09.531181+08:00",
      "finishedAt": "2026-10-28T17:28:09.585716+08:00",
      "exitCode": 0,
      "runnerExitCode": 0,
      "timedOut": false,
      "failure": null,
      "cleanupError": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/jdk.log",
      "logSha256": "392524ee4bfbd5e1de98c543683d7fcaed057f7d69ef44a0d0a182de17816feb",
      "observed": []
    },
    {
      "name": "maven",
      "command": [
        "/Users/gaochao/develop/maven-3.9.9/bin/mvn",
        "-version"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/sentinel",
      "startedAt": "2026-10-28T17:28:09.586199+08:00",
      "finishedAt": "2026-10-28T17:28:10.654250+08:00",
      "exitCode": 0,
      "runnerExitCode": 0,
      "timedOut": false,
      "failure": null,
      "cleanupError": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/maven.log",
      "logSha256": "bba0865da01a8b3b2c925c6b7fee10782f3e69aa5f382c2f52f06c87a4bc5624",
      "observed": []
    },
    {
      "name": "test",
      "command": [
        "/Users/gaochao/develop/maven-3.9.9/bin/mvn",
        "-B",
        "-ntp",
        "-q",
        "-f",
        "/Users/gaochao/Documents/面试/software-engineering-study/labs/sentinel/pom.xml",
        "clean",
        "test",
        "-DskipTests=false",
        "-Dmaven.test.skip=false",
        "-Dmaven.clean.skip=false",
        "-Dmaven.test.failure.ignore=false",
        "-DfailIfNoTests=true"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/sentinel",
      "startedAt": "2026-10-28T17:28:10.654822+08:00",
      "finishedAt": "2026-10-28T17:28:24.987651+08:00",
      "exitCode": 0,
      "runnerExitCode": 0,
      "timedOut": false,
      "failure": null,
      "cleanupError": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/test.log",
      "logSha256": "78df3ef679ff56c8f80f23897a826a30265cbac0282d2858554757259f83e963",
      "observed": [
        "U37 starterBoot4=PASS",
        "U37 annotation=PASS",
        "U37 fileDatasource=PASS",
        "U37 warmupThrottle=PASS",
        "U37 systemAuthority=PASS",
        "U37 flowQps=PASS",
        "U37 entryContext=PASS",
        "U37 slotChain=PASS",
        "U37 paramFlow=PASS",
        "U37 slidingWindow=PASS",
        "U37 flowThread=PASS",
        "U37 degrade=PASS"
      ]
    },
    {
      "name": "dependencies",
      "command": [
        "/Users/gaochao/develop/maven-3.9.9/bin/mvn",
        "-B",
        "-ntp",
        "-q",
        "-f",
        "/Users/gaochao/Documents/面试/software-engineering-study/labs/sentinel/pom.xml",
        "dependency:list",
        "-DincludeScope=test",
        "-DappendOutput=false",
        "-DoutputFile=/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/dependencies.txt"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/sentinel",
      "startedAt": "2026-10-28T17:28:25.000368+08:00",
      "finishedAt": "2026-10-28T17:28:27.003292+08:00",
      "exitCode": 0,
      "runnerExitCode": 0,
      "timedOut": false,
      "failure": null,
      "cleanupError": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/dependencies.log",
      "logSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "observed": []
    }
  ],
  "starterBoot4": "PASS",
  "sentinelLogs": {
    "redirectedTo": "target/sentinel-logs",
    "copiedTo": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/sentinel-logs",
    "files": [
      "command-center.log.2026-10-28.0",
      "sentinel-block.log",
      "sentinel-record.log.2026-10-28.0",
      "surefirebooter-20261028172813468_3-metrics.log.2026-10-28",
      "surefirebooter-20261028172813468_3-metrics.log.2026-10-28.idx"
    ],
    "homeDirWrites": 0
  },
  "artifacts": {
    "pom.xml": "75b1f4aa36aa1ec81c2f88fa72241cb46bf31291e2c39a86192604fdac67c0a2",
    "run.py": "df247c41eba3ce23422ae377cf6e7c30f3dab22117e24b99aaf02dec4a3f4f16",
    "README.md": "3199abcbd3638bc4fdb1e152d85266c5d6bc53b020c66af3723ca2adc21a918a",
    "src/test/java/study/sentinel/DataSourceAndAnnotationTest.java": "521a06f27b0360cc28271979effbc572671f55cd607cfa01765b54e5081a4338",
    "src/test/java/study/sentinel/RuleBehaviorTest.java": "76bde0671cc265581d2a8c1a27425f07d347bce7cbb0be9cc040e895b5718f52",
    "src/test/java/study/sentinel/StarterIntegrationTest.java": "da8e1643d8c8925be76feffa785c7d3d3de941dcc91875cc72ccd273ac2cf701"
  },
  "logs": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl",
  "cleanup": {
    "processGroups": "本次启动的全部进程组已定向回收",
    "resources": "测试 fixture 自行删除临时规则文件；runner 验证并清理 target/sentinel-logs"
  },
  "limits": [
    "纯 JVM 单模块实验：无 Sentinel Dashboard、Nacos/Apollo/ZooKeeper 数据源、token server 与集群流控",
    "所有规则经内存 API（*RuleManager.loadRules）装载；文件数据源为本地临时文件热更新，不是生产配置中心",
    "Boot 4.0.9 + Sentinel 1.8.9/SCA 2025.1.0.0 超出官方支持矩阵；starterBoot4 只覆盖最小无 Web 上下文启动",
    "不验证 Web 容器拦截器（SCA WebMvc/WebFlux adapter）、Feign 适配与网关（SCG 4.x adapter 与基线 5.0.4 错配）",
    "熔断/流控是单 JVM 本地统计；集群模式、Dashboard 规则推送与生产容量不在证明范围"
  ],
  "dependencyReport": {
    "path": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u37/run-yqcy0pvl/dependencies.txt",
    "sha256": "4cd2ad51a4e2a3cdc771f79c278810955fd9f3fe2bdf7c2b951252b2ed43859c"
  }
}
