Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,9 @@

"skunames" : {
"0.6.0": {
"skuname": "keysight-cyperf-agent-60"
},
"0.5.0": {
"skuname": "keysight-cyperf-agent-50"
},
"0.4.0": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,9 @@

"skunames" : {
"0.6.0": {
"skuname": "keysight-cyperf-agent-60"
},
"0.5.0": {
"skuname": "keysight-cyperf-agent-50"
},
"0.4.0": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,10 @@

"skunames" : {
"0.6.0": {
"skunameagent": "keysight-cyperf-agent-60",
"skunamecontroller": "keysight-cyperf-controller-60"
},
"0.5.0": {
"skunameagent": "keysight-cyperf-agent-50",
"skunamecontroller": "keysight-cyperf-controller-50"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,10 @@

"skunames" : {
"0.6.0": {
"skunameagent": "keysight-cyperf-agent-60",
"skunamecontroller": "keysight-cyperf-controller-60"
},
"0.5.0": {
"skunameagent": "keysight-cyperf-agent-50",
"skunamecontroller": "keysight-cyperf-controller-50"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,10 @@

"skunames" : {
"0.6.0": {
"skunameagent": "keysight-cyperf-agent-60",
"skunamecontrollerproxy": "keysight-cyperf-controllerproxy-60"
},
"0.5.0": {
"skunameagent": "keysight-cyperf-agent-50",
"skunamecontrollerproxy": "keysight-cyperf-controllerproxy-50"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,10 @@

"skunames" : {
"0.6.0": {
"skunameagent": "keysight-cyperf-agent-60",
"skunamecontrollerproxy": "keysight-cyperf-controllerproxy-60"
},
"0.5.0": {
"skunameagent": "keysight-cyperf-agent-50",
"skunamecontrollerproxy": "keysight-cyperf-controllerproxy-50"
},
Expand Down
Binary file added utils/RFC 6349/1_RTT.zip
Binary file not shown.
Binary file added utils/RFC 6349/2_Bottleneck_bandwidth.zip
Binary file not shown.
Binary file added utils/RFC 6349/3_Upstream_tput.zip
Binary file not shown.
Binary file added utils/RFC 6349/4_Downstream_tput.zip
Binary file not shown.
Binary file added utils/RFC 6349/5_Bidirectional_tput.zip
Binary file not shown.
Binary file not shown.
28 changes: 28 additions & 0 deletions utils/RFC 6349/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Introduction
Welcome to the GitHub repository for CyPerf, a Keysight product. CyPerf is an agent-based network application and security test solution, that meticulously recreates realistic workloads across diverse physical and cloud environments to deliver unparalleled insights into the end-user quality of experience (QoE), security posture, and performance bottlenecks of distributed networks.

A licensed CyPerf product is compatible with multiple environments. Choose from the following supported platforms for accessing ready-to-use deployment templates.

# RFC 6349 Test

The RFC 6349 “Framework for TCP Throughput Testing” provides a methodology for testing sustained TCP Layer performance.
In addition to finding the TCP throughput at the optimal buffer size, RFC 6349 presents metrics that can be used to better understand the results.
RFC 6349 testing is done in 3 steps:
1) Identify the Path Maximum Transmission Unit (MTU)
2) Identify the Baseline Round-Trip Time (RTT) and the Bottleneck Bandwidth (BB)
3) Perform the TCP Connection Throughput Tests

# Steps to execute RFC 6349 test script

1) Install the latest version of Python 3.
2) Clone the CyPerf github reprository.
3) Modify “Cyperf/utils/RFC6349/test/params.yaml” such as IPAddress, "username", "password", "client_id", "ClientAgent", "ServerAgent", "ClientIP", "ClientSubnetMask", "ClientGatewayIP", "ServerIP", "ServerSubnetMask", "ServerGatewayIP" with a desire value.
4) Run "python setup.py setup" to install all the dependent python library (all the necessary packages are updated in file requirements.txt). This will setup the environment needed to run the script.
5) Navigate to RFC6349 folder and run the script:- python -m pytest test/rfc_test.py --logstatus testlog.log
6) Once execution is complete, view testlog.log logfile in the extracted directory for the results.
7) All the result cyperf reports will be avalable under folder start with "Result" followed by execution date, exmaple : Result2025_01_22_23_57_15





Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
30 changes: 30 additions & 0 deletions utils/RFC 6349/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import re, logging
import pytest
import json
import os

