Menu Close

13.5.6. 将测试事件提交到部署的功能

您可以使用 kn func emit CLI 命令将 CloudEvent 发送到本地部署或部署到 OpenShift Container Platform 集群的功能。此命令可用于测试功能是否正常工作并且能够正确接收事件。

示例命令

$ kn func emit

kn func emit 命令默认在本地目录上执行,并假定此目录是一个功能项目。

13.5.6.1. kn func emit 可选参数

您可以使用 kn func emit CLI 命令标记为发送的 CloudEvent 指定可选参数。

--help 命令输出的标志列表

Flags:
  -c, --content-type string   The MIME Content-Type for the CloudEvent data  (Env: $FUNC_CONTENT_TYPE) (default "application/json")
  -d, --data string           Any arbitrary string to be sent as the CloudEvent data. Ignored if --file is provided  (Env: $FUNC_DATA)
  -f, --file string           Path to a local file containing CloudEvent data to be sent  (Env: $FUNC_FILE)
  -h, --help                  help for emit
  -i, --id string             CloudEvent ID (Env: $FUNC_ID) (default "306bd6a0-0b0a-48ba-b187-b633571d072a")
  -p, --path string           Path to the project directory. Ignored when --sink is provided (Env: $FUNC_PATH) (default "/home/lanceball/src/github.com/nodeshift/opossum")
  -k, --sink string           Send the CloudEvent to the function running at [sink]. The special value "local" can be used to send the event to a function running on the local host. When provided, the --path flag is ignored  (Env: $FUNC_SINK)
  -s, --source string         CloudEvent source (Env: $FUNC_SOURCE) (default "/boson/fn")
  -t, --type string           CloudEvent type  (Env: $FUNC_TYPE) (default "boson.fn")

特别是,您可能会发现指定以下参数很有用:

事件类型
被发送的事件类型。您可以在该事件制作者文档中从特定事件制作者处查找有关为事件设置的 type 参数的信息。例如,API 服务器源可将生成的事件的 type 参数设置为 dev.knative.apiserver.resource.update
事件源
生成该事件的唯一事件源。这可以是事件源的 URI,如 https://10.96.0.1/ 或事件源的名称。
事件 ID
由事件制作者创建的随机唯一 ID。
事件数据

允许您为 kn func emit 命令发送的事件指定 data 值。例如,您可以指定一个 --data 值,如 "Hello world!",以便事件包含此数据字符串。默认情况下,kn func emit 创建的事件中不包含任何数据。

注意

已部署到集群的功能可以对现有事件源的事件响应,该源提供属性(如 sourcetype)的值。这些事件通常具有 JSON 格式的 data 值,用于捕获事件的特定域上下文。使用本文档中介绍的 CLI 标志,开发人员可以模拟这些事件以进行本地测试。

您还可以使用 --file 标志发送事件数据,以提供包含事件数据的本地文件。

数据内容类型
如果您使用 --data 标志为事件添加数据,您也可以通过使用 --content-type 标志指定事件所传输的数据类型。在前面的示例中,数据为纯文本,因此您可以指定 kn func emit --data "Hello world!" --content-type "text/plain"

使用标志指定事件参数的命令示例

$ kn func emit --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> -i <event_ID>

$ kn func emit --type ping --source example-ping --data "Hello world!" --content-type "text/plain" -i example-ID

在磁盘上指定包含事件参数的文件的命令示例

$ kn func emit --file <path>

$ kn func emit --file ./test.json

指定到这个功能的路径的命令示例

您可以使用 --path 标志指定到功能项目的路径,或使用 --sink 标志为函数指定端点:

$ kn func emit --path <path_to_function>
$ kn func emit --path ./example/example-function

指定部署为 Knative 服务 (sink) 的功能的命令示例

$ kn func emit --sink <service_URL>

$ kn func emit --sink "http://example.function.com"

--sink 标志还接受将事件发送到本地运行的功能 local 的特殊值:

$ kn func emit --sink local