4个版本 (2个破坏性更新)
新版本 0.3.1 | 2024年8月19日 |
---|---|
0.3.0 | 2024年8月9日 |
0.2.0 | 2024年8月8日 |
0.1.1 | 2024年8月6日 |
#383 in HTTP服务器
每月299次下载
585KB
12K SLoC
Mock-Omaha-Server
更新时间:2024-08
这是 Omaha 服务器协议的一部分实现,可用于开发基于 omaha-client 库 的应用程序。
操作模式
mock-omaha-server 在测试基于 omaha 客户端库的应用程序时充当对应方。它作为一个独立的 http 服务器,根据请求中的应用 ID 响应客户端请求。在启动模拟服务器时,可以使用 --responses_by_appid
参数通过命令行提供 JSON 结构。此结构包含应用 ID 到响应的映射,例如
{
"appid_01": {
"response": "NoUpdate",
"merkle": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"check_assertion": "UpdatesEnabled",
"version": "0.1.2.3",
"codebase": "fuchsia-pkg://omaha.mock.fuchsia.com/",
"package_path": "update"
},
"appid_02": {
...
},
...
}
在 main.rs 中提供了一个默认参数 EXAMPLE_RESPONSES_BY_APPID
,如果命令行上没有提供映射,则使用该映射。
示例会话
代码设计为与 omaha-client 库的 "hello-world" 示例无缝工作。因此,在简单 git checkout omaha-client 库存储库 之后的源代码中,以下会话说明了如何与模拟服务器一起工作
$ git clone https://github.com/google/omaha-client.git
[... git clone progress ...]
$ cd omaha-client
$ cargo run
Compiling omaha_client v0.2.0 (/path/to/omaha-client/omaha-client)
Compiling mock-omaha-server v0.1.0 (/path/to/omaha-client/mock-omaha-server)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.59s
Running `target/debug/mock-omaha-server`
listening on http://[::]:39205/
请注意,除非使用 --port
开关指定端口,否则它将由库从操作系统获取的任何可用端口选择。此时,模拟 Omaha 服务器正在等待请求,因此现在可以在第二个终端中启动 hello-world 示例,指定其输出中打印的模拟服务器 URL
$ cargo run --example hello-world -- -u http://[::]:39205
[...]
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/examples/hello-world -u 'http://[::]:39205'`
Event: ScheduleChange(
UpdateCheckSchedule {
last_update_time: None,
next_update_time: 2024-08-05 09:23:41.527 UTC (1722849821.527518708) and No Monotonic wait: 100ms,
},
)
[... after a few seconds ...]
Event: StateChange(
CheckingForUpdates(
ScheduledTask,
),
)
Event: OmahaServerResponse(
Response {
protocol_version: "3.0",
依赖项
~12–24MB
~380K SLoC