Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: pull in redis/pub-sub/kvs/ttk/state plugin/state machine code for upcoming flows #78

Merged
merged 11 commits into from
Jul 8, 2021
Merged
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
77 changes: 77 additions & 0 deletions ambient.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,80 @@ declare module '@mojaloop/central-services-metrics'
declare module '@hapi/good'
declare module 'hapi-openapi'
declare module 'blipp'

// version 2.4 -> https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/javascript-state-machine/index.d.ts
// we are using ^3.1.0
declare module 'javascript-state-machine' {
type Method = (...args: unknown[]) => void | Promise<void>
type Data = Record<string, string | number | boolean | unknown>


interface Transition {
name: string;
from: string;
to: string;
}
interface TransitionEvent<JSM> {
transition: string;
from: string;
to: string;
fsm: JSM;
event: string;
}
interface StateMachineConfig {
init?: string;
transitions: Transition[];
data?: Data;
methods?: Record<string, Method>;
}

interface StateMachineInterface {
// current state
state: string;

// return true if state s is the current state
is(s: string): boolean

// return true if transition t can occur from the current state
can(t: string): boolean

// return true if transition t cannot occur from the current state
cannot(t: string): boolean

// return list of transitions that are allowed from the current state
transitions(): string[]

// return list of all possible transitions
allTransitions(): string[]

// return list of all possible states
allStates(): string []
}
export default class StateMachine {
constructor(config: StateMachineConfig)

// current state
state: string;

// return true if state s is the current state
is(s: string): boolean

// return true if transition t can occur from the current state
can(t: string): boolean

// return true if transition t cannot occur from the current state
cannot(t: string): boolean

// return list of transitions that are allowed from the current state
transitions(): string[]

// return list of all possible transitions
allTransitions(): string[]

// return list of all possible states
allStates(): string []

static factory(spec: StateMachineConfig): StateMachine
}

}
7 changes: 6 additions & 1 deletion config/development.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
"PORT": 4004,
"HOST": "0.0.0.0",
"PARTICIPANT_ID": "auth_service",
"REDIS": {
"PORT": 6379,
"HOST": "redis",
"TIMEOUT": 100
},
"INSPECT": {
"DEPTH": 4,
"SHOW_HIDDEN": false,
Expand Down Expand Up @@ -66,4 +71,4 @@
]
}
}
}
}
7 changes: 6 additions & 1 deletion config/integration.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
"PORT": 4004,
"HOST": "0.0.0.0",
"PARTICIPANT_ID": "auth_service",
"REDIS": {
"PORT": 6379,
"HOST": "redis",
"TIMEOUT": 100
},
"INSPECT": {
"DEPTH": 4,
"SHOW_HIDDEN": false,
Expand Down Expand Up @@ -66,4 +71,4 @@
]
}
}
}
}
7 changes: 6 additions & 1 deletion config/production.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
"PORT": 4004,
"HOST": "0.0.0.0",
"PARTICIPANT_ID": "auth_service",
"REDIS": {
"PORT": 6379,
"HOST": "redis",
"TIMEOUT": 100
},
"INSPECT": {
"DEPTH": 4,
"SHOW_HIDDEN": false,
Expand Down Expand Up @@ -66,4 +71,4 @@
]
}
}
}
}
7 changes: 6 additions & 1 deletion config/test.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
"PORT": 4004,
"HOST": "0.0.0.0",
"PARTICIPANT_ID": "auth_service",
"REDIS": {
"PORT": 6379,
"HOST": "localhost",
"TIMEOUT": 100
},
"INSPECT": {
"DEPTH": 4,
"SHOW_HIDDEN": false,
Expand Down Expand Up @@ -49,4 +54,4 @@
]
}
}
}
}
20 changes: 20 additions & 0 deletions docker-compose.linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This is an extension docker-compose file that contains `extra_hosts` entries to work arouind networking
# on linux, start docker-local with the following command
#
# docker-compose -f docker-compose.yml -f docker-compose.linux.yml up -d
#
# I suspect that with some of the recent changes to the way containers refer to one another inside the
# docker-local environment, this will no longer be needed. Please delete this file if you are reading this message
# past July and we haven't run into issues...

version: "3.7"

services:
auth-service:
extra_hosts:
- "redis:172.17.0.1"
- "ml-testing-toolkit:172.17.0.1"

