首页 文章 精选 留言 我的

精选列表

搜索[数据库连接池],共10000篇文章
优秀的个人博客,低调大师

数据库 Nebula Graph 的代码变更测试覆盖率实践

对于一个持续开发的大型工程而言,足够的测试是保证软件行为符合预期的有效手段,而不是仅仅依靠 code review 或者开发者自己的技术素质。测试的编写理想情况下应该完全定义软件的行为,但是通常情况都是很难达到这样理想的程度。而测试覆盖率就是检验测试覆盖软件行为的情况,通过检查测试覆盖情况可以帮助开发人员发现没有被覆盖到的代码。 测试覆盖信息搜集 Nebula Graph 主要是由 C++ 语言开发的,支持大部分 Linux 环境以及 gcc/clang 编译器,所以通过工具链提供的支持,我们可以非常方便地统计Nebula Graph的测试覆盖率。 gcc/clang 都支持 gcov 式的测试覆盖率功能,使用起来也是非常简单的,主要有如下几个步骤: 添加编译选项 --coverage -O0 -g 添加链接选项 --coverage 运行测试 使用 lcov,整合报告,例如 lcov --capture --directory . --output-file coverage.info 去掉外部代码统计,例如 lcov --remove coverage.info '*/opt/vesoft/*' -o clean.info 到这里测试覆盖信息已经搜集完毕,接下可以通过 genhtml 这样的工具生成 html,然后通过浏览器查看测试覆盖率,如下图所示: 但是这样是非常不方便的,因为在持续的开发过程,如果每次都要手动进行这样一套操作,那必然带来极大的人力浪费,所以现在的常用做法是将测试覆盖率写入 CI 并且和第三方平台(比如 Codecov,Coveralls)集成,这样开发人员完全不必关心测试覆盖信息的收集整理和展示问题,只需要发布代码后直接到第三方平台上查看覆盖情况即可,而且现在的第三方平台也支持直接在 PR 上评论覆盖情况使得查看覆盖率的变更情况更加方便。 集成 CI Github Action 现在主流的 CI 平台非常多,比如 Travis,azure-pipelines 以及 GitHub Action 等。Nebula Graph 选用的是 GitHub Action,对于 Action 我们在之前的《使用 Github Action 进行前端自动化发布》这篇文章里已经做过介绍。 而 GitHub Action 相对于其他 CI 平台来说,有和 GitHub 集成更好,Action 生态强大简洁易用以及支持相当多的操作系统和 CPU 等优势。Nebula Graph 有关测试覆盖的 CI 脚本片段如下所示: - name: CMake with Coverage if: matrix.compiler == 'gcc-9.2' && matrix.os == 'centos7' run: | cmake -DENABLE_COVERAGE=ON -B build/ 可以看到这里我们将前文介绍的 coverage 相关的编译选项通过一个 cmake option 进行管理,这样可以非常方便地启用和禁止 coverage 信息的收集。比如在开发人员在正常的开发编译测试过程中通常不会开启这项功能以避免编译测试运行的额外开销。 - name: Testing Coverage Report working-directory: build if: success() && matrix.compiler == 'gcc-9.2' && matrix.os == 'centos7' run: | set -e /usr/local/bin/lcov --version /usr/local/bin/lcov --capture --gcov-tool $GCOV --directory . --output-file coverage.info /usr/local/bin/lcov --remove coverage.info '*/opt/vesoft/*' -o clean.info bash <(curl -s https://codecov.io/bash) -Z -f clean.info 这里主要是测试报告的收集、合并以及上传到第三方平台,这个在前文中已经比较详细地叙述过,CI 的运行情况如下图所示: 集成测试覆盖率平台 Codecov Nebula Graph 选择的测试覆盖平台是 Codecov——一个测试结果分析工具,对于 GitHub Action 而言,主要是在 CI 中执行上述的测试覆盖信息搜集脚本以及将最终的测试覆盖文件上传到 Codecov平台。 这里用户给自己的 repo 注册 Codecov 后可以获取一个访问的 token,通过这个 token 和 Codecov 的 API 可以将测试覆盖文件上传到 Codecov 这个平台上,具体的 API 可以参考https://docs.codecov.io/reference#upload,除了上传报告外还有列出 pr,commit 等 API 可以让用户开发自己的 bot 做一些自动化的工具,然后就可查看各种测试覆盖的信息,比如 Nebula Graph 的测试覆盖情况可以查看https://codecov.io/gh/vesoft-inc/nebula。 比如可以通过这个饼状图查看不同目录代码的覆盖情况: 也可以点开一个具体的文件,查看哪些行被覆盖那些行没有被覆盖: 当然我们一般不会直接使用 Codecov 的 API,而是使用他提供的一个 cli 工具,比如上传报告使用 bash <(curl -s https://codecov.io/bash) -Z -t <token> -f clean.info,这里的 token 就是 Codecov 提供的认证 token,一般来说作为环境变量 CODECOV_TOKEN 使用,而不是输入明文。 通过上述操作呢就可以在 Codecov 平台上查看你的工程的测试覆盖情况,并且可以看到每次 pr 增加减少了多少覆盖率,方便逐渐提高测试覆盖率。最后的话还可以在你的 README 上贴上 Codecov 提供的测试覆盖率 badge,就像 Nebula Graph 一样:https://github.com/vesoft-inc/nebula。 本文中如有错误或疏漏欢迎去 GitHub:https://github.com/vesoft-inc/nebula issue 区向我们提 issue 或者前往官方论坛:https://discuss.nebula-graph.com.cn/ 的 建议反馈 分类下提建议 👏;加入 Nebula Graph 交流群,请联系 Nebula Graph 官方小助手微信号:NebulaGraphbot 推荐阅读 应用 AddressSanitizer 发现程序内存错误 Github Statistics 一个基于 React 的 GitHub 数据统计工具 作者有话说:Hi,我是 shylock,是 Nebula Graph 的研发工程师,希望本文对你有所帮助,如果有错误或不足也请与我交流,不甚感激!

优秀的个人博客,低调大师

数据库 Nebula Graph RC4:支持 index,对接监控系统

本次 RC4 上线 INDEX功能,LOOKUP ON对建立索引的数据进行查询;RC4 提供了基于 SPACE层级的权限管理和 ACL 授权模式。在运维方面,新增 Nebula Stats Exporter对接基于 Grafana 和 Prometheus 的监视系统 功能 支持 INDEX 功能, CREATE INDEX创建索引,REBUILD INDEX,对已有数据重建索引,#1566, DROP INDEX删除已建索引#1776 新增 LOOKUP ON,对建立索引的数据进行查询 #1705, 当有索引时,Storage Engine 的插入性能#1738 提供基于 SPACE 层级的用户管理和权限控制,CREATE USER 创建用户,目前有 GOD、ADMIN 、 DBA 、 USER、GUEST 等5种角色权限。 GRANT ROLE 赋予某用户某权限, REVOKE ROLE 撤销已赋予给某用户的权限,#1842,#1873角色及其对应操作权限示例 #1929,#1917,在 nebula-graphd.conf 中 加入 --enable_authorize=true配置项,重启服务,使认证生效。 支持 TTL,允许用户指定数据的自动过期时间,#1584、#422,#1934 增强DELETE VERTEX, 支持批量删除点,删除操作支持 hash(), uuid() 函数 #1317、#1759 新增 Job Manager,管理存储层长时间运行的任务。目前已经支持 flush 和 compact。 SUBMIT JOB 提交 Job, STOP JOB 暂停任务,SHOW JOB返回 Job 详情, RECOVER JOB将失败的任务重新添加到执行队列中, #1424 GO查询支持BIDIRECT关键字,双向遍历#1740、#1752 支持 Reservoir Sampling, 返回"超级大点"指定数量的边,使用时在 storage 配置文件中设置 enable_reservoir_sampling 为 true 打开采样开关, max_edge_returned_per_vertex 配置采样数#1746、#1915 支持更多CHARSET 和COLLATION, SHOW CHARSET 、 SHOW COLLATION 可以查看到所支持的所有 CHARSET 和COLLATE。可在创建 Space 时设置, 默认的CHARSET 为utf8, 默认 COLLATE为utf8_bin#1709 OLAP Interface 新增 Spark 对接 Nebula Graph 的示例,#56 运维工具 利用 Helm 简化了 Nebula 在 Kubernetes 上的部署,#1473 新增 Nebula Stats Exporter ,采集 Nebula 集群监控和性能指标信息给 Prometheus,使用 Grafana 作为可视化组件https://github.com/vesoft-inc/nebula-stats-exporter/pull/2 Change 由于存储结构的变化,RC4 不兼容 commitID 43453a0 (2 月 6 日) 以前版本插入的数据。 文档迁移到 repo vesoft-inc/nebula-dochttps://github.com/vesoft-inc/nebula-docs Nebula Python Client ConnectionPool的初始化删除了 is_async参数,Python 暂不支持异步客户端。 RC3 升级 RC4 首先停止所有机器的 Nebula 服务 在每一台机器执行 scripts/nebula.service stop all 然后通过执行 scripts/nebula.service status all来确认进程已经退出 在每一台机器(根据系统环境)安装新的RPM包 获取 package:https://github.com/vesoft-inc/nebula/releases/tag/v1.0.0-rc4 安装 package:rpm -Uvh nebula-1.0.0-rc4.el7-5.x86_64.rpm 启动 Nebula 所有机器执行 scripts/nebula.service start all 确认进程正常启动 scripts/nebula.service status all 重新导入数据

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册