# Gradio offline test report

| | |
|---|---|
| Host | 65-109-31-107.ptr |
| When | 2026-09-21 11:04:58 |
| Python | 3.9.25 |
| gradio | 4.44.1 |
| Architecture | x86_64 |
| Duration | 16 s |
| Result | **36 passed, 0 failed, 2 warned, 0 skipped** |

## Warnings

Known limitations of the installed gradio, not defects in this bundle.

| Suite | Test | Detail |
|---|---|---|
| functional | page needs no external hosts | gradio 4 requests cdnjs.cloudflare.com, fonts.googleapis.com, fonts.gstatic.com; see scripts/patch-offline-assets.sh and use a local-font theme |
| functional | frontend templates free of external refs | index.html, share.html reference cdnjs.cloudflare.com, fonts.googleapis.com, fonts.gstatic.com; run scripts/patch-offline-assets.sh <venv> |

## Tests


### environment

| Result | Test | Detail |
|---|---|---|
| PASS | OS is RHEL-family 9 | AlmaLinux release 9.8 (Olive Jaguar) |
| PASS | architecture is x86_64 | x86_64 |
| PASS | glibc >= 2.17 (manylinux_2_17 wheels) | glibc 2.34 |
| PASS | interpreter matches the requested set | python 3.9.25 |
| PASS | no proxy variables capture loopback | no proxy set |
| PASS | SELinux state | Permissive |
| PASS | a loopback port can be bound | bound 127.0.0.1:6183 |
| PASS | writable temp dir for uploads | /tmp/gradio-0 |

### install

| Result | Test | Detail |
|---|---|---|
| PASS | import gradio | gradio 4.44.1 |
| PASS | import gradio_client | gradio_client 1.3.0 |
| PASS | expected gradio version for this interpreter | 4.44.1 (expected 4.44.1) |
| PASS | core dependencies import | fastapi 0.128.8, pydantic 2.10.6, numpy 2.0.2 |
| PASS | matplotlib present for gr.Plot | matplotlib 3.9.4 |
| PASS | pin: huggingface-hub < 1.0 (gradio 4 only) | huggingface_hub 0.36.2 |
| PASS | pin: pydantic < 2.11 (gradio 4 only) | pydantic 2.10.6 |
| PASS | every dependency resolves (pip check) | No broken requirements found. |
| PASS | no compiler was needed (all wheels binary) | 61 wheels, 0 source archives |

### functional

| Result | Test | Detail |
|---|---|---|
| PASS | launch application under test | ready in 2.5s on port 46707 |
| PASS | GET / returns 200 | 200, 38495 bytes |
| PASS | GET /config is valid JSON with components | 53 components |
| PASS | GET /info returns the API schema | 7 named endpoints |
| PASS | static frontend assets are served | index-BQPjLIsY.js -> 200 |
| WARN | page needs no external hosts | gradio 4 requests cdnjs.cloudflare.com, fonts.googleapis.com, fonts.gstatic.com; see scripts/patch-offline-assets.sh and use a local-font theme |
| WARN | frontend templates free of external refs | index.html, share.html reference cdnjs.cloudflare.com, fonts.googleapis.com, fonts.gstatic.com; run scripts/patch-offline-assets.sh <venv> |
| PASS | endpoint /echo round trip | 'echo:hello' |
| PASS | endpoint /add computes correctly | 2 + 40 = 42.0 |
| PASS | generator endpoint streams to completion | '012345' via queue |
| PASS | matplotlib plot renders through gr.Plot | dict |
| PASS | gr.State is per-session, not global | session A: 1,2 \| session B: 1 |
| PASS | concurrent requests all succeed | 16/16 ok |
| PASS | gradio_client connects and reads schema | 7 endpoints |
| PASS | gradio_client predict round trip | 'echo:abc' |
| PASS | file upload and checksum round trip | 864 bytes, sha256 8d84725c5632 |

### offline

| Result | Test | Detail |
|---|---|---|
| PASS | pip install would use no index | resolved from local wheels |
| PASS | analytics disabled in this environment | GRADIO_ANALYTICS_ENABLED=False |
| PASS | huggingface hub in offline mode | HF_HUB_OFFLINE=1 |
| PASS | app starts with outbound traffic blackholed | started in 2.0s, GET / -> 200 |
| PASS | startup is not delayed by network timeouts | 2.0s |

## Measurements

These are a baseline for this host, not pass/fail criteria.
Compare successive runs on the same hardware.

| Metric | Value | Unit | Note |
|---|---:|---|---|
| startup time (cold, mean of 2) | 2.01 | s | min 2.0 / max 2.0 |
| resident memory after startup | 159.57 | MB | gradio 4.44.1 |
| GET / latency (median) | 1.20 | ms | p95 1.3 ms |
| GET /config latency (median) | 1.09 | ms | p95 1.2 ms |
| predict throughput (serial) | 565.04 | calls/s | 10 calls in 0.0s |
| predict latency (serial mean) | 1.77 | ms |  |
| predict throughput (8 threads) | 806.98 | calls/s | 16 calls, 0 errors |
| queue: 8 x 0.25s handlers | 0.26 | s | serial would be 2.0s, 0 errors |
| streaming 20 chunks end-to-end | 2.08 | ms |  |
| upload + checksum 2 MB | 2.82 | MB/s | 0.74s round trip |
| matplotlib plot render | 41.96 | ms | 50 points, Agg backend |
