45 lines
2.4 KiB
Python
Executable File
45 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""RustProxy 0.34.0 sendfile source-wiring assertions ONLY, not native tests."""
|
|
from pathlib import Path
|
|
import json
|
|
import re
|
|
|
|
root = Path(__file__).resolve().parents[2]
|
|
get = lambda path: (root / path).read_text()
|
|
|
|
model = get('src/web_server/config/model.rs')
|
|
assert 'pub enum SendfileMode' in model and 'sendfile: SendfileMode::Off' in model
|
|
assert 'pub sendfile: SendfileMode' in model
|
|
assert 'sendfile: self.sendfile' in get('src/web_server/config/compile.rs')
|
|
assert 'pub sendfile: SendfileMode' in get('src/web_server/config/validation.rs')
|
|
assert 'service.sendfile = crate::web_server::SendfileMode::Off;' in get('src/runtime/types.rs')
|
|
source = get('src/proxy/forward/web_source.rs')
|
|
for guard in ('!enabled && identity_request', 'request_method == Method::GET',
|
|
'response.status() == StatusCode::OK', 'content-encoding',
|
|
'transfer-encoding', 'content-range', 'candidate.length',
|
|
'http::Version::HTTP_11'):
|
|
assert guard in source, guard
|
|
assert 'content_encoding.is_none()' in get('src/web_server/response/file.rs')
|
|
assert 'single_range.is_none()' in get('src/web_server/response/file.rs')
|
|
assert 'opened.file.try_clone()' in get('src/web_server/response/file.rs')
|
|
bridge = get('src/server/sendfile.rs')
|
|
for item in ('libc::sendfile(', 'MAX_PENDING: usize = 8', 'MIN_SIZE: u64 = 64 * 1024',
|
|
'registry.slots.is_empty()', 'native_sendfile_transfers_exact_file',
|
|
'sendfile placeholder did not match', 'UnexpectedEof'):
|
|
assert item in bridge, item
|
|
assert 'pub(crate) mod sendfile' in get('src/server.rs')
|
|
assert 'SendfileIo::new(stream)' in get('src/server/tls_runtime.rs')
|
|
assert 'sendfile_slots' in get('src/server/http1_connection.rs')
|
|
js = get('src/admin/web/web-server.js')
|
|
html = get('src/admin/web/index.html')
|
|
assert '"web-service-sendfile"' in js and 'sendfile: "off"' in js
|
|
assert 'sendfile: $("web-service-sendfile").value' in js
|
|
assert html.count('id="web-service-sendfile"') == 1
|
|
assert 'value="auto"' in html
|
|
for locale in ('en_US', 'pl_pl'):
|
|
keys = json.loads(get(f'langs/{locale}.json'))['translations']
|
|
assert all(k in keys for k in ('webServiceSendfile', 'webServiceSendfileHelp', 'webServiceSendfileAuto'))
|
|
api = json.loads(get('src/admin/openapi.json'))
|
|
assert 'sendfile' in json.dumps(api)
|
|
print('PASS 0.34.0 sendfile source guards, default OFF, Linux syscall, UI, translations, API and scoped cache (STATIC ONLY)')
|