ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Rerun 项目 e2e redap 测试资源目录全解析:dataset 数据集、Lance 表与 blueprint 文件的生成、使用与远程部署

Rerun 项目 e2e redap 测试资源目录全解析:dataset 数据集、Lance 表与 blueprint 文件的生成、使用与远程部署 Rerun 项目 e2e redap 测试资源目录全解析dataset 数据集、Lance 表与 blueprint 文件的生成、使用与远程部署【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun导读本文聚焦 Rerun 仓库中rerun_py/tests/e2e_redap_tests端到端测试套件的资源目录resources/完整讲解其三大组成部分——20 个.rrd数据集、simple_datatypesLance 表、静态.rbl蓝图文件——各自的文件结构、生成方式、在测试中的具体用途以及通过--resource-prefix将资源部署到 S3/GCS 等远程存储的完整实践。读完本文你将掌握这批测试资源的数据形态设计无序时间线、多点云对象、静态文档、如何在本地再生成全部资源以及如何让同一套资源在本地与远程测试环境下无缝复用。资源目录概览资源目录位于 rerun_py/tests/e2e_redap_tests/resources整个目录通过 Git LFS 存储避免大体积二进制测试文件直接进入常规 Git 仓库。目录内包含三个子资源子目录内容主要用途dataset/20 个.rrd录制文件数据集注册registration、查询querying、分区partitioning测试simple_datatypes/一张 Lance 表含_transactions/、_versions/、data/表读写测试、DataFusion 操作与表注册table registrationblueprints/两个静态.rbl蓝图文件表蓝图table blueprint测试它们由 conftest.py 中定义的resource_prefix夹具统一暴露给所有测试用例默认生成指向本地资源目录的file://URI也可通过命令行参数切换为远端 URI详见后文远程资源章节。dataset/20 个 .rrd 文件构成的示例数据集文件结构与数据形态dataset/README.md 明确说明了这批.rrd文件的设计目标作为 rerun 与 OSS server 之间 gRPC 调用的示例数据集。具体结构如下20 个.rrd文件命名为file1.rrd到file20.rrd奇数编号文件file1、file3…file19各含25 行数据偶数编号文件file2、file4…file20各含50 行数据每个文件包含三类内容三条时间线timestamp、duration、sequence且数据被故意打乱为无序排列三个对象/obj1、/obj2、/obj3携带Points3D组件两个静态文本文档/text1、/text2。奇数/偶数文件行数刻意取 25 与 50 两种规格目的从 generate_dataset.py 的注释中可以确认This ensures we have enough partitions to test multi-threaded DataFusion operations——即保证足够的数据分区数量以充分覆盖 DataFusion 多线程操作下的测试场景。生成脚本的源码级解读资源通过 generate_dataset.py 生成脚本中几个关键设计点值得关注纳秒精度时间戳generate_nanosecond_time以2024-01-15T10:30:45.123456789为基准按分钟增量在np.datetime64上做纳秒级运算产生带完整纳秒精度的时间序列generate_dataset.py。这在测试中专门用于验证时间索引对高精度时间戳的处理例如test_dataset_query.py中的注释指出Nanosecond timestamps cannot be converted usingas_py()必须走 Arrow 标量接口取值见 test_dataset_query.py。80% 空值概率maybe_val以 80% 概率返回原值、20% 概率返回Nonegenerate_dataset.py。这让时间线、坐标列天然带上null空洞从而支撑test_component_filtering这类验证过滤非空列后 null_count 0的查询测试见 test_dataset_query.py。行序与时间线故意错乱三个对象的行索引分别独立random.shuffle随后在写入时按打乱后的索引交错取用时间戳、时长与序号generate_dataset.py。这意味着三个时间线上的数据并非单调递增正好用于测试fill_latest_atTrue的按段有序读、rerun_segment_id排序等语义参见 test_segment_ordering。静态文本首尾锚定/text1Before text在循环前以staticTrue写入/text2After text在循环后写入generate_dataset.py用于验证静态数据与时间线数据的共存读取。再生成命令若需重新生成这批.rrd文件在该子目录下直接运行python generate_dataset.py脚本会按for idx in range(1, 21)循环生成 20 个文件奇数 25 行、偶数 50 行。simple_datatypes/用于表读写测试的 Lance 表simple_datatypes/是一张包含基础数据类型int、bool、float样本数据的 Lance 表其目录结构为_transactions/Lance 的事务记录目录_versions/版本清单manifestdata/实际数据块目录。该资源由readonly_table_uri夹具引用conftest.pypytest.fixture(scopesession) def readonly_table_uri(resource_prefix: str) - str: Returns the URI to the read-only test table (simple_datatypes). return resource_prefix simple_datatypes夹具名中的readonly语义在源码注释中反复强调测试不得向这张表写入数据写场景应改用entry_factory动态创建的独立表。该资源主要用于表读写测试test_table_read.py、test_table_write.py等以它为只读基准表DataFusion 操作验证将其注册进不同 SQL catalog/schema 限定名后验证跨 schema 查询prefilled_catalog夹具会把同一张表分别注册为simple_datatypes、second_schema.second_table、alternate_catalog.third_schema.third_table三种限定形式见 conftest.py表注册流程测试作为create_table/register_table的对照数据源。blueprints/静态 .rbl 蓝图文件为什么需要静态蓝图资源blueprints/存放两个静态.rbl蓝图文件供表蓝图测试使用。其存在意义是让表蓝图测试能够在非本地 profile例如dpf-docker下运行——在这些环境里测试资源通过--resource-prefix从远端获取而不再于测试运行时本地动态生成。资源内容与生成方式目录中包含 generate_blueprints.py其核心定义BLUEPRINTS { table_blueprint.rbl: [-1, 2], table_blueprint2.rbl: [-2, 3], } blueprint rrb.Blueprint(rrb.Spatial2DView(visual_boundsrrb.VisualBounds2D(x_rangex_range, y_range[-1, 2]))) blueprint.save(fe2e_{filename}, base / filename)可见两个蓝图均为包含一个Spatial2DView的rrb.Blueprint差异仅在VisualBounds2D的 x 轴范围[-1, 2]与[-2, 3]y 轴同为[-1, 2]。生成的.rbl文件以e2e_前缀命名后保存。再生成命令仓库根目录执行cd rerun pixi run uvpy rerun_py/tests/e2e_redap_tests/resources/blueprints/generate_blueprints.py注意该命令通过pixi run uvpy在项目封装的 Python 环境中执行且必须以仓库根目录为工作目录。使用蓝图资源的测试形态test_blueprint_dataset.py 展示了这批资源的完整用法。以数据集蓝图为例rbl_uri resource_prefix blueprints/table_blueprint.rbl ds.register_prefix(resource_prefix dataset).wait() ds.register_blueprint(rbl_uri) # 注册第一个蓝图默认设为默认蓝图 ds.register_blueprint(rbl_uri2, set_defaultFalse) # 注册第二个但不设为默认 ds.set_default_blueprint(second_blueprint_name) # 切换默认蓝图相关 API 行为包括blueprint_dataset()获取蓝图数据集、segment_ids()列出已注册蓝图、default_blueprint()查询/设置默认蓝图对表条目还有table.blueprints()与table.set_default_blueprint(None)清除默认等。测试同时覆盖了重复注册同一蓝图不抛AlreadyExistsError回归用例 RR-3904、删除蓝图数据集后再设默认值报错等边界场景。维护约定原文档明确要求保持文件名稳定Keep the filenames stable并同步更新远端测试资源镜像。这是因为这些文件名被测试代码硬引用resource_prefix blueprints/table_blueprint.rbl一旦变更将导致远端镜像与本地资源不一致。远程资源部署--resource-prefix 的完整机制基本用法当针对远端部署remote deployments运行测试时通过--resource-prefix将资源定位到 S3/GCS 上的副本pytest … --resource-prefixs3://bucket/path/to/resources/前缀必须指向一个包含所选测试所需资源子目录dataset/、simple_datatypes/、blueprints/的目录例如pytest rerun_py/tests/e2e_redap_tests -m not aws_only \ --redap-urlhttps://your-redap.example.com \ --resource-prefixs3://bucket/path/to/resources/底层的 URI 归一化逻辑conftest.py 中的resource_prefix夹具完整实现了这一逻辑未指定--resource-prefix时默认使用RESOURCES_DIR.absolute().as_uri() /即指向本地资源目录的file://URI指定了前缀但末尾缺少/时自动补上尾斜杠返回的前缀会被readonly_table_uri拼接simple_datatypes等夹具直接拼装成最终资源 URI。本地/远程的自动测试分流--resource-prefix不仅决定资源位置还参与测试选择。在 pytest_collection_modifyitems 中若前缀未提供或以file://开头视为本地环境local_only测试照常运行若前缀指向远程如s3://所有带local_only标记的测试会被自动跳过pytest.mark.skip因为这些测试依赖本地RecordingStream即时生成.rrd。因此dataset/这类静态资源 blueprints/静态蓝图的组合正是为了满足远程前缀下测试仍能拿到确定性资源这一需求。其他相关命令行选项resource_prefix与下列选项一起构成该测试套件的运行配置均定义于 conftest.py选项默认值说明--redap-url无外部 redap 服务器地址未提供时自动启动本地 OSS server--redap-token无redap 服务器认证 token可选--resource-prefix无本地file://测试资源 URI 前缀如s3://bucket/path/--profilelocal测试 profilelocal默认、dpf-docker、dpf-stack--cloud无目标云厂商如aws用于跳过aws_only测试其中 profile 与 marker 表达式的组合逻辑为 AND 合并如dpf-docker对应not local_only远程前缀下local_only标记又会被额外跳过两层机制共同保证资源约束与测试选择一致。测试套件如何消费这些资源以下测试文件是这批资源的主要消费方可作为继续深入源码的入口test_registration.py数据集注册/注销、重复段策略error/skip/replace、schema 兼容性契约等其中跨区域测试直接注册远端s3://前缀的 20 个段并断言段数为 20test_dataset_query.py基于readonly_test_dataset即dataset/的 20 个文件验证组件过滤、按段有序读取、schema 自洽性test_datafusion_tables.pycount()、aggregate()等 DataFusion 算子验证例如对/obj1:Points3D:positions求 min/max 后断言min_x 1.0、max_x 50.0正好对应 25/50 行的文件规模设计test_blueprint_dataset.py蓝图注册、默认蓝图切换、重复注册与边界报错test_table_read.py / test_table_write.py围绕simple_datatypesLance 表的读写路径。维护与再生成清单对这批测试资源做任何变更时请遵循以下步骤这也是原文档的维护约定本地再生成分别执行python rerun_py/tests/e2e_redap_tests/resources/dataset/generate_dataset.py pixi run uvpy rerun_py/tests/e2e_redap_tests/resources/blueprints/generate_blueprints.py后者以仓库根目录为工作目录保持文件名稳定file1.rrd~file20.rrd、table_blueprint.rbl、table_blueprint2.rbl等文件名被测试代码硬引用禁止随意改动同步远端镜像由于远程测试通过--resource-prefix访问 S3/GCS 上的副本资源变更后必须同步更新远端资源镜像否则会出现本地与远端测试行为不一致。结语rerun_py/tests/e2e_redap_tests/resources/是理解 Rerun redap 端到端测试体系的一把钥匙dataset/用无序时间线 多点云 静态文本的数据形态压测 gRPC 注册与查询路径simple_datatypes/用一张只读 Lance 表锚定表读写与 DataFusion 语义blueprints/用两个静态.rbl文件让蓝图测试摆脱本地生成依赖。配合conftest.py中--resource-prefix的 URI 归一化与自动测试分流逻辑同一套资源即可无缝地在本地与远程S3/GCS两种运行模式下复用。理解这些设计对后续新增测试资源或排查 e2e 测试环境问题都很有帮助。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表