xk6-output-plugin Python API
Project description
xk6-output-plugin-py
Python plugin SDK for xk6-output-plugin.
Documentation
pip
pip install xk6-output-plugin-py
poetry
poetry add xk6-output-plugin-py
Example
import datetime
import logging
from xk6_output_plugin_py.output import serve, Output, Info, MetricType, ValueType
class Example(Output):
def Init(self, params):
logging.info("init")
return Info(description="example-py plugin")
def Start(self):
logging.info("start")
def Stop(self):
logging.info("stop")
def AddMetrics(self, metrics):
logging.info("metrics")
for metric in metrics:
logging.info(
metric.name,
extra={
"metric.type": MetricType.Name(metric.type),
"metric.contains": ValueType.Name(metric.contains),
},
)
def AddSamples(self, samples):
logging.info("samples")
for sample in samples:
t = datetime.datetime.fromtimestamp(
sample.time / 1000.0, tz=datetime.timezone.utc
)
logging.info(
sample.metric,
extra={"sample.time": t, "sample.value": sample.value},
)
if __name__ == "__main__":
serve(Example())
Output
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
INFO[0000] init plugin=example.py
INFO[0000] start plugin=example.py
execution: local
script: script.js
output: example-py plugin
scenarios: (100.00%) 1 scenario, 1 max VUs, 10m30s max duration (incl. graceful stop):
* default: 1 iterations for each of 1 VUs (maxDuration: 10m0s, gracefulStop: 30s)
INFO[0001] metrics plugin=example.py
INFO[0001] http_reqs metric.contains=DEFAULT metric.type=COUNTER plugin=example.py
INFO[0001] http_req_duration metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_blocked metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_connecting metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_tls_handshaking metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_sending metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_waiting metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_receiving metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0001] http_req_failed metric.contains=DEFAULT metric.type=RATE plugin=example.py
INFO[0001] samples plugin=example.py
INFO[0001] http_reqs plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=1
INFO[0001] http_req_duration plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=124.175733
INFO[0001] http_req_blocked plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=142.170447
INFO[0001] http_req_connecting plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=124.043583
INFO[0001] http_req_tls_handshaking plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=0
INFO[0001] http_req_sending plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=0.091421
INFO[0001] http_req_waiting plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=124.004817
INFO[0001] http_req_receiving plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=0.079495
INFO[0001] http_req_failed plugin=example.py sample.time="2023-06-23T07:14:09.985000+00:00" sample.value=0
INFO[0001] http_reqs plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=1
INFO[0001] http_req_duration plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=127.37244
INFO[0001] http_req_blocked plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=249.034715
INFO[0001] http_req_connecting plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=123.502855
INFO[0001] http_req_tls_handshaking plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=125.451159
INFO[0001] http_req_sending plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=0.083551
INFO[0001] http_req_waiting plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=127.117785
INFO[0001] http_req_receiving plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=0.171104
INFO[0001] http_req_failed plugin=example.py sample.time="2023-06-23T07:14:10.362000+00:00" sample.value=0
INFO[0002] metrics plugin=example.py
INFO[0002] vus metric.contains=DEFAULT metric.type=GAUGE plugin=example.py
INFO[0002] vus_max metric.contains=DEFAULT metric.type=GAUGE plugin=example.py
INFO[0002] data_sent metric.contains=DATA metric.type=COUNTER plugin=example.py
INFO[0002] data_received metric.contains=DATA metric.type=COUNTER plugin=example.py
INFO[0002] iteration_duration metric.contains=TIME metric.type=TREND plugin=example.py
INFO[0002] iterations metric.contains=DEFAULT metric.type=COUNTER plugin=example.py
INFO[0002] samples plugin=example.py
INFO[0002] vus plugin=example.py sample.time="2023-06-23T07:14:10.718000+00:00" sample.value=1
INFO[0002] vus_max plugin=example.py sample.time="2023-06-23T07:14:10.718000+00:00" sample.value=1
INFO[0002] data_sent plugin=example.py sample.time="2023-06-23T07:14:11.363000+00:00" sample.value=542
INFO[0002] data_received plugin=example.py sample.time="2023-06-23T07:14:11.363000+00:00" sample.value=17310
INFO[0002] iteration_duration plugin=example.py sample.time="2023-06-23T07:14:11.363000+00:00" sample.value=1643.740944
INFO[0002] iterations plugin=example.py sample.time="2023-06-23T07:14:11.363000+00:00" sample.value=1
INFO[0002] stop plugin=example.py
data_received..................: 17 kB 11 kB/s
data_sent......................: 542 B 330 B/s
http_req_blocked...............: avg=195.6ms min=142.17ms med=195.6ms max=249.03ms p(90)=238.34ms p(95)=243.69ms
http_req_connecting............: avg=123.77ms min=123.5ms med=123.77ms max=124.04ms p(90)=123.98ms p(95)=124.01ms
✓ http_req_duration..............: avg=125.77ms min=124.17ms med=125.77ms max=127.37ms p(90)=127.05ms p(95)=127.21ms
{ expected_response:true }...: avg=125.77ms min=124.17ms med=125.77ms max=127.37ms p(90)=127.05ms p(95)=127.21ms
✓ http_req_failed................: 0.00% ✓ 0 ✗ 2
http_req_receiving.............: avg=125.29µs min=79.49µs med=125.29µs max=171.1µs p(90)=161.94µs p(95)=166.52µs
http_req_sending...............: avg=87.48µs min=83.55µs med=87.48µs max=91.42µs p(90)=90.63µs p(95)=91.02µs
http_req_tls_handshaking.......: avg=62.72ms min=0s med=62.72ms max=125.45ms p(90)=112.9ms p(95)=119.17ms
http_req_waiting...............: avg=125.56ms min=124ms med=125.56ms max=127.11ms p(90)=126.8ms p(95)=126.96ms
http_reqs......................: 2 1.21664/s
iteration_duration.............: avg=1.64s min=1.64s med=1.64s max=1.64s p(90)=1.64s p(95)=1.64s
iterations.....................: 1 0.60832/s
vus............................: 1 min=1 max=1
vus_max........................: 1 min=1 max=1
running (00m01.6s), 0/1 VUs, 1 complete and 0 interrupted iterations
default ✓ [======================================] 1 VUs 00m01.6s/10m0s 1/1 iters, 1 per VU
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xk6_output_plugin_py-0.1.0.tar.gz.
File metadata
- Download URL: xk6_output_plugin_py-0.1.0.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.19.0-45-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c853a0a3c39125c17f58c8af9b82ea0b3b10c917df1e8c81978ee23c597cbb0e
|
|
| MD5 |
fb0670aab52a40319a1c2446a6cba0b1
|
|
| BLAKE2b-256 |
b92add951e694694afdcac2302ced84ac0d60da0144b28a4cc0f7b4036489de4
|
File details
Details for the file xk6_output_plugin_py-0.1.0-py3-none-any.whl.
File metadata
- Download URL: xk6_output_plugin_py-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.19.0-45-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c05a983fb607bdc1e933d360258c200a5de237f540c2648ba005c05d832a0f21
|
|
| MD5 |
c9ccd55d6f31233465851b1ffcbcaf68
|
|
| BLAKE2b-256 |
d4a2c60ac481fb29b615bc5f705317918a6ffc560988c03045a7da321ee9bbfa
|