为 oslo 库提供一组示例

https://blueprints.launchpad.net/oslo.messaging/+spec/oslo-examples

为每个 oslo 库提供一组示例,以说明特定库 API 的用例。

问题描述

目前,我们没有任何示例(除了测试)来展示如何使用每个 oslo 库。功能测试接近完成,但它们更抽象,用于检查功能,而不是说明如何在应用程序中使用它。

希望能够提供一些具有表现力的示例,这些示例可以作为代码的文档。

提议的变更

在每个 oslo 库仓库中创建一个 examples 文件夹,并将一些库 API 的示例放在其中。

示例最好像一个小型应用程序,并且基于某个应用程序领域构建,而不是像“客户端 A 调用服务器 B 并发送请求 1”那样。

我们可以像 taskflow 中那样为 oslo.messaging 实现一组示例

https://github.com/openstack/taskflow/tree/master/taskflow/examples 这些示例都在单元测试运行期间进行测试,以确保它们按预期工作。

它们也应该作为文档的一部分,并构建为文档。文档文件夹中将有一个单独的文件,其中包含 examples 文件夹中的代码。

https://raw.githubusercontent.com/openstack/taskflow/master/doc/source/examples.rst

一个示例可能如下所示

bobMessenger = messenger.Client(cfg, 'Bob')
aliceMessenger = messenger.Client(cfg, 'Alice')

server = messenger.Server(cfg)

server.run()
bobMessenger.run()
aliceMessenger.run()

time.sleep(2) # wait for all participants discover each other

assertEqual(server.clientsList,
             bobMessenger.clientsList,
             aliceMessenger.clientsList)

bobMessenger.sendMessage('Alice', 'Hi, there!')

assertEqual(bobMessenger.history['Alice'],
             aliceMessenger.history['Bob'])

或者对于请求-回复模式

fibServer = fibonacci.Server(cfg)
fibClient = fibonacci.Client(cfg)

fibServer.run()

value = fibClient.getFibonacci(20)
assertEqual(value, 6765)

备选方案

基于一些真实世界应用程序构建的功能测试,该应用程序在其实现中使用 oslo 库。这是一种间接测试,可以显示如何改进或优化库。这种测试也作为用例示例,因为我们测试的是使用库的应用程序,因此展示了如何使用 API。

https://blueprints.launchpad.net/oslo.messaging/+spec/oslo-functional-testing-apps

Impact on Existing APIs

安全影响

性能影响

Configuration Impact

开发人员影响

oslo.* API 的任何未来更改都应反映在示例中。

Testing Impact

所有示例都应通过单元测试运行。

实现

负责人

主要负责人

ozamiatin@mirantis.com

其他贡献者

dmakogon@mirantis.com

里程碑

完成目标里程碑: * liberty-3

工作项

  • 为每个 oslo 库开发示例

taskflow - 作为模式

我们将从 oslo.messaging 和 oslo.concurrency 开始,并在完成工作后继续到其他库。

孵化

N/A

文档影响

示例应用程序应在文档中发布。

请参阅 taskflow 中的实现方式

https://raw.githubusercontent.com/openstack/taskflow/master/doc/source/examples.rst

这将被转换为

https://docs.openstack.org/developer/taskflow/examples.html

依赖项

oslo.*

参考资料