Commit d6bc9192 authored by Vasilis Katopodis's avatar Vasilis Katopodis
Browse files

Policy: create benchmark tests

parent dfa2fdff
Loading
Loading
Loading
Loading
+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
+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
  };
}
+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
  };
}
+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
  };
}
+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