Loading src/tests/benchmark/policy/.gitignore 0 → 100644 +2 −0 Original line number Diff line number Diff line # Add here your files containing confidential testbed details such as IP addresses, ports, usernames, passwords, etc. descriptors_real.json src/tests/benchmark/policy/PolicyAddService.js 0 → 100644 +72 −0 Original line number Diff line number Diff line import grpc from 'k6/net/grpc'; import exec from "k6/execution"; import { check, sleep } from 'k6'; const client = new grpc.Client(); client.load(['../proto'], 'policy.proto'); export const data = []; for (let i = 1; i < 2; i++) { data.push( { "serviceId": { "context_id": { "context_uuid": {"uuid": "admin"} }, "service_uuid": { "uuid": "6942d780-cfa9-4dea-a946-a8a0b3f7eab2" } }, "policyRuleBasic": { "policyRuleId": {"uuid": {"uuid": i.toString()}}, "policyRuleState": {"policyRuleState": "POLICY_ACTIVE"}, "priority": 0, "conditionList": [{"kpiId": {"kpi_id": {"uuid": "1"}}, "numericalOperator": "POLICYRULE_CONDITION_NUMERICAL_EQUAL", "kpiValue": {"boolVal": false} }], "actionList": [{}], "booleanOperator": "POLICYRULE_CONDITION_BOOLEAN_OR" } } ); }; export const options = { scenarios :{ "AddPolicy-scenario": { executor: "shared-iterations", vus: 1, iterations: data.length, maxDuration: "1h" } } }; export default () => { client.connect('10.1.255.198:6060', { plaintext: true, // timeout: 10000 }); var item = data[exec.scenario.iterationInInstance]; const response = client.invoke('policy.PolicyService/PolicyAddService', item); check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK, }); console.log(JSON.stringify(response.message)); client.close(); sleep(1); }; export function handleSummary(data) { return { 'summary_add_1.json': JSON.stringify(data.metrics.grpc_req_duration.values), //the default data object }; } src/tests/benchmark/policy/PolicyDelete.js 0 → 100644 +53 −0 Original line number Diff line number Diff line import grpc from 'k6/net/grpc'; import exec from "k6/execution"; import { check, sleep } from 'k6'; const client = new grpc.Client(); client.load(['../proto'], 'policy.proto'); export const data = []; for (let i = 1; i < 2; i++) { data.push( { "uuid": {"uuid": i.toString()} } ); }; export const options = { scenarios :{ "AddPolicy-scenario": { executor: "shared-iterations", vus: 1, iterations: data.length, maxDuration: "1h" } } }; export default () => { client.connect('10.1.255.198:6060', { plaintext: true, // timeout: 10000 }); var item = data[exec.scenario.iterationInInstance]; const response = client.invoke('policy.PolicyService/PolicyDelete', item); check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK, }); console.log(JSON.stringify(response.message)); client.close(); sleep(1); }; export function handleSummary(data) { return { 'summary_delete_1.json': JSON.stringify(data.metrics.grpc_req_duration.values), //the default data object }; } src/tests/benchmark/policy/PolicyUpdateService.js 0 → 100644 +72 −0 Original line number Diff line number Diff line import grpc from 'k6/net/grpc'; import exec from "k6/execution"; import { check, sleep } from 'k6'; const client = new grpc.Client(); client.load(['../proto'], 'policy.proto'); export const data = []; for (let i = 1; i < 2; i++) { data.push( { "serviceId": { "context_id": { "context_uuid": {"uuid": "admin"} }, "service_uuid": { "uuid": "6942d780-cfa9-4dea-a946-a8a0b3f7eab2" } }, "policyRuleBasic": { "policyRuleId": {"uuid": {"uuid": i.toString()}}, "policyRuleState": {"policyRuleState": "POLICY_ACTIVE"}, "priority": 0, "conditionList": [{"kpiId": {"kpi_id": {"uuid": "1"}}, "numericalOperator": "POLICYRULE_CONDITION_NUMERICAL_EQUAL", "kpiValue": {"boolVal": false} }], "actionList": [{}], "booleanOperator": "POLICYRULE_CONDITION_BOOLEAN_OR" } } ); }; export const options = { scenarios :{ "AddPolicy-scenario": { executor: "shared-iterations", vus: 1, iterations: data.length, maxDuration: "1h" } } }; export default () => { client.connect('10.1.255.198:6060', { plaintext: true, // timeout: 10000 }); var item = data[exec.scenario.iterationInInstance]; const response = client.invoke('policy.PolicyService/PolicyUpdateService', item); check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK, }); console.log(JSON.stringify(response.message)); client.close(); sleep(1); }; export function handleSummary(data) { return { 'summary_add_1.json': JSON.stringify(data.metrics.grpc_req_duration.values), //the default data object }; } src/tests/benchmark/policy/README.md 0 → 100644 +17 −0 Original line number Diff line number Diff line # Grafana k6 load testing tool # K6 Installation Instructions on Ubuntu sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list sudo apt-get update sudo apt-get install k6 Or install k6 via snap: sudo apt install snapd sudo snap install k6 # Running K6 k6 run script.js No newline at end of file Loading
src/tests/benchmark/policy/.gitignore 0 → 100644 +2 −0 Original line number Diff line number Diff line # Add here your files containing confidential testbed details such as IP addresses, ports, usernames, passwords, etc. descriptors_real.json
src/tests/benchmark/policy/PolicyAddService.js 0 → 100644 +72 −0 Original line number Diff line number Diff line import grpc from 'k6/net/grpc'; import exec from "k6/execution"; import { check, sleep } from 'k6'; const client = new grpc.Client(); client.load(['../proto'], 'policy.proto'); export const data = []; for (let i = 1; i < 2; i++) { data.push( { "serviceId": { "context_id": { "context_uuid": {"uuid": "admin"} }, "service_uuid": { "uuid": "6942d780-cfa9-4dea-a946-a8a0b3f7eab2" } }, "policyRuleBasic": { "policyRuleId": {"uuid": {"uuid": i.toString()}}, "policyRuleState": {"policyRuleState": "POLICY_ACTIVE"}, "priority": 0, "conditionList": [{"kpiId": {"kpi_id": {"uuid": "1"}}, "numericalOperator": "POLICYRULE_CONDITION_NUMERICAL_EQUAL", "kpiValue": {"boolVal": false} }], "actionList": [{}], "booleanOperator": "POLICYRULE_CONDITION_BOOLEAN_OR" } } ); }; export const options = { scenarios :{ "AddPolicy-scenario": { executor: "shared-iterations", vus: 1, iterations: data.length, maxDuration: "1h" } } }; export default () => { client.connect('10.1.255.198:6060', { plaintext: true, // timeout: 10000 }); var item = data[exec.scenario.iterationInInstance]; const response = client.invoke('policy.PolicyService/PolicyAddService', item); check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK, }); console.log(JSON.stringify(response.message)); client.close(); sleep(1); }; export function handleSummary(data) { return { 'summary_add_1.json': JSON.stringify(data.metrics.grpc_req_duration.values), //the default data object }; }
src/tests/benchmark/policy/PolicyDelete.js 0 → 100644 +53 −0 Original line number Diff line number Diff line import grpc from 'k6/net/grpc'; import exec from "k6/execution"; import { check, sleep } from 'k6'; const client = new grpc.Client(); client.load(['../proto'], 'policy.proto'); export const data = []; for (let i = 1; i < 2; i++) { data.push( { "uuid": {"uuid": i.toString()} } ); }; export const options = { scenarios :{ "AddPolicy-scenario": { executor: "shared-iterations", vus: 1, iterations: data.length, maxDuration: "1h" } } }; export default () => { client.connect('10.1.255.198:6060', { plaintext: true, // timeout: 10000 }); var item = data[exec.scenario.iterationInInstance]; const response = client.invoke('policy.PolicyService/PolicyDelete', item); check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK, }); console.log(JSON.stringify(response.message)); client.close(); sleep(1); }; export function handleSummary(data) { return { 'summary_delete_1.json': JSON.stringify(data.metrics.grpc_req_duration.values), //the default data object }; }
src/tests/benchmark/policy/PolicyUpdateService.js 0 → 100644 +72 −0 Original line number Diff line number Diff line import grpc from 'k6/net/grpc'; import exec from "k6/execution"; import { check, sleep } from 'k6'; const client = new grpc.Client(); client.load(['../proto'], 'policy.proto'); export const data = []; for (let i = 1; i < 2; i++) { data.push( { "serviceId": { "context_id": { "context_uuid": {"uuid": "admin"} }, "service_uuid": { "uuid": "6942d780-cfa9-4dea-a946-a8a0b3f7eab2" } }, "policyRuleBasic": { "policyRuleId": {"uuid": {"uuid": i.toString()}}, "policyRuleState": {"policyRuleState": "POLICY_ACTIVE"}, "priority": 0, "conditionList": [{"kpiId": {"kpi_id": {"uuid": "1"}}, "numericalOperator": "POLICYRULE_CONDITION_NUMERICAL_EQUAL", "kpiValue": {"boolVal": false} }], "actionList": [{}], "booleanOperator": "POLICYRULE_CONDITION_BOOLEAN_OR" } } ); }; export const options = { scenarios :{ "AddPolicy-scenario": { executor: "shared-iterations", vus: 1, iterations: data.length, maxDuration: "1h" } } }; export default () => { client.connect('10.1.255.198:6060', { plaintext: true, // timeout: 10000 }); var item = data[exec.scenario.iterationInInstance]; const response = client.invoke('policy.PolicyService/PolicyUpdateService', item); check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK, }); console.log(JSON.stringify(response.message)); client.close(); sleep(1); }; export function handleSummary(data) { return { 'summary_add_1.json': JSON.stringify(data.metrics.grpc_req_duration.values), //the default data object }; }
src/tests/benchmark/policy/README.md 0 → 100644 +17 −0 Original line number Diff line number Diff line # Grafana k6 load testing tool # K6 Installation Instructions on Ubuntu sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list sudo apt-get update sudo apt-get install k6 Or install k6 via snap: sudo apt install snapd sudo snap install k6 # Running K6 k6 run script.js No newline at end of file