def pytest_exception_interact(node, call, report):
# end all pytests on first exception that is encountered
pytest.exit(call.excinfo.traceback[0])

def pytest_addoption(parser):
# called before running tests to register command line options for pytest
parser.addoption("--logstatus", action="store", default=None)
parser.addoption("--paramlist", action="store", default=None)
parser.addoption("--log", action="store", default='final_result.log')

@pytest.fixture(scope='session')
def logger(request):
log_file = request.config.getvalue("--logstatus")
if log_file is None:
raise Exception("logstatus is a mandatory command line")
logging
log = open(log_file, 'w+')
return log_file

@pytest.fixture(scope='session')
def logger_report(request):
final_log = request.config.getvalue("--log")
logging
log1 = open(final_log, 'w+')
return final_log
Empty file added utils/RFC 6349/final_result.log
Empty file.
9 changes: 9 additions & 0 deletions utils/RFC 6349/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
--prefer-binary
pytest
paramiko
urllib3
requests
simplejson
pandas
tabulate
Pyyaml
79 changes: 79 additions & 0 deletions utils/RFC 6349/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
from platform import platform
from pathlib import Path
import sys
import os
import subprocess


def setup():
run(
[
py() + " -m pip install -r requirements.txt",
]
)


def py():
"""
Returns path to python executable to be used.
"""
BASE_DIR = BASE_DIR = Path(__file__).resolve().parent
py.path = os.path.join(
os.path.join(BASE_DIR.parent),
".env",
"bin",
"python.exe" if "win" in sys.platform else "python"
)
if not os.path.exists(py.path):
py.path = sys.executable

# since some paths may contain spaces
py.path = '"' + py.path + '"'
print(py.path)
return py.path


def flush_output(fd, filename):
"""
Flush the log file and print to console
"""
if fd is None:
return
fd.flush()
fd.seek(0)
ret = fd.read()
print(ret)
fd.close()
os.remove(filename)
return ret


def run(commands, capture_output=False):
"""
Executes a list of commands in a native shell and raises exception upon
failure.
"""
fd = None
logfile = "log.txt"
if capture_output:
fd = open(logfile, "w+")
try:
for cmd in commands:
print(">>>> " + cmd + " <<<<")
if sys.platform != "win32":
cmd = cmd.encode("utf-8", errors="ignore")
subprocess.check_call(cmd, shell=True, stdout=fd)
return flush_output(fd, logfile)
except Exception:
flush_output(fd, logfile)
sys.exit(1)

def main():
if len(sys.argv) >= 2:
globals()[sys.argv[1]](*sys.argv[2:])
else:
print("usage: python do.py [args]")


if __name__ == "__main__":
main()
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
15 changes: 15 additions & 0 deletions utils/RFC 6349/test/params.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description:
#Paramaters for CyPerf RFC 6349 configs.
config:
"IPAddress" : "10.39.46.181" #CyPerf App server IP
"username" : "admin"
"password" : "CyPerf&Keysight#1"
"client_id" : "clt-wap"
"ClientAgent" : "10.39.47.53" #10.39.47.254
"ServerAgent" : "10.39.47.97"
"ClientIP" : "10.0.0.30"
"ClientSubnetMask" : 16
"ClientGatewayIP" : "0.0.0.0"
"ServerIP" : "10.0.0.40"
"ServerSubnetMask" : 16
"ServerGatewayIP" : "0.0.0.0"
Loading