Browse Source

stabel version 1.0.0

Robert 1 year ago
commit
cba72fd1d3
8 changed files with 167 additions and 0 deletions
  1. 21 0
      api/activesession.js
  2. 24 0
      api/commands_start_session.js
  3. 30 0
      api/commands_stop_session.js
  4. 20 0
      api/stationInfo.js
  5. 18 0
      api/stations.js
  6. 1 0
      api/url.txt
  7. 49 0
      shared/apifunc.js
  8. 4 0
      shared/env.txt

+ 21 - 0
api/activesession.js

@@ -0,0 +1,21 @@
+import http from 'k6/http';
+import { sleep } from 'k6';
+import * as apifunc from '../shared/apifunc.js'
+
+export const options = {
+  vus: 20,
+  //duration: '30s',
+  iterations: 20
+};
+
+const apiBaseUrl = open('url.txt');
+
+export default function () {
+	const evseNum = apifunc.GetEvseNum();
+	const apiPath = '/api/v1/cpo/activesession';
+	const apiParam = `ChargeBoxId=PHSimulator006${evseNum}`;
+	var p = apifunc.GetP(apiBaseUrl, apiPath,apiParam,'');
+	const res = http.get(p.url , p.params);
+	console.log(`PHSimulator006${evseNum}` + ' '+ apifunc.GetSessionId(res));
+	//sleep(1);
+}

+ 24 - 0
api/commands_start_session.js

@@ -0,0 +1,24 @@
+import http from 'k6/http';
+import { sleep } from 'k6';
+import * as apifunc from '../shared/apifunc.js'
+
+export const options = {
+  vus: 20,
+  //duration: '1s',
+  iterations: 20
+};
+
+const apiBaseUrl = open('url.txt');
+
+export default function () {
+	const evseNum = apifunc.GetEvseNum();
+	var apiPath = '/api/v1/cpo/commands/start_session';
+	const apiParam = '';
+	const bodyData = `{\"ConnectorId\":1,\"Token\":\"Backend\",\"ChargeBoxId\":\"PHSimulator006${evseNum}\",\"CouponCode\":\"123\",\"PayMethod\":\"Coupon\"}`;
+	var p = apifunc.GetP(apiBaseUrl, apiPath,apiParam,bodyData);
+	//console.log(p.url);
+	const res = http.post(p.url, p.bodyData, p.params);
+	console.log(res.body);
+	//console.log(p.bodyData);
+	//sleep(1);
+}

+ 30 - 0
api/commands_stop_session.js

@@ -0,0 +1,30 @@
+import http from 'k6/http';
+import { sleep } from 'k6';
+import * as apifunc from '../shared/apifunc.js'
+
+export const options = {
+  vus: 20,
+  //duration: '30s',
+  iterations: 20
+};
+
+const apiBaseUrl = open('url.txt');
+
+export default function () {
+	const evseNum = apifunc.GetEvseNum();
+	const asApiPath = '/api/v1/cpo/activesession';
+	const asApiParam = `ChargeBoxId=PHSimulator006${evseNum}`;
+	
+	var ap = apifunc.GetP(apiBaseUrl, asApiPath,asApiParam,'');
+	const asRes = http.get(ap.url , ap.params);
+	var asId = apifunc.GetSessionId(asRes);
+	//console.log(asId);
+	
+	const apiPath = '/api/v1/cpo/commands/stop_session';
+	const apiParam = `ChargeBoxId=PHSimulator006${evseNum}&SessionId=${asId}`;
+	//console.log(apiParam);
+	var p = apifunc.GetP(apiBaseUrl, apiPath,apiParam,'');
+	const res = http.post(p.url, p.bodyData, p.params);
+	console.log(`PHSimulator006${evseNum} ${asId} ` + res.body);
+	//sleep(1);
+}

+ 20 - 0
api/stationInfo.js

@@ -0,0 +1,20 @@
+import http from 'k6/http';
+import { sleep } from 'k6';
+import * as apifunc from '../shared/apifunc.js'
+
+export const options = {
+  vus: 1,
+  //duration: '1m',
+};
+
+const apiBaseUrl = open('url.txt');
+
+export default function () {
+	const evseNum = apifunc.GetEvseNum();
+	const apiPath = '/api/v2/cpo/stationInfo';
+	const apiParam = `ChargeBoxId=PHSimulator006${evseNum}`;
+	var p = apifunc.GetP(apiBaseUrl, apiPath,apiParam,'');
+	const res = http.get(p.url, p.params);
+	console.log(res.body);
+	//sleep(1);
+}

+ 18 - 0
api/stations.js

@@ -0,0 +1,18 @@
+import http from 'k6/http';
+import { sleep } from 'k6';
+import * as apifunc from '../shared/apifunc.js'
+
+export const options = {
+  vus: 1,
+  //duration: '1m',
+};
+
+const apiBaseUrl = open('url.txt');
+
+export default function () {
+	const apiPath = '/api/v1/cpo/station';
+	var p = apifunc.GetP(apiBaseUrl, apiPath,'','');
+	const res = http.get(p.url, p.params);
+	console.log(res.body);
+	//sleep(1);
+}

+ 1 - 0
api/url.txt

@@ -0,0 +1 @@
+https://zerovabackend-dev-compose-csms.azurewebsites.net/api

+ 49 - 0
shared/apifunc.js

@@ -0,0 +1,49 @@
+import crypto from 'k6/crypto';
+import exec from 'k6/execution';
+
+import { uuidv4 } from 'https://jslib.k6.io/k6-utils/1.4.0/index.js';
+import moment from "cdnjs.com/libraries/moment.js/2.18.1";
+
+const envSetting = JSON.parse(open('env.txt'));
+const partnerId = envSetting.partnerId;
+const apiKey = envSetting.apiKey;
+
+export function GetP(baseUrl, apiPath, apiParam, bodyData) {
+  const evsenNum = GetEvseNum();
+  const randomUUID = uuidv4();
+  const ts = ~~ (moment().valueOf() /1000);
+  
+  const urlapi = baseUrl+apiPath;
+  const url = apiParam == "" ? urlapi : urlapi + '?' + apiParam;
+  
+  var assembledata = apiParam + bodyData + ts + partnerId + apiKey;
+  
+  var hash = crypto.md5(assembledata.toLowerCase(), 'hex').toString();
+  
+  const params = {
+	headers: {
+		'Timestamp': ts,
+		'Signature': hash,
+		'PartnerId': partnerId,
+		'Content-Type': 'application/json'
+		},
+  }
+  
+  return {
+	  url: url,
+	  bodyData: bodyData,
+	  params : params
+	  };
+}
+
+export function GetSessionId(res){
+	var data = JSON.parse(res.body).Data;
+	var sessions = JSON.parse(data).Sessions;
+	var session = sessions[0].SessionId;
+	return session;
+}
+
+export function GetEvseNum(){
+	const instanceId = exec.vu.idInTest;
+	return ("00" + instanceId).slice(-3);
+}

+ 4 - 0
shared/env.txt

@@ -0,0 +1,4 @@
+{
+	"partnerId":"8456AED9-6DD9-4BF3-A94C-9F5DCB9506F7",
+	"apiKey":"#@4568QQ"
+}