mirror of
				https://github.com/lingble/safe-redis-leader.git
				synced 2025-10-31 20:48:05 +00:00 
			
		
		
		
	initial commit
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | dev-docker-data-cache | ||||||
|  | node_modules | ||||||
							
								
								
									
										13
									
								
								docker/compose/redis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								docker/compose/redis.yml
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										37
									
								
								docker/compose/test.yml
									
									
									
									
									
										Normal 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 | ||||||
							
								
								
									
										1
									
								
								docker/dockerfiles/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docker/dockerfiles/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | FROM node:12-alpine3.10 | ||||||
							
								
								
									
										71
									
								
								docker/scripts/runner.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								docker/scripts/runner.js
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | { | ||||||
|  |   "name": "safe-redis-leader", | ||||||
|  |   "version": "0.0.1", | ||||||
|  |   "lockfileVersion": 1 | ||||||
|  | } | ||||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/.DS_Store
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										4
									
								
								src/mochaConfig/mocha.opts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/mochaConfig/mocha.opts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --reporter spec  | ||||||
|  | --file ./mochaConfig/setup/index.js | ||||||
|  | --exclude node_modules/**/* | ||||||
|  | --timeout 10000 | ||||||
							
								
								
									
										3
									
								
								src/mochaConfig/setup/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/mochaConfig/setup/index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  | console.log('hello from setup!') | ||||||
							
								
								
									
										1905
									
								
								src/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1905
									
								
								src/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										19
									
								
								src/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/package.json
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/src/.DS_Store
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										6
									
								
								src/src/tests/index.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/src/tests/index.test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  |  | ||||||
|  | describe("Main", function(){ | ||||||
|  |   it("should run", async function(){ | ||||||
|  |     console.log('it ran!') | ||||||
|  |   }) | ||||||
|  | }) | ||||||
		Reference in New Issue
	
	Block a user
	 mike k
					mike k