Skip to content

Commit

Permalink
Bug/fix cli socket clash (#116)
Browse files Browse the repository at this point in the history
* Refactored CLI using sessionID

* Implemented timeout for test case execution

* Updated the docker version in docker-compose file

* Postponed audits
  • Loading branch information
vijayg10 authored Dec 4, 2020
1 parent c9f6d1a commit dfc4c01
Show file tree
Hide file tree
Showing 14 changed files with 16,062 additions and 16,191 deletions.
32,034 changes: 16,017 additions & 16,017 deletions audit-resolve.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: "3.7"

services:
mojaloop-testing-toolkit:
image: mojaloop/ml-testing-toolkit:v11.6.0
image: mojaloop/ml-testing-toolkit:v11.7.0
#image: mojaloop-testing-toolkit:local
#build:
# context: .
Expand All @@ -18,7 +18,7 @@ services:
- -c
- "npm start"
mojaloop-testing-toolkit-ui:
image: mojaloop/ml-testing-toolkit-ui:v11.6.0
image: mojaloop/ml-testing-toolkit-ui:v11.6.1
ports:
- "6060:6060"
environment:
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ml-testing-toolkit",
"description": "Testing Toolkit for Mojaloop implementations",
"version": "11.7.0",
"version": "11.7.1",
"license": "Apache-2.0",
"author": "Vijaya Kumar Guthi, ModusBox Inc.",
"contributors": [
Expand Down Expand Up @@ -95,7 +95,7 @@
"json-schema-faker": "^0.5.0-rc23",
"json-schema-ref-parser": "^7.1.3",
"lodash": "^4.17.15",
"ml-testing-toolkit-shared-lib": "11.0.0",
"ml-testing-toolkit-shared-lib": "11.1.0",
"mongoose": "5.10.0",
"multer": "^1.4.2",
"mustache": "3.1.0",
Expand Down
3 changes: 3 additions & 0 deletions spec_files/rules_callback/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@
"method": "put",
"path": "/parties/{Type}/{ID}",
"params": {
"headers": {
"Content-Type": "application/vnd.interoperability.parties+json;version=1.0"
},
"body": {
"party": {
"partyIdInfo": {
Expand Down
11 changes: 9 additions & 2 deletions src/cli_client/modes/outbound.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,20 @@ const { promisify } = require('util')
const objectStore = require('../objectStore')
const slackBroadcast = require('../extras/slack-broadcast')
const TemplateGenerator = require('../utils/templateGenerator')
const { TraceHeaderUtils } = require('ml-testing-toolkit-shared-lib')

const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic)

const sendTemplate = async () => {
const sendTemplate = async (sessionId) => {
const config = objectStore.get('config')
try {
const readFileAsync = promisify(fs.readFile)
const outboundRequestID = Math.random().toString(36).substring(7)

// Calculate the outbound request ID based on sessionId for catching progress notifications
const traceIdPrefix = TraceHeaderUtils.getTraceIdPrefix()
const currentEndToEndId = TraceHeaderUtils.generateEndToEndId()
const outboundRequestID = traceIdPrefix + sessionId + currentEndToEndId

const inputFiles = config.inputFiles.split(',')
const template = await TemplateGenerator.generateTemplate(inputFiles)
template.inputValues = JSON.parse(await readFileAsync(config.environmentFile, 'utf8')).inputValues
Expand All @@ -51,6 +57,7 @@ const sendTemplate = async () => {
await axios.post(`${config.baseURL}/api/outbound/template/` + outboundRequestID, template, { headers: { 'Content-Type': 'application/json' } })
} catch (err) {
console.log(err)
process.exit(1)
}
}

Expand Down
13 changes: 11 additions & 2 deletions src/cli_client/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
******/
const fs = require('fs')
const objectStore = require('./objectStore')
const { TraceHeaderUtils } = require('ml-testing-toolkit-shared-lib')

const TESTS_EXECUTION_TIMEOUT = 1000 * 60 * 15 // 15min timout

const cli = (commander) => {
let configFile = {
Expand Down Expand Up @@ -57,8 +60,14 @@ const cli = (commander) => {
case 'outbound':
if (config.inputFiles) {
if (config.environmentFile) {
require('./utils/listeners').outbound()
require('./modes/outbound').sendTemplate()
// Generate a session ID
const sessionId = TraceHeaderUtils.generateSessionId()
require('./utils/listeners').outbound(sessionId)
require('./modes/outbound').sendTemplate(sessionId)
setTimeout(() => {
console.log('Tests execution timed out....')
process.exit(1)
}, TESTS_EXECUTION_TIMEOUT)
} else {
console.log('error: required option \'-e, --environment-file <environmentFile>\' not specified')
process.exit(1)
Expand Down
4 changes: 2 additions & 2 deletions src/cli_client/utils/listeners.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ const outboundMode = require('../modes/outbound')
const monitoringMode = require('../modes/monitoring')
const objectStore = require('../objectStore')

const outbound = () => {
const outbound = (sessionId) => {
const config = objectStore.get('config')
const socket = socketIOClient(config.baseURL)
socket.on('outboundProgress', outboundMode.handleIncomingProgress)
socket.on('outboundProgress/' + sessionId, outboundMode.handleIncomingProgress)
console.log(`Listening on ${config.baseURL} outboundProgress events...`)
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib/callbackHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const objectStore = require('./objectStore')
const MyEventEmitter = require('./MyEventEmitter')
const JwsSigning = require('./jws/JwsSigning')
const ConnectionProvider = require('./configuration-providers/mb-connection-manager')
const traceHeaderUtils = require('./traceHeaderUtils')
const { TraceHeaderUtils } = require('ml-testing-toolkit-shared-lib')
const UniqueIdGenerator = require('./uniqueIdGenerator')

const handleCallback = async (callbackObject, context, req) => {
Expand Down Expand Up @@ -107,7 +107,7 @@ const handleCallback = async (callbackObject, context, req) => {
callbackObject.headers.traceparent = req.headers.traceparent
} else {
if (req.customInfo && req.customInfo.traceID) {
callbackObject.headers.traceparent = traceHeaderUtils.getTraceParentHeader(req.customInfo.traceID)
callbackObject.headers.traceparent = TraceHeaderUtils.getTraceParentHeader(req.customInfo.traceID)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const fs = require('fs')
const { promisify } = require('util')
const readFileAsync = promisify(fs.readFile)
const outbound = require('../../test-outbound/outbound-initiator')
const TraceHeaderUtils = require('../../traceHeaderUtils')
const { TraceHeaderUtils } = require('ml-testing-toolkit-shared-lib')
const customLogger = require('../../requestLogger')

const handleRequest = async (context, request, callback, triggerFolder) => {
Expand Down
8 changes: 4 additions & 4 deletions src/lib/test-outbound/outbound-initiator.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const notificationEmitter = require('../notificationEmitter.js')
const { readFileAsync } = require('../utils')
const expect = require('chai').expect // eslint-disable-line
const JwsSigning = require('../jws/JwsSigning')
const traceHeaderUtils = require('../traceHeaderUtils')
const { TraceHeaderUtils } = require('ml-testing-toolkit-shared-lib')
const ConnectionProvider = require('../configuration-providers/mb-connection-manager')
require('request-to-curl')
require('atob') // eslint-disable-line
Expand All @@ -54,9 +54,9 @@ const getTracing = (traceID, dfspId) => {
outboundID: traceID,
sessionID: null
}
if (traceID && traceHeaderUtils.isCustomTraceID(traceID)) {
tracing.outboundID = traceHeaderUtils.getEndToEndID(traceID)
tracing.sessionID = traceHeaderUtils.getSessionID(traceID)
if (traceID && TraceHeaderUtils.isCustomTraceID(traceID)) {
tracing.outboundID = TraceHeaderUtils.getEndToEndID(traceID)
tracing.sessionID = TraceHeaderUtils.getSessionID(traceID)
}
if (Config.getSystemConfig().HOSTING_ENABLED) {
tracing.sessionID = dfspId
Expand Down
69 changes: 0 additions & 69 deletions src/lib/traceHeaderUtils.js

This file was deleted.

10 changes: 5 additions & 5 deletions src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const OpenApiMockHandler = require('./lib/mocking/openApiMockHandler')
const UniqueIdGenerator = require('./lib/uniqueIdGenerator')
const objectStore = require('./lib/objectStore')
const ConnectionProvider = require('./lib/configuration-providers/mb-connection-manager')
const traceHeaderUtils = require('./lib/traceHeaderUtils')
const { TraceHeaderUtils } = require('ml-testing-toolkit-shared-lib')

var serverInstance = null
// const openAPIOptions = {
Expand Down Expand Up @@ -115,12 +115,12 @@ const onPreHandler = async (request, h) => {
const traceparentHeaderArr = request.headers.traceparent.split('-')
const traceID = traceparentHeaderArr[1]
request.customInfo.traceID = traceID
if (traceHeaderUtils.isCustomTraceID(traceID)) {
request.customInfo.endToEndID = traceHeaderUtils.getEndToEndID(traceID)
request.customInfo.sessionID = traceHeaderUtils.getSessionID(traceID)
if (TraceHeaderUtils.isCustomTraceID(traceID)) {
request.customInfo.endToEndID = TraceHeaderUtils.getEndToEndID(traceID)
request.customInfo.sessionID = TraceHeaderUtils.getSessionID(traceID)
}
} else {
request.customInfo.traceID = traceHeaderUtils.generateRandTraceId()
request.customInfo.traceID = TraceHeaderUtils.generateRandTraceId()

RequestLogger.logMessage('info', 'Traceparent header not found. Generated a random traceID.', { additionalData: { traceID: request.customInfo.traceID }, request })
}
Expand Down
79 changes: 0 additions & 79 deletions test/unit/lib/traceHeaderUtils.test.js

This file was deleted.

0 comments on commit dfc4c01

Please sign in to comment.