mirror of
				https://github.com/lingble/safe-redis-leader.git
				synced 2025-10-30 20:17:48 +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