68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var cluster = require('cluster');
 | |
| var numCores = 2;
 | |
| //var numCores = require('os').cpus().length;
 | |
| var id = (cluster.isMaster && '0' || cluster.worker.id).toString();
 | |
| 
 | |
| function run() {
 | |
|   var mstore = require('./cluster');
 | |
| 
 | |
|   return mstore.create({
 | |
|       standalone: null
 | |
|     , serve: null
 | |
|     , connect: null
 | |
|   }).then(function (store) {
 | |
|     store.set('foo', 'bar', function (err) {
 | |
|       if (err) { console.error(err); return; }
 | |
| 
 | |
|       store.get('baz', function (err, data) {
 | |
|         if (err) { console.error(err); return; }
 | |
|         if (null !== data) {
 | |
|           console.error(id, 'should be null:', data);
 | |
|         }
 | |
|       });
 | |
| 
 | |
|       store.get('foo', function (err, data) {
 | |
|         if (err) { console.error(err); return; }
 | |
|         if ('bar' !== data) {
 | |
|           console.error(id, 'should be bar:', data);
 | |
|         }
 | |
| 
 | |
|         store.set('quux', { message: 'hey' }, function (/*err*/) {
 | |
|           store.get('quux', function (err, data) {
 | |
|             if (err) { console.error(err); return; }
 | |
|             if (!data || 'hey' !== data.message) {
 | |
|               console.error(id, "should be { message: 'hey' }:", data);
 | |
|             } else {
 | |
|               console.log('Are there any errors above? If not, we passed!');
 | |
|             }
 | |
|           });
 | |
|         });
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| }
 | |
| 
 | |
| if (cluster.isMaster) {
 | |
|   // not a bad idea to setup the master before forking the workers
 | |
|   run().then(function () {
 | |
|     var i;
 | |
| 
 | |
|     for (i = 1; i <= numCores; i += 1) {
 | |
|       cluster.fork();
 | |
|     }
 | |
|   });
 | |
| } else {
 | |
|   run();
 | |
| }
 | |
| 
 | |
| // The native Promise implementation ignores errors because... dumbness???
 | |
| process.on('unhandledPromiseRejection', function (err) {
 | |
|   console.error('Unhandled Promise Rejection');
 | |
|   console.error(err);
 | |
|   console.error(err.stack);
 | |
| 
 | |
|   process.exit(1);
 | |
| });
 |