initial commit

This commit is contained in:
mike k
2021-01-22 21:12:47 -05:00
commit 9e02037e3f
15 changed files with 2078 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
dev-docker-data-cache
node_modules

1
README.md Normal file
View File

@@ -0,0 +1 @@
README.md

13
docker/compose/redis.yml Normal file
View File

@@ -0,0 +1,13 @@
version: '3.7'
services:
redis_dev:
# container_name: hero-dev-redis
image: redis:alpine
restart: always
volumes:
- ${PWD}/dev-docker-data-cache/redis-data:/data
command: ['redis-server', '--appendonly', 'yes', '--requirepass', 'redis_dev_password']
ports:
- ${DOCKER_REDIS_PORT_PUBLIC:-6760}:${DOCKER_REDIS_PORT:-6379}
networks:
- safe_redis_leader_dev

37
docker/compose/test.yml Normal file
View File

@@ -0,0 +1,37 @@
version: '3.7'
services:
safe_redis_leader_backend:
build:
context: ../../
dockerfile: ./docker/dockerfiles/Dockerfile
# container_name: safe_redis_leader_dev_backend
environment:
NODE_ENV: ${NODE_ENV}
DOCKER_REDIS_HOST: redis_dev
DOCKER_REDIS_PASSWORD: redis_dev_password
DOCKER_REDIS_PORT: ${DOCKER_REDIS_PORT:-6379}
NETWORK_NAME: safe_redis_leader_dev
tty: true
stdin_open: true
working_dir: /app
volumes:
- ${PWD}/docker:/docker:delegated
- ${PWD}/src:/app:delegated
- ${PWD}/package.json:/package.json
- ${PWD}/package-lock.json:/package-lock.json
- ${PWD}/.env:/.env
- ${PWD}/dev-docker-data-cache/test_node_modules:/node_modules:delegated
- ${PWD}/dev-docker-data-cache/package_node_modules:/app/node_modules:delegated
- /var/run/docker.sock:/var/run/docker.sock
user: root
command: >
sh -c 'npm install --ignore-scripts --save --loglevel verbose && ${COMPOSE_COMMAND}'
ports:
- 9220:9229
networks:
- safe_redis_leader_dev
networks:
safe_redis_leader_dev:
name: safe_redis_leader_dev
driver: bridge
# docker network ls -f driver=bridge --format "{{.ID}}" | xargs docker network inspect | grep Name

View File

@@ -0,0 +1 @@
FROM node:12-alpine3.10

71
docker/scripts/runner.js Normal file
View File

@@ -0,0 +1,71 @@
const { spawn, exec } = require('child_process')
async function run(){
let backendComposeCommand = 'npm run test'
const isTest = process.env.NODE_ENV === 'test'
let command = exec(
`mkdir -p ./dev-docker-data-cache && mkdir -p ./dev-docker-data-cache/node_modules && mkdir -p ./dev-docker-data-cache/redis-data`,
{
env: {
...process.env,
}
}
)
await waitForCommandStatusWithStdout(command, {onError: ()=>new Error('could not create dev-docker-data-cache directories')})
const child2 = spawn(
`docker-compose`,
[
"--project-name",
"safe-redis-leader",
"--project-directory",
"./docker/compose",
"-f",
"./docker/compose/test.yml",
"-f",
"./docker/compose/redis.yml",
"up",
// "--build"
],
{
env: {
...process.env,
COMPOSE_COMMAND: backendComposeCommand
},
stdio: 'inherit'
}
);
child2.on("exit", (code, signal)=>{
process.exit(code)
})
}
function waitForCommandStatusWithStdout(command, {onError}){
command.stdout.pipe(process.stdout)
command.stderr.pipe(process.stderr)
return new Promise((res,rej)=>command.on('close', (code) => {
if(code === 0){
res()
}
else{
rej(onError(code))
}
}))
}
run().catch((e)=>{
console.error(e)
process.exit(1)
})

5
package-lock.json generated Normal file
View File

@@ -0,0 +1,5 @@
{
"name": "safe-redis-leader",
"version": "0.0.1",
"lockfileVersion": 1
}

11
package.json Normal file
View File

@@ -0,0 +1,11 @@
{
"name": "safe-redis-leader",
"version": "0.0.1",
"description": "Redis leader election implementation that does not have any race conditions",
"main": "index.js",
"scripts": {
"test": "npm install && node ./docker/scripts/runner.js"
},
"author": "",
"license": "ISC"
}

BIN
src/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,4 @@
--reporter spec
--file ./mochaConfig/setup/index.js
--exclude node_modules/**/*
--timeout 10000

View File

@@ -0,0 +1,3 @@
console.log('hello from setup!')

1905
src/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

19
src/package.json Normal file
View File

@@ -0,0 +1,19 @@
{
"name": "safe-redis-leader",
"version": "0.0.1",
"description": "Redis leader election implementation that does not have any race conditions",
"main": "index.js",
"scripts": {
"test": "NODE_ENV=test NODE_PATH='./' mocha $DEBUG_NODE $WATCH --watch --inspect-brk=0.0.0:9229 --opts ./mochaConfig/mocha.opts ./src/**/*.test.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"chai": "^4.2.0",
"dotenv": "^8.2.0",
"lodash": "^4.17.14",
"mocha": "^6.2.2",
"nock": "^12.0.2",
"nodemon": "^2.0.4"
}
}

BIN
src/src/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,6 @@
describe("Main", function(){
it("should run", async function(){
console.log('it ran!')
})
})