ml-testing-toolkit:
extra_hosts:
- "auth-service:172.17.0.1"
47 changes: 45 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@ services:
- mojaloop-net
depends_on:
- mysql
- redis
volumes:
- ./scripts/wait4.js:/opt/auth-service/scripts/wait4.js
- ./scripts/wait4.config.js:/opt/auth-service/scripts/wait4.config.js
healthcheck:
test: wget -q http://172.17.0.1:4004/health -O /dev/null || exit 1
test: wget -q http://localhost:4004/health -O /dev/null || exit 1
timeout: 20s
retries: 30
interval: 15s
Expand All @@ -46,4 +47,46 @@ services:
timeout: 20s
retries: 10
start_period: 40s
interval: 30s
interval: 30s

redis:
container_name: redis
image: "redis:6.2.4-alpine"
networks:
- mojaloop-net
ports:
- "6379:6379"
restart: always

ml-testing-toolkit:
image: mojaloop/ml-testing-toolkit:v12.4.0
container_name: ml-testing-toolkit
volumes:
- "./docker/ml-testing-toolkit/spec_files:/opt/mojaloop-testing-toolkit/spec_files"
- "./docker/ml-testing-toolkit/secrets:/opt/mojaloop-testing-toolkit/secrets"
ports:
- "15000:5000"
- "5050:5050"
command: npm start
networks:
- mojaloop-net
depends_on:
- mongo

ml-testing-toolkit-ui:
image: mojaloop/ml-testing-toolkit-ui:v12.0.0
container_name: ml-testing-toolkit-ui
ports:
- "6060:6060"
command: nginx -g "daemon off;"
depends_on:
- ml-testing-toolkit
- mongo
networks:
- mojaloop-net

mongo:
image: mongo
container_name: 3p_mongo
ports:
- "27017:27017"
Empty file.
21 changes: 21 additions & 0 deletions docker/ml-testing-toolkit/secrets/publickey.cer
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDbjCCAlYCCQDudXfDH36/JjANBgkqhkiG9w0BAQsFADB5MRswGQYDVQQDDBJ0
ZXN0aW5ndG9vbGtpdGRmc3AxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARPaGlvMREw
DwYDVQQHDAhDb2x1bWJ1czEYMBYGA1UECgwPVGVzdGluZyBUb29sa2l0MREwDwYD
VQQLDAhQYXltZW50czAeFw0yMDAzMjQxNzU1MjZaFw0yNTAzMjMxNzU1MjZaMHkx
GzAZBgNVBAMMEnRlc3Rpbmd0b29sa2l0ZGZzcDELMAkGA1UEBhMCVVMxDTALBgNV
BAgMBE9oaW8xETAPBgNVBAcMCENvbHVtYnVzMRgwFgYDVQQKDA9UZXN0aW5nIFRv
b2xraXQxETAPBgNVBAsMCFBheW1lbnRzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAwczEjlUeOPutgPRlpZSbcbJJwsmmxsBfoPDw1sjBiR7L6DohVqKd
810+TmiDRYgCzOLabje/mtLiDC95MtuPF5yUiVE04ar6Ny5pZLxJEnbDEOAETxOn
1gzCKeRHYOcgybDi6TLhnvyFyIaXKzyBhEYvxI8VvRV11UawLqvpgVrdsbZy1FQO
MLq7OB+J6qC7fhR61F6Wu45RZlZMB482c658P7dCQCdQtEMEF5kuBNB/JuURe0qK
jl2udKVL3wgBC7J7o7Tx8kY5T63q/ZC3TfoTclFeXtIePt8Eu74u3d6WpSWbZ12m
ewRBVPtmbGHgEXpih3uayaqIeC8Dc4zO5QIDAQABMA0GCSqGSIb3DQEBCwUAA4IB
AQAZ1lQ/KcSGwy/jQUIGF87JugLU17nnIEG2TrkC5n+fZDQqs8QqU6itbkdGQyNj
F5aLoPEdrKzevnBztlAEq0bofR0uDnQPN74A/NwOUfWds0hq5elZnO9Uq0G15Go4
pfqLbSjHxSu6LZaHP6f9+WvMqNbGr3kipz8GSIQWixzdKBnNxCwWjZmk4gD5cahU
XIpMAZumsnKk6pWilmuMIxC579CyLkGdVze3Kj6GunUJ1pieZzv4+RUJz8NgXxjW
ZRwqCkEqPe/8S1X9srtcrdbHryDdC18Ldu/rADEKbSqy0BhQdKYDcxulaQuqibwD
i0dWSdTWoseAbUqp2ACc6aF/
-----END CERTIFICATE-----
Loading