Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of https://github.com/Flotype/now-tests

  • Loading branch information...
commit 253ad053d949100fc7dadf143be83988b07617e5 2 parents 61c11d7 + 4bca5e0
@DungFu DungFu authored
View
36 clusterclient/public/index.html
@@ -8,22 +8,44 @@
<script type="text/javascript" src="lib/jasmine-1.0.2/jasmine-html.js"></script>
<!-- include source files here... -->
+ <script type = "text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="nowjs/now.js"></script>
<script type="text/javascript" src="spec/SpecHelper.js"></script>
- <!-- include spec files here... -->
- <script type="text/javascript" src="spec/RemoteSpec.js"></script>
- <script type="text/javascript" src="spec/ScopeSpec.js"></script>
- <script type="text/javascript" src="spec/VariableSpec.js"></script>
+ <!-- include spec files here...
+ <script type="text/javascript" src="spec/RemoteSpec.js"></script> -->
+ <script type="text/javascript" src="spec/ScopeSpec.js"></script>
+ <script type="text/javascript" src="spec/VariableSpec.js"></script>
+ <script type="text/javascript" src="spec/ClusterSpec.js"></script>
</head>
<body>
<script type="text/javascript">
- now.ready(function(){
- jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
- jasmine.getEnv().execute();
+
+ $(document).ready(function(){
+ now.clientside = function(cb){
+ cb();
+ }
+
+ now.clientside2 = function(one, three){
+ one(function two(){
+ three();
+ });
+ }
+
+ now.getKey = function(key, cb){
+ cb(now[key]);
+ }
+
+
+ now.ready(function(){
+ jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
+ jasmine.getEnv().execute();
+ });
+
});
+
</script>
</body>
View
27 clusterclient/public/now.html
@@ -2,10 +2,33 @@
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
- <title>Now client</title>
+<title>Now client</title>
<!-- include source files here... -->
- <script type="text/javascript" src="http://localhost:81/nowjs/now.js"></script>
+<script type = "text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
+<script type="text/javascript"src="http://localhost:8080/nowjs/now.js"></script>
+
+<script type="text/javascript">
+ $(document).ready(function(){
+ now.clientside = function(cb){
+ cb();
+ }
+
+ now.clientside2 = function(one, three){
+ one(function two(){
+ three();
+ });
+ }
+
+ now.getKey = function(key, cb){
+ cb(now[key]);
+ }
+
+ });
+</script>
+
+
+
</head>
<body>
View
505 clusterclient/public/nowjs/now.js
@@ -0,0 +1,505 @@
+(function () {
+
+ var socket;
+ var closures = {};
+ var nowReady = false;
+ var readied = 0;
+ var lastTimeout;
+ var uri = 'http://localhost:8080';
+ var lb = '//localhost/server_info';
+
+ var fqnMap = {
+ data: {},
+
+ get: function (fqn) {
+ return fqnMap.data[fqn];
+ },
+
+ set: function (fqn, val) {
+ var lastIndex = fqn.lastIndexOf('.');
+ var parent = fqn.substring(0, lastIndex);
+ if (parent && !util.isArray(fqnMap.data[parent])) {
+ fqnMap.set(parent, []);
+ }
+ if (parent && fqnMap.data[fqn] === undefined)
+ fqnMap.data[parent].push(fqn.substring(lastIndex + 1));
+ return fqnMap.data[fqn] = val;
+ },
+
+ deleteVar: function (fqn) {
+ var lastIndex = fqn.lastIndexOf('.');
+ var parent = fqn.substring(0, lastIndex);
+
+ if (util.hasProperty(fqnMap.data, parent)) {
+ // Remove from its parent.
+ fqnMap.data[parent].splice(
+ util.indexOf(fqnMap.data[parent], fqn.substring(lastIndex + 1)),
+ 1);
+ }
+
+ if (util.isArray(fqnMap.data[fqn])) {
+ for (var i = 0; i < fqnMap.data[fqn].length; i++) {
+ // Recursive delete all children.
+ fqnMap.deleteVar(fqn + '.' + fqnMap.data[fqn][i]);
+ }
+ }
+ delete fqnMap.data[fqn];
+ }
+ };
+
+ var util = {
+ _events: {},
+ // Event code from socket.io
+ on: function (name, fn) {
+ if (!(util.hasProperty(util._events, name))) {
+ util._events[name] = [];
+ }
+ util._events[name].push(fn);
+ return util;
+ },
+
+ indexOf: function(arr, val) {
+ for(var i = 0, ii = arr.length; i < ii; i++){
+ if(arr[i] == val){
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ emit: function (name, args) {
+ if (util.hasProperty(util._events, name)) {
+ var events = util._events[name].slice(0);
+ for (var i = 0, ii = events.length; i < ii; i++) {
+ events[i].apply(util, args === undefined ? [] : args);
+ }
+ }
+ return util;
+ },
+ removeEvent: function (name, fn) {
+ if (util.hasProperty(util._events, name)) {
+ for (var a = 0, l = util._events[name].length; a < l; a++) {
+ if (util._events[name][a] == fn) {
+ util._events[name].splice(a, 1);
+ }
+ }
+ }
+ return util;
+ },
+
+ hasProperty: function (obj, prop) {
+ return Object.prototype.hasOwnProperty.call(Object(obj), prop);
+ },
+ isArray: Array.isArray || function (obj) {
+ return Object.prototype.toString.call(obj) === '[object Array]';
+ },
+
+ createVarAtFqn: function (scope, fqn, value) {
+ var path = fqn.split('.');
+ var currVar = util.forceGetParentVarAtFqn(scope, fqn);
+ var key = path.pop();
+ fqnMap.data[fqn] = value;
+ currVar[key] = value;
+ if (!(isIE || util.isArray(currVar))) {
+ util.watch(currVar, key, fqn);
+ }
+ },
+
+ forceGetParentVarAtFqn: function (scope, fqn) {
+ var path = fqn.split('.');
+ path.shift();
+
+ var currVar = scope;
+ while (path.length > 1) {
+ var prop = path.shift();
+ if (!util.hasProperty(currVar, prop)) {
+ if (!isNaN(path[0])) {
+ currVar[prop] = [];
+ } else {
+ currVar[prop] = {};
+ }
+ }
+ currVar = currVar[prop];
+ }
+ return currVar;
+ },
+
+ getVarFromFqn: function (scope, fqn) {
+ var path = fqn.split('.');
+ path.shift();
+ var currVar = scope;
+ while (path.length > 0) {
+ var prop = path.shift();
+ if (util.hasProperty(currVar, prop)) {
+ currVar = currVar[prop];
+ } else {
+ return false;
+ }
+ }
+ return currVar;
+ },
+
+ generateRandomString: function () {
+ return Math.random().toString().substr(2);
+ },
+
+ getValOrFqn: function(val, fqn) {
+ if (typeof val === 'function') {
+ if (val.remote) {
+ return undefined;
+ }
+ return {fqn: fqn};
+ } else {
+ return val;
+ }
+ },
+
+ watch: function (obj, label, fqn) {
+ var val = obj[label];
+ function getter () {
+ return val;
+ };
+ function setter (newVal) {
+ if (val !== newVal && newVal !== fqnMap.get(fqn)) {
+ // trigger some sort of change.
+ if (val && typeof val === 'object') {
+ fqnMap.deleteVar(fqn);
+ lib.processScope(obj, fqn.substring(0, fqn.lastIndexOf('.')));
+ return undefined;
+ }
+ val = newVal;
+ if (newVal && typeof newVal === 'object') {
+ fqnMap.deleteVar(fqn);
+ lib.processScope(newVal, fqn);
+ return undefined;
+ }
+ fqnMap.set(fqn, newVal);
+ if (typeof newVal === 'function') {
+ newVal = {fqn: fqn};
+ }
+ var obj = {};
+ obj[fqn] = newVal;
+ socket.emit('rv', obj);
+ }
+ return newVal;
+ };
+ if (Object.defineProperty) {
+ Object.defineProperty(obj, label, {get: getter, set: setter});
+ } else {
+ if (obj.__defineGetter__) {
+ obj.__defineGetter__(label, getter);
+ }
+ if (obj.__defineSetter__) {
+ obj.__defineSetter__(label, setter);
+ }
+ }
+ }
+ };
+
+ var now = {
+ ready: function (func) {
+ if (arguments.length === 0) {
+ util.emit('ready');
+ } else {
+ if (nowReady) {
+ func();
+ }
+ util.on('ready', func);
+ }
+ },
+ core: {
+ on: util.on,
+ options:{},
+ removeEvent: util.removeEvent,
+ clientId: undefined
+ }
+ };
+
+ // Needs to be easily configurable.
+ window.now = now;
+
+ var isIE = (function () {
+ try {
+ Object.defineProperty({}, '', {});
+ return false;
+ } catch (err) {
+ return true;
+ }
+ return true;
+ })();
+
+ var lib = {
+
+ deleteVar: function (fqn) {
+ var path, currVar, parent, key;
+ path = fqn.split('.');
+ currVar = now;
+ for (var i = 1; i < path.length; i++) {
+ key = path[i];
+ if (currVar === undefined) {
+ // delete from fqnMap, just to be safe.
+ fqnMap.deleteVar(fqn);
+ return;
+ }
+ if (i === path.length - 1) {
+ delete currVar[path.pop()];
+ fqnMap.deleteVar(fqn);
+ return;
+ }
+ currVar = currVar[key];
+ }
+ },
+
+ replaceVar: function (data) {
+ for (var fqn in data) {
+ if (util.hasProperty(data[fqn], 'fqn')) {
+ data[fqn] = lib.constructRemoteFunction(fqn);
+ }
+ util.createVarAtFqn(now, fqn, data[fqn]);
+ }
+ },
+
+ remoteCall: function (data) {
+ var func;
+ // Retrieve the function, either from closures hash or from the now scope
+ if (data.fqn.split('_')[0] === 'closure') {
+ func = closures[data.fqn];
+ } else {
+ func = util.getVarFromFqn(now, data.fqn);
+ }
+ var args = data.args;
+
+ if (typeof args === 'object' && !util.isArray(args)) {
+ var newargs = [];
+ // Enumeration order is not defined so this might be useless,
+ // but there will be cases when it works
+ for (var i in args) {
+ newargs.push(args[i]);
+ }
+ args = newargs;
+ }
+
+ // Search (only at top level) of args for functions parameters,
+ // and replace with wrapper remote call function
+ for (var i = 0, ii = args.length; i < ii; i++) {
+ if (util.hasProperty(args[i], 'fqn')) {
+ args[i] = lib.constructRemoteFunction(args[i].fqn);
+ }
+ }
+ func.apply({now: now}, args);
+ },
+
+ // Handle the ready message from the server
+ serverReady: function() {
+ nowReady = true;
+ lib.processNowScope();
+ util.emit('ready');
+ },
+
+ constructRemoteFunction: function (fqn) {
+ var remoteFn = function () {
+ lib.processNowScope();
+ var args = [];
+ for (var i = 0, ii = arguments.length; i < ii; i++)
+ args[i] = arguments[i];
+ for (i = 0, ii = args.length; i < ii; i++) {
+ if (typeof args[i] === 'function') {
+ var closureId = 'closure_' + args[i].name + '_' + util.generateRandomString();
+ closures[closureId] = args[i];
+ args[i] = {fqn: closureId};
+ }
+ }
+ socket.emit('rfc', {fqn: fqn, args: args});
+ };
+ remoteFn.remote = true;
+ return remoteFn;
+ },
+ handleNewConnection: function (socket) {
+ if (socket.handled) return;
+ socket.handled = true;
+
+ socket.on('rfc', function (data) {
+ lib.remoteCall(data);
+ util.emit('rfc', data);
+ });
+ socket.on('rv', function (data) {
+ lib.replaceVar(data);
+ util.emit('rv', data);
+ });
+ socket.on('del', function (data) {
+ lib.deleteVar(data);
+ util.emit('del', data);
+ });
+
+ // Handle the ready message from the server
+ socket.on('rd', function(data){
+ if (++readied == 2)
+ lib.serverReady();
+ });
+
+ socket.on('disconnect', function () {
+ readied = 0;
+ util.emit('disconnect');
+ });
+ // Forward planning for socket io 0.7
+ socket.on('error', function () {
+ util.emit('error');
+ });
+ socket.on('retry', function () {
+ util.emit('retry');
+ });
+ socket.on('reconnect', function () {
+ util.emit('reconnect');
+ });
+ socket.on('reconnect_failed', function () {
+ util.emit('reconnect_failed');
+ requestServerInfo();
+ });
+ socket.on('connect_failed', function () {
+ util.emit('connect_failed');
+ });
+ },
+ processNowScope: function () {
+ lib.processScope(now, 'now');
+ clearTimeout(lastTimeout);
+ if (socket.socket.connected)
+ lastTimeout = setTimeout(lib.processNowScope, 1000);
+ },
+ processScope: function (obj, path) {
+ var data = {};
+ lib.traverseScope(obj, path, data);
+ // Send only for non-empty object
+ for (var i in data) {
+ if(util.hasProperty(data, i) && data[i] !== undefined) {
+ socket.emit('rv', data);
+ break;
+ }
+ }
+ },
+ traverseScope: function (obj, path, data) {
+ if (obj && typeof obj === 'object') {
+ var objIsArray = util.isArray(obj);
+ var keys = fqnMap.get(path);
+
+ for (var key in obj) {
+ var fqn = path + '.' + key;
+ var val = obj[key];
+
+ if (fqn === 'now.core' || fqn === 'now.ready') {
+ continue;
+ }
+ var type = typeof val;
+ if (util.hasProperty(obj, key)) {
+ if (isIE || objIsArray) {
+ if(!(val && type === 'object') && fqnMap.get(fqn) !== val) {
+ fqnMap.set(fqn, val);
+ data[fqn] = util.getValOrFqn(val, fqn);
+ }
+ } else {
+ if (fqnMap.get(fqn) === undefined) {
+ util.watch(obj, key, fqn);
+ if (type !== 'object' || !val) {
+ fqnMap.set(fqn, val);
+ data[fqn] = util.getValOrFqn(val, fqn);
+ }
+ }
+ }
+ }
+ lib.traverseScope(val, fqn, data);
+ }
+ if (keys && typeof keys === 'object') {
+ var toDelete = [];
+ // Scan for deleted keys.
+ for (var i = 0; i < keys.length; i++) {
+ if (obj[keys[i]] === undefined) {
+ toDelete.push(path + '.' + keys[i]);
+ fqnMap.deleteVar(path + '.' + keys[i]);
+ }
+ }
+ // Send message to server to delete from its database.
+ if (toDelete.length > 0) {
+ socket.emit('del', toDelete);
+ }
+ }
+ }
+ }
+ };
+
+ var dependencies = [
+ { key: 'io', path: '/socket.io/socket.io.js'}
+ ];
+ var dependenciesLoaded = 0;
+
+ window.createConnection = function (uri) {
+ socket = io.connect("//" + uri.host + ":" + uri.port + "/", now.core.options.socketio || {});
+ now.core.socketio = socket;
+ socket.on('connect', function () {
+ now.core.clientId = socket.socket.sessionid;
+ lib.handleNewConnection(socket);
+ // Begin intermittent scope traversal
+
+ setTimeout(function(){
+ lib.processNowScope();
+ socket.emit('rd');
+ if (++readied == 2) {
+ nowReady = true;
+ util.emit('ready');
+ }
+ }, 100);
+
+ util.emit('connect');
+ });
+ socket.on('disconnect', function () {
+ // y-combinator trick
+ (function (y) {
+ y(y, now);
+ })(function (fn, obj) {
+ for (var i in obj) {
+ if (obj[i] && typeof obj[i] === 'object' &&
+ obj[i] != document && obj[i] !== now.core) {
+ fn(fn, obj[i]);
+ }
+ else if (typeof obj[i] === 'function' && obj[i].remote) {
+ delete obj[i];
+ }
+ }
+ });
+
+ // Clear all sorts of stuff in preparation for reconnecting.
+ fqnMap.data = {};
+ });
+ };
+ var requestServerInfo = function () {
+ // JSONP
+ var s = document.createElement('script');
+ s.setAttribute('src', lb);
+ document.getElementsByTagName('head')[0].appendChild(s);
+ };
+
+ var scriptLoaded = function () {
+ dependenciesLoaded++;
+ if (dependenciesLoaded !== dependencies.length) {
+ return;
+ }
+ requestServerInfo();
+ };
+
+ for (var i=0, ii=dependencies.length; i < ii; i++) {
+ if (window[dependencies[i]['key']]) {
+ scriptLoaded();
+ return;
+ }
+ var fileref=document.createElement('script');
+ fileref.setAttribute('type','text/javascript');
+ fileref.setAttribute('src', uri+dependencies[i]['path']);
+ fileref.onload = scriptLoaded;
+ if (isIE) {
+ fileref.onreadystatechange = function () {
+ if (fileref.readyState === 'loaded' || fileref.readyState === 'complete' ) {
+ scriptLoaded();
+ }
+ };
+ }
+ document.getElementsByTagName('head')[0].appendChild(fileref);
+ }
+})();
View
225 clusterclient/public/spec/ClusterSpec.js
@@ -0,0 +1,225 @@
+describe("Cluster-specific functionality", function(){
+
+ it("can call a group multicaller of a server-side function, callback defined on server A", function(){
+ var success = false;
+
+ //Get the count for everyone
+ now.callFunction("everyone.now.serverside", function(count, total){
+ success = (count == total);
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by server", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can call a group multicall of a function server-side function, callback defined on client 1", function(){
+ var success = false;
+ var count = 0;
+ now.getCount("everyone", function(total){
+ now.callFunctionWithCallback("everyone.now.serverside", function(){
+ success = (++count == total);
+ });
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can call a group multicaller of a client-side function, callback defined on server A", function(){
+ var success = false;
+
+ //Get the count for everyone
+ now.callFunction("everyone.now.clientside", function(count, total){
+ success = (count == total);
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by server", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can call a group multicaller of a client-side function, callback defined on c1", function(){
+ var success = false;
+ var count = 0;
+ now.getCount("everyone", function(total){
+ now.callFunctionWithCallback("everyone.now.serverside", function(){
+ success = (++count == total);
+ });
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by server", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can pass a callback as an arg to a sA->sB callback", function(){
+
+ var success = false;
+
+ //Get the count for everyone
+ now.callFunctionExpectCallback("everyone.now.serverside2", function(result){
+ success = result;
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by server", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+ });
+
+ it("can pass a callback as an arg to a c1->sB callback", function(){
+ var success = false;
+ var count = 0;
+
+ now.getCount("everyone", function(total){
+ now.callFunctionWithCallbackExpectCallback("everyone.now.serverside2",
+ function one(two){two();},
+ function three(){
+ console.log(count + 1);
+ console.log(total);
+ success = (++count == total);});
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can pass a callback as an arg to a sA->c2 callback", function(){
+
+ var success = false;
+
+ //Get the count for everyone
+ now.callFunctionExpectCallback("everyone.now.clientside2", function(result){
+ success = result;
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by server", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can pass a callback as an arg to a c1->c2 callback", function(){
+ var success = false;
+ var count = 0;
+
+ now.getCount("everyone", function(total){
+ now.callFunctionWithCallbackExpectCallback("everyone.now.clientside2",
+ function one(two){two();},
+ function three(){
+ console.log(count + 1);
+ console.log(total);
+ success = (++count == total);});
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "all callbacks to be received by client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+ });
+
+ it("can get remote client and set a primitive variable", function(){
+ var success = false;
+
+ now.setVarOnClient(function(result){
+ success = result;
+ });
+
+ waitsFor(function(){return success;}, "value to get set on remote client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can get a remote client and delete a variable", function(){
+
+ var success = false;
+
+ now.delVarOnClient(function(result){
+ success = result;
+ });
+
+ waitsFor(function(){return success;}, "value to get set on remote client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can get a remote client and call a server-side function, c1 callback", function(){
+
+ var success = false;
+ now.callRemoteClientFn("serverside", function(){
+ success = true;
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "callback to be called by remote client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+ it("can get a remote client and call a client-side function, c1 callback", function(){
+
+ var success = false;
+ now.callRemoteClientFn("clientside", function(){
+ success = true;
+ });
+
+ waitsFor(function(){
+ return success;
+ }, "callback to be called by remote client", 2000);
+
+ runs(function(){
+ expect(success).toBeTruthy();
+ });
+
+ });
+
+
+});
View
2  clusterclient/public/spec/ScopeSpec.js
@@ -44,8 +44,6 @@ describe("Server scoping tests", function() {
now.joinGroup(group);
now.setGroupValue(group, key, val);
-
-
runs(function(){
window2 = SpecHelper.generateIFrame('now.html');
});
View
128 clusterclient/slave.js
@@ -1,3 +1,10 @@
+var sys = require('sys'),
+fs = require('fs'),
+spawn = require('child_process').spawn;
+
+//var child = spawn('node', ['slave']);
+
+
var static = require('node-static');
//
@@ -6,15 +13,122 @@ var static = require('node-static');
var file = new(static.Server)(__dirname+'/public', {cache: 0});
var server = require('http').createServer(function (request, response) {
- request.addListener('end', function () {
- file.serve(request, response);
- });
+ request.addListener('end', function () {
+ file.serve(request, response);
+ });
});
-var nowjs = require('now');
+var nowjs = require('now-cluster');
+server.listen(8081);
+var everyone = nowjs.initialize(server, {redis: {host: '127.0.0.1'}, socketio: {"log level": 1}});
+
-var everyone = nowjs.initialize(server);
+everyone.now.callRemoteClientFn = function(name, cb){
+ everyone.getUsers(function(users){
+ var rand = Math.floor(Math.random()*(users.length));
+ var remote = users[rand];
+ nowjs.getClient(remote, function(){
+ var fn = this.now[name];
+ fn(cb);
+ });
+
+ });
+}
+
+everyone.now.callClientFn = function(name, args){
+ theFunction = this.now[name];
+ theFunction.apply(null, args);
+}
+everyone.now.setVarOnClient = function(cb){
+
+ var key = Math.random().toString().substring(2);
+ var val = Math.random().toString().substring(2);
+
+ everyone.getUsers(function(users){
+ var rand = Math.floor(Math.random()*(users.length));
+ var remote = users[rand];
+
+ nowjs.getClient(remote, function(){
+ this.now[key] = val;
+ var user = this;
+ this.now.getKey(key, function(trueVal){
+ cb(trueVal == val);
+ });
+ });
+
+ });
+}
+
+everyone.now.delVarOnClient = function(cb){
+ var key = Math.random().toString().substring(2);
+ var val = Math.random().toString().substring(2);
+
+ everyone.getUsers(function(users){
+ var rand = Math.floor(Math.random()*(users.length));
+ var remote = users[rand];
+
+ nowjs.getClient(remote, function(){
+ this.now[key] = val;
+ var user = this;
+ this.now.getKey(key, function(valOne){
+ if(valOne == val){
+ delete user.now[key];
+ user.now.getKey(key, function(valTwo){
+ cb(valTwo == undefined);
+ });
+ }
+ });
+ });
+ });
+
+}
+
+everyone.now.getCount = function(groupName, cb){
+ nowjs.getGroup(groupName).count(cb);
+}
+
+everyone.now.callFunction = function(fqn, cb){
+ var theFunction = eval(fqn);
+ everyone.count(function(total){
+ var num = 0;
+ theFunction(function(){
+ num += 1;
+ cb(num, total);
+ });
+ });
+}
+
+everyone.now.callFunctionExpectCallback = function(fqn, clientCallback){
+ var theFunction = eval(fqn);
+ var num = 0;
+ everyone.count(function(total){
+ theFunction(function one(two){two();}, function three(){
+ num += 1;
+ if(num == total) clientCallback(true);
+ });
+ });
+}
+
+everyone.now.callFunctionWithCallback = function(fqn, cb){
+ var theFunction = eval(fqn);
+ theFunction(cb);
+}
+
+everyone.now.callFunctionWithCallbackExpectCallback = function(fqn, one, three){
+ theFunction = eval(fqn);
+ theFunction(one, three);
+}
+
+everyone.now.serverside2 = function(one, three){
+ one(function two(){
+ three();
+ });
+}
+
+everyone.now.serverside = function(cb){
+ cb();
+};
everyone.now.variableCheck = function(key, cb) {
cb(key, this.now[key]);
@@ -34,7 +148,8 @@ everyone.now.setEveryoneValue = function(key, val) {
}
everyone.now.setGroupValue = function(group, key, val) {
- nowjs.getGroup(group).now[key] = val;
+ var theGroup = nowjs.getGroup(group)
+ theGroup.now[key] = val;
}
everyone.now.setValue = function(key, val){
@@ -49,4 +164,3 @@ everyone.now.joinGroup = function(group) {
nowjs.getGroup(group).addUser(this.user.clientId);
}
-server.listen(81)
View
128 clusterclient/testserver.js
@@ -1,8 +1,8 @@
var sys = require('sys'),
- fs = require('fs'),
- spawn = require('child_process').spawn;
-
- var child = spawn('node', ['slave']);
+fs = require('fs'),
+spawn = require('child_process').spawn;
+
+//var child = spawn('node', ['slave']);
var static = require('node-static');
@@ -13,15 +13,121 @@ var static = require('node-static');
var file = new(static.Server)(__dirname+'/public', {cache: 0});
var server = require('http').createServer(function (request, response) {
- request.addListener('end', function () {
- file.serve(request, response);
- });
+ request.addListener('end', function () {
+ file.serve(request, response);
+ });
});
-var nowjs = require('now');
+var nowjs = require('now-cluster');
+server.listen(8080);
+var everyone = nowjs.initialize(server, {redis: {host: '127.0.0.1'}, socketio: {"log level": 1}});
+
+
+everyone.now.callRemoteClientFn = function(name, cb){
+ everyone.getUsers(function(users){
+ var rand = Math.floor(Math.random()*(users.length));
+ var remote = users[rand];
+ nowjs.getClient(remote, function(){
+ var fn = this.now[name];
+ fn(cb);
+ });
+ });
+}
+
+everyone.now.callClientFn = function(name, args){
+ theFunction = this.now[name];
+ theFunction.apply(null, args);
+}
+
+everyone.now.setVarOnClient = function(cb){
-var everyone = nowjs.initialize(server);
+ var key = Math.random().toString().substring(2);
+ var val = Math.random().toString().substring(2);
+ everyone.getUsers(function(users){
+ var rand = Math.floor(Math.random()*(users.length));
+ var remote = users[rand];
+
+ nowjs.getClient(remote, function(){
+ this.now[key] = val;
+ var user = this;
+ this.now.getKey(key, function(trueVal){
+ cb(trueVal == val);
+ });
+ });
+
+ });
+}
+
+everyone.now.delVarOnClient = function(cb){
+ var key = Math.random().toString().substring(2);
+ var val = Math.random().toString().substring(2);
+
+ everyone.getUsers(function(users){
+ var rand = Math.floor(Math.random()*(users.length));
+ var remote = users[rand];
+
+ nowjs.getClient(remote, function(){
+ this.now[key] = val;
+ var user = this;
+ this.now.getKey(key, function(valOne){
+ if(valOne == val){
+ delete user.now[key];
+ user.now.getKey(key, function(valTwo){
+ cb(valTwo == undefined);
+ });
+ }
+ });
+ });
+ });
+
+}
+
+everyone.now.getCount = function(groupName, cb){
+ nowjs.getGroup(groupName).count(cb);
+}
+
+everyone.now.callFunction = function(fqn, cb){
+ var theFunction = eval(fqn);
+ everyone.count(function(total){
+ var num = 0;
+ theFunction(function(){
+ num += 1;
+ cb(num, total);
+ });
+ });
+}
+
+everyone.now.callFunctionExpectCallback = function(fqn, clientCallback){
+ var theFunction = eval(fqn);
+ var num = 0;
+ everyone.count(function(total){
+ theFunction(function one(two){two();}, function three(){
+ num += 1;
+ if(num == total) clientCallback(true);
+ });
+ });
+}
+
+everyone.now.callFunctionWithCallback = function(fqn, cb){
+ var theFunction = eval(fqn);
+ theFunction(cb);
+}
+
+everyone.now.callFunctionWithCallbackExpectCallback = function(fqn, one, three){
+ theFunction = eval(fqn);
+ theFunction(one, three);
+}
+
+everyone.now.serverside2 = function(one, three){
+ one(function two(){
+ three();
+ });
+}
+
+everyone.now.serverside = function(cb){
+ cb();
+};
everyone.now.variableCheck = function(key, cb) {
cb(key, this.now[key]);
@@ -41,7 +147,8 @@ everyone.now.setEveryoneValue = function(key, val) {
}
everyone.now.setGroupValue = function(group, key, val) {
- nowjs.getGroup(group).now[key] = val;
+ var theGroup = nowjs.getGroup(group)
+ theGroup.now[key] = val;
}
everyone.now.setValue = function(key, val){
@@ -56,4 +163,3 @@ everyone.now.joinGroup = function(group) {
nowjs.getGroup(group).addUser(this.user.clientId);
}
-server.listen(80)
View
1,399 npm-debug.log
@@ -0,0 +1,1399 @@
+info it worked if it ends with ok
+verbose cli [ 'node',
+verbose cli '/usr/local/bin/npm',
+verbose cli 'install',
+verbose cli 'express',
+verbose cli 'socket.io' ]
+info using npm@1.0.6
+info using node@v0.4.5
+verbose config file /home/Eric/.npmrc
+verbose config file /usr/local/etc/npmrc
+silly testEngine { name: 'ejs',
+silly testEngine description: 'Embedded JavaScript templates',
+silly testEngine version: '0.4.2',
+silly testEngine author:
+silly testEngine { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine keywords: [ 'template', 'engine', 'ejs' ],
+silly testEngine main: './lib/ejs.js',
+silly testEngine dependencies: {},
+silly testEngine devDependencies: {},
+silly testEngine _id: 'ejs@0.4.2',
+silly testEngine engines: { node: '*' },
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/ejs/package.json
+verbose loadDefaults ejs@0.4.2
+silly testEngine { name: 'node-static',
+silly testEngine description: 'simple, compliant file streaming module for node',
+silly testEngine url: 'http://github.com/cloudhead/node-static',
+silly testEngine keywords: [ 'http', 'static', 'file', 'server' ],
+silly testEngine author:
+silly testEngine { name: 'Alexis Sellier',
+silly testEngine email: 'self@cloudhead.net' },
+silly testEngine contributors: [],
+silly testEngine licenses: [ 'MIT' ],
+silly testEngine dependencies: {},
+silly testEngine lib: 'lib',
+silly testEngine main: './lib/node-static',
+silly testEngine version: '0.5.6',
+silly testEngine directories: { test: './test' },
+silly testEngine engines: { node: '>= 0.4.1' },
+silly testEngine devDependencies: {},
+silly testEngine _id: 'node-static@0.5.6',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/node-static/package.json
+verbose loadDefaults node-static@0.5.6
+silly testEngine { author: { name: 'Flotype' },
+silly testEngine name: 'now',
+silly testEngine version: '0.7.0',
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/Flotype/now.git' },
+silly testEngine main: 'lib/server.js',
+silly testEngine engines: { node: '>= v0.4.0' },
+silly testEngine dependencies: { 'socket.io': '0.7.2', 'node-proxy': '0.4.0' },
+silly testEngine devDependencies: {},
+silly testEngine _id: 'now@0.7.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/now/package.json
+verbose loadDefaults now@0.7.0
+silly testEngine { author: { name: 'Flotype' },
+silly testEngine name: 'now',
+silly testEngine version: '0.7.0',
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/Flotype/now.git' },
+silly testEngine main: 'lib/server.js',
+silly testEngine engines: { node: '>= v0.4.0' },
+silly testEngine dependencies: { 'socket.io': '0.7.2', 'node-proxy': '0.4.0' },
+silly testEngine devDependencies: {},
+silly testEngine _id: 'now@0.7.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/now-cluster/package.json
+verbose loadDefaults now@0.7.0
+silly testEngine { name: 'irc',
+silly testEngine description: 'An IRC client library for node',
+silly testEngine version: '0.2.0',
+silly testEngine author:
+silly testEngine { name: 'Martyn Smith',
+silly testEngine email: 'martyn@dollyfish.net.nz' },
+silly testEngine contributors: [],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/martynsmith/node-irc.git' },
+silly testEngine bugs:
+silly testEngine { email: 'martyn@dollyfish.net.nz',
+silly testEngine url: 'http://github.com/martynsmith/node-irc/issues' },
+silly testEngine main: 'lib/irc',
+silly testEngine engines: { node: '>=0.1.91' },
+silly testEngine licenses:
+silly testEngine [ { type: 'GPL',
+silly testEngine url: 'http://github.com/martynsmith/node-irc/raw/master/COPYING' } ],
+silly testEngine dependencies: {},
+silly testEngine devDependencies: {},
+silly testEngine _id: 'irc@0.2.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/irc/package.json
+verbose loadDefaults irc@0.2.0
+silly testEngine { name: 'node-proxy',
+silly testEngine version: '0.4.0',
+silly testEngine description: 'A module for node implementing __noSuchMethod__-type handlers, such as object overloading, as part of the Harmony Catch-All Proxies specification found at http://wiki.ecmascript.org/doku.php?id=harmony:proxies',
+silly testEngine keywords:
+silly testEngine [ 'interceptor',
+silly testEngine 'proxy',
+silly testEngine 'overload',
+silly testEngine '__noSuchMethod__' ],
+silly testEngine contributors:
+silly testEngine [ { name: 'Sam Shull',
+silly testEngine email: 'http://www.google.com/profiles/brickysam26' } ],
+silly testEngine licenses:
+silly testEngine [ { type: 'MIT',
+silly testEngine url: 'http://www.opensource.org/licenses/mit-license.html' } ],
+silly testEngine bugs: { url: 'http://github.com/samshull/node-proxy/issues' },
+silly testEngine implements: [ 'http://wiki.ecmascript.org/doku.php?id=harmony:proxies' ],
+silly testEngine engines: { node: '>=0.1.103' },
+silly testEngine repositories:
+silly testEngine [ { type: 'git',
+silly testEngine url: 'http://github.com/samshull/node-proxy' } ],
+silly testEngine main: './lib/node-proxy.node',
+silly testEngine scripts: { install: 'make' },
+silly testEngine dependencies: {},
+silly testEngine devDependencies: {},
+silly testEngine _id: 'node-proxy@0.4.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/node-proxy/package.json
+verbose loadDefaults node-proxy@0.4.0
+silly testEngine { name: 'jasmine-node',
+silly testEngine version: '1.0.6',
+silly testEngine description: 'DOM-less simple JavaScript BDD testing framework for Node',
+silly testEngine homepage:
+silly testEngine [ 'http://pivotal.github.com/jasmine',
+silly testEngine 'https://github.com/mhevery/jasmine-node' ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/mhevery/jasmine-node.git' },
+silly testEngine keywords: [ 'testing', 'bdd' ],
+silly testEngine author: { name: 'Misko Hevery', email: 'misko@hevery.com' },
+silly testEngine contributors:
+silly testEngine [ { name: 'Rajan Agaskar' },
+silly testEngine { name: 'Christian Williams' },
+silly testEngine { name: 'Davis W. Frank',
+silly testEngine email: 'dwfrank@pivotallabs.com' },
+silly testEngine { name: 'Matteo Collina',
+silly testEngine email: 'matteo.collina@gmail.com' } ],
+silly testEngine maintainers: 'Martin Häger <martin.haeger@gmail.com>',
+silly testEngine licenses: [ 'MIT' ],
+silly testEngine dependencies: { 'coffee-script': '>=1.0.1' },
+silly testEngine bin: { 'jasmine-node': 'bin/jasmine-node' },
+silly testEngine main: 'lib/jasmine-node',
+silly testEngine devDependencies: {},
+silly testEngine _id: 'jasmine-node@1.0.6',
+silly testEngine engines: { node: '*' },
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true }
+verbose caching /home/Eric/node_modules/jasmine-node/package.json
+verbose loadDefaults jasmine-node@1.0.6
+verbose into /home/Eric [ 'express', 'socket.io' ]
+verbose cache add [ 'express', null ]
+verbose cache add [ 'socket.io', null ]
+info addNamed [ 'express', '' ]
+verbose addNamed [ null, '' ]
+info addNamed [ 'socket.io', '' ]
+verbose addNamed [ null, '' ]
+verbose GET socket.io
+verbose raw, before any munging socket.io
+verbose url resolving [ 'http://registry.npmjs.org/', './socket.io' ]
+verbose url resolved http://registry.npmjs.org/socket.io
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/socket.io',
+verbose url parsed href: 'http://registry.npmjs.org/socket.io' }
+verbose etag "338EFNNHE8Y35QE0SV4HCEAK3"
+verbose GET express
+verbose raw, before any munging express
+verbose url resolving [ 'http://registry.npmjs.org/', './express' ]
+verbose url resolved http://registry.npmjs.org/express
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/express',
+verbose url parsed href: 'http://registry.npmjs.org/express' }
+verbose etag "67VXW57M7YQMTDU6QYVYH3C9D"
+verbose response http://registry.npmjs.org/socket.io
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"338EFNNHE8Y35QE0SV4HCEAK3"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:34 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag socket.io from cache
+verbose GET socket.io/0.7.6
+verbose raw, before any munging socket.io/0.7.6
+verbose url resolving [ 'http://registry.npmjs.org/', './socket.io/0.7.6' ]
+verbose url resolved http://registry.npmjs.org/socket.io/0.7.6
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/socket.io/0.7.6',
+verbose url parsed href: 'http://registry.npmjs.org/socket.io/0.7.6' }
+verbose etag "338EFNNHE8Y35QE0SV4HCEAK3"
+verbose response http://registry.npmjs.org/express
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"67VXW57M7YQMTDU6QYVYH3C9D"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:34 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag express from cache
+verbose GET express/2.4.0
+verbose raw, before any munging express/2.4.0
+verbose url resolving [ 'http://registry.npmjs.org/', './express/2.4.0' ]
+verbose url resolved http://registry.npmjs.org/express/2.4.0
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/express/2.4.0',
+verbose url parsed href: 'http://registry.npmjs.org/express/2.4.0' }
+verbose etag "67VXW57M7YQMTDU6QYVYH3C9D"
+verbose response http://registry.npmjs.org/socket.io/0.7.6
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"338EFNNHE8Y35QE0SV4HCEAK3"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:34 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag socket.io/0.7.6 from cache
+verbose bin dist [ '0.4-ares1.7.4-ev4.4-openssl0.9.8r-v83.1.8.8-cygwin-1.7.9(0.237/5/3)',
+verbose bin dist { shasum: 'fef3bfd02951b2b06950f7c8e6912641abb2834f',
+verbose bin dist tarball: 'http://registry.npmjs.org/socket.io/-/socket.io-0.7.6.tgz' } ]
+verbose addRemoteTarball [ 'http://registry.npmjs.org/socket.io/-/socket.io-0.7.6.tgz',
+verbose addRemoteTarball 'fef3bfd02951b2b06950f7c8e6912641abb2834f' ]
+verbose mkdir done: /tmp/npm-1309901555215/1309901555215-0.9472378857899457 755
+info fetch http://registry.npmjs.org/socket.io/-/socket.io-0.7.6.tgz
+verbose fetch to /tmp/npm-1309901555215/1309901555215-0.9472378857899457/tmp.tgz
+verbose response http://registry.npmjs.org/express/2.4.0
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"67VXW57M7YQMTDU6QYVYH3C9D"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:35 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag express/2.4.0 from cache
+verbose bin dist [ '0.4-ares1.7.4-ev4.4-openssl0.9.8r-v83.1.8.8-cygwin-1.7.9(0.237/5/3)',
+verbose bin dist { shasum: 'c6cad05e9ec481a91e3817ca25cfd55ea37c00ce',
+verbose bin dist tarball: 'http://registry.npmjs.org/express/-/express-2.4.0.tgz' } ]
+verbose addRemoteTarball [ 'http://registry.npmjs.org/express/-/express-2.4.0.tgz',
+verbose addRemoteTarball 'c6cad05e9ec481a91e3817ca25cfd55ea37c00ce' ]
+verbose mkdir done: /tmp/npm-1309901555215/1309901555388-0.8886940085794777 755
+info fetch http://registry.npmjs.org/express/-/express-2.4.0.tgz
+verbose fetch to /tmp/npm-1309901555215/1309901555388-0.8886940085794777/tmp.tgz
+silly updated sha bytes 40960
+silly updated sha bytes 13031
+info shasum fef3bfd02951b2b06950f7c8e6912641abb2834f
+info shasum /tmp/npm-1309901555215/1309901555215-0.9472378857899457/tmp.tgz
+verbose mkdir done: /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package
+silly gunzTarPerm modes [ '755', '644' ]
+silly updated sha bytes 30861
+info shasum c6cad05e9ec481a91e3817ca25cfd55ea37c00ce
+info shasum /tmp/npm-1309901555215/1309901555388-0.8886940085794777/tmp.tgz
+verbose mkdir done: /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package
+silly gunzTarPerm modes [ '755', '644' ]
+verbose success gzip "--decompress" "--stdout" "/tmp/npm-1309901555215/1309901555215-0.9472378857899457/tmp.tgz"
+verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm"
+verbose success gzip "--decompress" "--stdout" "/tmp/npm-1309901555215/1309901555388-0.8886940085794777/tmp.tgz"
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/.gitignore
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/.npmignore
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/History.md
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/index.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/Makefile
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/package.json
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/Readme.md
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/logger.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/manager.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/namespace.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/parser.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/socket.io.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/socket.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/store.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transport.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/util.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/stores/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/stores/redis.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/stores/memory.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/htmlfile.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/flashsocket.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/http-polling.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/http.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/index.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/jsonp-polling.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/websocket.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib/transports/xhr-polling.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/logger.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/namespace.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/manager.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/parser.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/socket.io.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/store.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/socket.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transport.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/util.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/stores/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/stores/memory.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/htmlfile.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/http-polling.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/http.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/index.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/websocket.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/jsonp-polling.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/lib-cov/transports/xhr-polling.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/app.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/index.jade
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/layout.jade
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/package.json
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/public/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/public/js/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package/new-old/public/js/main.js
+verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm"
+verbose gunzed /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package
+verbose rm'ed /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/.npmignore
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/index.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/History.md
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/LICENSE
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/Makefile
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/package.json
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/Readme.md
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/bin/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/bin/express
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/express.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/request.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/https.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/http.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/response.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/utils.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/view.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/view/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/view/partial.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/view/view.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/router/
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/router/collection.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/router/index.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/router/methods.js
+silly asyncMap in gTP /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package/lib/router/route.js
+verbose renamed [ '/tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/___package.npm/package',
+verbose renamed '/tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package' ]
+verbose gunzed /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package
+silly testEngine { name: 'socket.io',
+silly testEngine version: '0.7.6',
+silly testEngine description: 'Realtime apps made cross-browser & easy with a WebSocket-like API',
+silly testEngine homepage: 'http://socket.io',
+silly testEngine keywords:
+silly testEngine [ 'websocket',
+silly testEngine 'socket',
+silly testEngine 'realtime',
+silly testEngine 'socket.io',
+silly testEngine 'comet',
+silly testEngine 'ajax' ],
+silly testEngine author:
+silly testEngine { name: 'Guillermo Rauch',
+silly testEngine email: 'guillermo@learnboost.com' },
+silly testEngine contributors:
+silly testEngine [ { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' },
+silly testEngine { name: 'Arnout Kazemier',
+silly testEngine email: 'info@3rd-eden.com' },
+silly testEngine { name: 'Vladimir Dronnikov',
+silly testEngine email: 'dronnikov@gmail.com' } ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/LearnBoost/Socket.IO-node.git' },
+silly testEngine dependencies:
+silly testEngine { 'socket.io-client': '0.7.3',
+silly testEngine policyfile: '0.0.3',
+silly testEngine redis: '0.6.0' },
+silly testEngine devDependencies: { expresso: '0.7.7', should: '0.0.4' },
+silly testEngine main: 'index',
+silly testEngine engines: { node: '>= 0.4.0' },
+silly testEngine _id: 'socket.io@0.7.6',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine path: '/tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package' }
+verbose caching /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package/package.json
+verbose loadDefaults socket.io@0.7.6
+verbose rm'ed /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package
+verbose tarball contents [ 'package' ]
+verbose renamed [ '/tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/___package.npm/package',
+verbose renamed '/tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package' ]
+verbose from cache /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package/package.json
+verbose pack /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package /home/Eric/.npm/socket.io/0.7.6/package.tgz
+verbose from cache /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package/package.json
+silly testEngine { name: 'express',
+silly testEngine description: 'Sinatra inspired web development framework',
+silly testEngine version: '2.4.0',
+silly testEngine author:
+silly testEngine { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine contributors:
+silly testEngine [ { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine { name: 'Aaron Heckmann',
+silly testEngine email: 'aaron.heckmann+github@gmail.com' },
+silly testEngine { name: 'Ciaran Jessup', email: 'ciaranj@gmail.com' },
+silly testEngine { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' } ],
+silly testEngine dependencies:
+silly testEngine { connect: '>= 1.5.1 < 2.0.0',
+silly testEngine mime: '>= 0.0.1',
+silly testEngine qs: '>= 0.0.6' },
+silly testEngine devDependencies:
+silly testEngine { 'connect-form': '0.2.1',
+silly testEngine ejs: '0.4.2',
+silly testEngine expresso: '0.7.2',
+silly testEngine hamljs: '0.5.1',
+silly testEngine jade: '0.11.0',
+silly testEngine stylus: '0.13.0',
+silly testEngine should: '0.2.1',
+silly testEngine 'express-messages': '0.0.2',
+silly testEngine 'node-markdown': '>= 0.0.1',
+silly testEngine 'connect-redis': '>= 0.0.1' },
+silly testEngine keywords: [ 'framework', 'sinatra', 'web', 'rest', 'restful' ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/visionmedia/express.git' },
+silly testEngine main: 'index',
+silly testEngine bin: { express: './bin/express' },
+silly testEngine scripts: { test: 'make test', prepublish: 'npm prune' },
+silly testEngine engines: { node: '>= 0.4.1 < 0.5.0' },
+silly testEngine _id: 'express@2.4.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine path: '/tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package' }
+verbose caching /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package/package.json
+verbose loadDefaults express@2.4.0
+verbose tarball contents [ 'package' ]
+verbose from cache /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package/package.json
+verbose pack /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package /home/Eric/.npm/express/2.4.0/package.tgz
+verbose from cache /tmp/npm-1309901555215/1309901555388-0.8886940085794777/contents/package/package.json
+silly testEngine { name: 'socket.io-website',
+silly testEngine version: '0.0.1',
+silly testEngine dependencies: { express: '2.3.11', jade: '0.12.1', stylus: '0.13.3' },
+silly testEngine devDependencies: {},
+silly testEngine _id: 'socket.io-website@0.0.1',
+silly testEngine engines: { node: '*' },
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine path: '/tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package/new-old' }
+verbose caching /tmp/npm-1309901555215/1309901555215-0.9472378857899457/contents/package/new-old/package.json
+verbose loadDefaults socket.io-website@0.0.1
+verbose mkdir'ed /home/Eric/.npm/socket.io/0.7.6
+verbose tar about to write tar and gzip it.
+silly tar args [ '-cvf',
+silly tar args '-',
+silly tar args 'package/.npmignore',
+silly tar args 'package/History.md',
+silly tar args 'package/index.js',
+silly tar args 'package/.gitignore',
+silly tar args 'package/package.json',
+silly tar args 'package/Makefile',
+silly tar args 'package/Readme.md',
+silly tar args 'package/lib/logger.js',
+silly tar args 'package/lib/parser.js',
+silly tar args 'package/lib/socket.io.js',
+silly tar args 'package/lib/store.js',
+silly tar args 'package/lib/socket.js',
+silly tar args 'package/lib/transport.js',
+silly tar args 'package/lib/util.js',
+silly tar args 'package/lib/namespace.js',
+silly tar args 'package/lib/manager.js',
+silly tar args 'package/lib/stores/redis.js',
+silly tar args 'package/lib/stores/memory.js',
+silly tar args 'package/lib/transports/flashsocket.js',
+silly tar args 'package/lib/transports/index.js',
+silly tar args 'package/lib/transports/htmlfile.js',
+silly tar args 'package/lib/transports/websocket.js',
+silly tar args 'package/lib/transports/xhr-polling.js',
+silly tar args 'package/lib/transports/http-polling.js',
+silly tar args 'package/lib/transports/http.js',
+silly tar args 'package/lib/transports/jsonp-polling.js',
+silly tar args 'package/lib-cov/logger.js',
+silly tar args 'package/lib-cov/manager.js',
+silly tar args 'package/lib-cov/namespace.js',
+silly tar args 'package/lib-cov/socket.js',
+silly tar args 'package/lib-cov/socket.io.js',
+silly tar args 'package/lib-cov/util.js',
+silly tar args 'package/lib-cov/parser.js',
+silly tar args 'package/lib-cov/transport.js',
+silly tar args 'package/lib-cov/store.js',
+silly tar args 'package/lib-cov/stores/memory.js',
+silly tar args 'package/lib-cov/transports/htmlfile.js',
+silly tar args 'package/lib-cov/transports/http-polling.js',
+silly tar args 'package/lib-cov/transports/http.js',
+silly tar args 'package/lib-cov/transports/websocket.js',
+silly tar args 'package/lib-cov/transports/xhr-polling.js',
+silly tar args 'package/lib-cov/transports/jsonp-polling.js',
+silly tar args 'package/lib-cov/transports/index.js',
+silly tar args 'package/new-old/app.js',
+silly tar args 'package/new-old/index.jade',
+silly tar args 'package/new-old/layout.jade',
+silly tar args 'package/new-old/package.json',
+silly tar args 'package/new-old/public/js/main.js' ]
+verbose mkdir'ed /home/Eric/.npm/express/2.4.0
+verbose tar about to write tar and gzip it.
+silly tar args [ '-cvf',
+silly tar args '-',
+silly tar args 'package/index.js',
+silly tar args 'package/History.md',
+silly tar args 'package/LICENSE',
+silly tar args 'package/Makefile',
+silly tar args 'package/Readme.md',
+silly tar args 'package/.npmignore',
+silly tar args 'package/package.json',
+silly tar args 'package/bin/express',
+silly tar args 'package/lib/express.js',
+silly tar args 'package/lib/http.js',
+silly tar args 'package/lib/https.js',
+silly tar args 'package/lib/request.js',
+silly tar args 'package/lib/response.js',
+silly tar args 'package/lib/utils.js',
+silly tar args 'package/lib/view.js',
+silly tar args 'package/lib/router/collection.js',
+silly tar args 'package/lib/router/route.js',
+silly tar args 'package/lib/router/methods.js',
+silly tar args 'package/lib/router/index.js',
+silly tar args 'package/lib/view/partial.js',
+silly tar args 'package/lib/view/view.js' ]
+verbose success tar -cvf - <file list elided>
+verbose success gzip "--stdout"
+verbose success tar -cvf - <file list elided>
+verbose success gzip "--stdout"
+verbose mkdir done: /home/Eric/.npm/socket.io/0.7.6/___package.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /home/Eric/.npm/socket.io/0.7.6/package
+silly gunzTarPerm modes [ '755', '644' ]
+verbose mkdir done: /home/Eric/.npm/express/2.4.0/___package.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /home/Eric/.npm/express/2.4.0/package
+silly gunzTarPerm modes [ '755', '644' ]
+verbose success gzip "--decompress" "--stdout" "/home/Eric/.npm/socket.io/0.7.6/package.tgz"
+verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/home/Eric/.npm/socket.io/0.7.6/___package.npm"
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/.gitignore
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/.npmignore
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/History.md
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/index.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/Makefile
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/package.json
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/Readme.md
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/logger.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/manager.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/namespace.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/parser.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/socket.io.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/socket.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/store.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transport.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/util.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/stores/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/stores/memory.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/htmlfile.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/http-polling.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/http.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/index.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/jsonp-polling.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/websocket.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib-cov/transports/xhr-polling.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/logger.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/manager.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/namespace.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/parser.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/socket.io.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/socket.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/store.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transport.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/util.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/stores/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/stores/memory.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/stores/redis.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/flashsocket.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/htmlfile.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/http-polling.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/http.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/index.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/websocket.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/jsonp-polling.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/lib/transports/xhr-polling.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/app.js
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/index.jade
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/layout.jade
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/package.json
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/public/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/public/js/
+silly asyncMap in gTP /home/Eric/.npm/socket.io/0.7.6/___package.npm/package/new-old/public/js/main.js
+verbose gunzed /home/Eric/.npm/socket.io/0.7.6/___package.npm/package
+verbose rm'ed /home/Eric/.npm/socket.io/0.7.6/package
+verbose success gzip "--decompress" "--stdout" "/home/Eric/.npm/express/2.4.0/package.tgz"
+verbose renamed [ '/home/Eric/.npm/socket.io/0.7.6/___package.npm/package',
+verbose renamed '/home/Eric/.npm/socket.io/0.7.6/package' ]
+silly testEngine { name: 'socket.io',
+silly testEngine version: '0.7.6',
+silly testEngine description: 'Realtime apps made cross-browser & easy with a WebSocket-like API',
+silly testEngine homepage: 'http://socket.io',
+silly testEngine keywords:
+silly testEngine [ 'websocket',
+silly testEngine 'socket',
+silly testEngine 'realtime',
+silly testEngine 'socket.io',
+silly testEngine 'comet',
+silly testEngine 'ajax' ],
+silly testEngine author:
+silly testEngine { name: 'Guillermo Rauch',
+silly testEngine email: 'guillermo@learnboost.com' },
+silly testEngine contributors:
+silly testEngine [ { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' },
+silly testEngine { name: 'Arnout Kazemier',
+silly testEngine email: 'info@3rd-eden.com' },
+silly testEngine { name: 'Vladimir Dronnikov',
+silly testEngine email: 'dronnikov@gmail.com' } ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/LearnBoost/Socket.IO-node.git' },
+silly testEngine dependencies:
+silly testEngine { 'socket.io-client': '0.7.3',
+silly testEngine policyfile: '0.0.3',
+silly testEngine redis: '0.6.0' },
+silly testEngine devDependencies: { expresso: '0.7.7', should: '0.0.4' },
+silly testEngine main: 'index',
+silly testEngine engines: { node: '>= 0.4.0' },
+silly testEngine _id: 'socket.io@0.7.6',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine dist: { shasum: '84311aa351a98f4d1192e887f453290dbcd679ce' },
+silly testEngine scripts: {} }
+verbose caching /home/Eric/.npm/socket.io/0.7.6/package/package.json
+verbose loadDefaults socket.io@0.7.6
+silly updated sha bytes 40960
+silly updated sha bytes 13329
+info shasum 84311aa351a98f4d1192e887f453290dbcd679ce
+info shasum /home/Eric/.npm/socket.io/0.7.6/package.tgz
+verbose from cache /home/Eric/.npm/socket.io/0.7.6/package/package.json
+verbose chmod /home/Eric/.npm/socket.io/0.7.6/package.json 644
+verbose chmod /home/Eric/.npm/socket.io/0.7.6/package.tgz 644
+verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/home/Eric/.npm/express/2.4.0/___package.npm"
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/.npmignore
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/History.md
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/index.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/LICENSE
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/Makefile
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/Readme.md
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/package.json
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/bin/
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/bin/express
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/express.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/http.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/https.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/request.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/response.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/utils.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/view.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/router/
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/router/collection.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/router/index.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/router/methods.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/router/route.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/view/
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/view/view.js
+silly asyncMap in gTP /home/Eric/.npm/express/2.4.0/___package.npm/package/lib/view/partial.js
+verbose gunzed /home/Eric/.npm/express/2.4.0/___package.npm/package
+verbose rm'ed /home/Eric/.npm/express/2.4.0/package
+verbose renamed [ '/home/Eric/.npm/express/2.4.0/___package.npm/package',
+verbose renamed '/home/Eric/.npm/express/2.4.0/package' ]
+silly testEngine { name: 'express',
+silly testEngine description: 'Sinatra inspired web development framework',
+silly testEngine version: '2.4.0',
+silly testEngine author:
+silly testEngine { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine contributors:
+silly testEngine [ { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine { name: 'Aaron Heckmann',
+silly testEngine email: 'aaron.heckmann+github@gmail.com' },
+silly testEngine { name: 'Ciaran Jessup', email: 'ciaranj@gmail.com' },
+silly testEngine { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' } ],
+silly testEngine dependencies:
+silly testEngine { connect: '>= 1.5.1 < 2.0.0',
+silly testEngine mime: '>= 0.0.1',
+silly testEngine qs: '>= 0.0.6' },
+silly testEngine devDependencies:
+silly testEngine { 'connect-form': '0.2.1',
+silly testEngine ejs: '0.4.2',
+silly testEngine expresso: '0.7.2',
+silly testEngine hamljs: '0.5.1',
+silly testEngine jade: '0.11.0',
+silly testEngine stylus: '0.13.0',
+silly testEngine should: '0.2.1',
+silly testEngine 'express-messages': '0.0.2',
+silly testEngine 'node-markdown': '>= 0.0.1',
+silly testEngine 'connect-redis': '>= 0.0.1' },
+silly testEngine keywords: [ 'framework', 'sinatra', 'web', 'rest', 'restful' ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/visionmedia/express.git' },
+silly testEngine main: 'index',
+silly testEngine bin: { express: './bin/express' },
+silly testEngine scripts: { test: 'make test', prepublish: 'npm prune' },
+silly testEngine engines: { node: '>= 0.4.1 < 0.5.0' },
+silly testEngine _id: 'express@2.4.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine dist: { shasum: 'c5d9d72d3d1c23467f625e83856409ad9c6e722c' } }
+verbose caching /home/Eric/.npm/express/2.4.0/package/package.json
+verbose loadDefaults express@2.4.0
+silly updated sha bytes 30914
+info shasum c5d9d72d3d1c23467f625e83856409ad9c6e722c
+info shasum /home/Eric/.npm/express/2.4.0/package.tgz
+verbose from cache /home/Eric/.npm/express/2.4.0/package/package.json
+verbose chmod /home/Eric/.npm/express/2.4.0/package.json 644
+verbose chmod /home/Eric/.npm/express/2.4.0/package.tgz 644
+silly resolved [ { name: 'socket.io',
+silly resolved version: '0.7.6',
+silly resolved description: 'Realtime apps made cross-browser & easy with a WebSocket-like API',
+silly resolved homepage: 'http://socket.io',
+silly resolved keywords:
+silly resolved [ 'websocket',
+silly resolved 'socket',
+silly resolved 'realtime',
+silly resolved 'socket.io',
+silly resolved 'comet',
+silly resolved 'ajax' ],
+silly resolved author:
+silly resolved { name: 'Guillermo Rauch',
+silly resolved email: 'guillermo@learnboost.com' },
+silly resolved contributors:
+silly resolved [ { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' },
+silly resolved { name: 'Arnout Kazemier',
+silly resolved email: 'info@3rd-eden.com' },
+silly resolved { name: 'Vladimir Dronnikov',
+silly resolved email: 'dronnikov@gmail.com' } ],
+silly resolved repository:
+silly resolved { type: 'git',
+silly resolved url: 'git://github.com/LearnBoost/Socket.IO-node.git' },
+silly resolved dependencies:
+silly resolved { 'socket.io-client': '0.7.3',
+silly resolved policyfile: '0.0.3',
+silly resolved redis: '0.6.0' },
+silly resolved devDependencies: { expresso: '0.7.7', should: '0.0.4' },
+silly resolved main: 'index',
+silly resolved engines: { node: '>= 0.4.0' },
+silly resolved _id: 'socket.io@0.7.6',
+silly resolved _engineSupported: true,
+silly resolved _npmVersion: '1.0.6',
+silly resolved _nodeVersion: 'v0.4.5',
+silly resolved _defaultsLoaded: true,
+silly resolved dist: { shasum: '84311aa351a98f4d1192e887f453290dbcd679ce' },
+silly resolved scripts: {} },
+silly resolved { name: 'express',
+silly resolved description: 'Sinatra inspired web development framework',
+silly resolved version: '2.4.0',
+silly resolved author:
+silly resolved { name: 'TJ Holowaychuk',
+silly resolved email: 'tj@vision-media.ca' },
+silly resolved contributors:
+silly resolved [ { name: 'TJ Holowaychuk',
+silly resolved email: 'tj@vision-media.ca' },
+silly resolved { name: 'Aaron Heckmann',
+silly resolved email: 'aaron.heckmann+github@gmail.com' },
+silly resolved { name: 'Ciaran Jessup', email: 'ciaranj@gmail.com' },
+silly resolved { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' } ],
+silly resolved dependencies:
+silly resolved { connect: '>= 1.5.1 < 2.0.0',
+silly resolved mime: '>= 0.0.1',
+silly resolved qs: '>= 0.0.6' },
+silly resolved devDependencies:
+silly resolved { 'connect-form': '0.2.1',
+silly resolved ejs: '0.4.2',
+silly resolved expresso: '0.7.2',
+silly resolved hamljs: '0.5.1',
+silly resolved jade: '0.11.0',
+silly resolved stylus: '0.13.0',
+silly resolved should: '0.2.1',
+silly resolved 'express-messages': '0.0.2',
+silly resolved 'node-markdown': '>= 0.0.1',
+silly resolved 'connect-redis': '>= 0.0.1' },
+silly resolved keywords: [ 'framework', 'sinatra', 'web', 'rest', 'restful' ],
+silly resolved repository:
+silly resolved { type: 'git',
+silly resolved url: 'git://github.com/visionmedia/express.git' },
+silly resolved main: 'index',
+silly resolved bin: { express: './bin/express' },
+silly resolved scripts: { test: 'make test', prepublish: 'npm prune' },
+silly resolved engines: { node: '>= 0.4.1 < 0.5.0' },
+silly resolved _id: 'express@2.4.0',
+silly resolved _engineSupported: true,
+silly resolved _npmVersion: '1.0.6',
+silly resolved _nodeVersion: 'v0.4.5',
+silly resolved _defaultsLoaded: true,
+silly resolved dist: { shasum: 'c5d9d72d3d1c23467f625e83856409ad9c6e722c' } } ]
+info into /home/Eric socket.io@0.7.6
+info into /home/Eric express@2.4.0
+info installOne socket.io@0.7.6
+info installOne express@2.4.0
+info unbuild /home/Eric/node_modules/socket.io
+info unbuild /home/Eric/node_modules/express
+silly testEngine { name: 'express',
+silly testEngine description: 'Sinatra inspired web development framework',
+silly testEngine version: '2.3.6',
+silly testEngine author:
+silly testEngine { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine contributors:
+silly testEngine [ { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine { name: 'Aaron Heckmann',
+silly testEngine email: 'aaron.heckmann+github@gmail.com' },
+silly testEngine { name: 'Ciaran Jessup', email: 'ciaranj@gmail.com' },
+silly testEngine { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' } ],
+silly testEngine dependencies:
+silly testEngine { connect: '>= 1.4.1 < 2.0.0',
+silly testEngine mime: '>= 0.0.1',
+silly testEngine qs: '>= 0.0.6' },
+silly testEngine devDependencies:
+silly testEngine { 'connect-form': '0.2.1',
+silly testEngine ejs: '0.4.2',
+silly testEngine expresso: '0.7.2',
+silly testEngine hamljs: '0.5.1',
+silly testEngine jade: '0.11.0',
+silly testEngine stylus: '0.13.0',
+silly testEngine should: '0.2.1',
+silly testEngine 'express-messages': '0.0.2',
+silly testEngine 'node-markdown': '>= 0.0.1',
+silly testEngine 'connect-redis': '>= 0.0.1' },
+silly testEngine keywords: [ 'framework', 'sinatra', 'web', 'rest', 'restful' ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/visionmedia/express.git' },
+silly testEngine main: 'index',
+silly testEngine bin: { express: './bin/express' },
+silly testEngine engines: { node: '>= 0.4.1 < 0.5.0' },
+silly testEngine _id: 'express@2.3.6',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine scripts: {} }
+verbose caching /home/Eric/node_modules/express/package.json
+verbose loadDefaults express@2.3.6
+info preuninstall express@2.3.6
+silly testEngine { name: 'socket.io',
+silly testEngine version: '0.7.0',
+silly testEngine description: 'Realtime apps made cross-browser & easy with a WebSocket-like API',
+silly testEngine homepage: 'http://socket.io',
+silly testEngine keywords:
+silly testEngine [ 'websocket',
+silly testEngine 'socket',
+silly testEngine 'realtime',
+silly testEngine 'socket.io',
+silly testEngine 'comet',
+silly testEngine 'ajax' ],
+silly testEngine author:
+silly testEngine { name: 'Guillermo Rauch',
+silly testEngine email: 'guillermo@learnboost.com' },
+silly testEngine contributors:
+silly testEngine [ { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' },
+silly testEngine { name: 'Arnout Kazemier',
+silly testEngine email: 'info@3rd-eden.com' },
+silly testEngine { name: 'Vladimir Dronnikov',
+silly testEngine email: 'dronnikov@gmail.com' } ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/LearnBoost/Socket.IO-node.git' },
+silly testEngine dependencies:
+silly testEngine { 'socket.io-client': '0.7.0',
+silly testEngine policyfile: '>= 0.0.3' },
+silly testEngine devDependencies: { expresso: '0.7.7', should: '0.0.4' },
+silly testEngine main: 'index',
+silly testEngine engines: { node: '>= 0.4.0' },
+silly testEngine _id: 'socket.io@0.7.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine scripts: {} }
+verbose caching /home/Eric/node_modules/socket.io/package.json
+verbose loadDefaults socket.io@0.7.0
+info preuninstall socket.io@0.7.0
+info uninstall express@2.3.6
+info uninstall socket.io@0.7.0
+verbose unbuild express@2.3.6 [ false,
+verbose unbuild express@2.3.6 '/usr/local/lib/node_modules',
+verbose unbuild express@2.3.6 '/home/Eric/node_modules' ]
+verbose binRoot [ '/home/Eric/node_modules/.bin',
+verbose binRoot { express: './bin/express' } ]
+verbose unbuild socket.io@0.7.0 [ false,
+verbose unbuild socket.io@0.7.0 '/usr/local/lib/node_modules',
+verbose unbuild socket.io@0.7.0 '/home/Eric/node_modules' ]
+info postuninstall socket.io@0.7.0
+info postuninstall express@2.3.6
+silly testEngine { name: 'express',
+silly testEngine description: 'Sinatra inspired web development framework',
+silly testEngine version: '2.4.0',
+silly testEngine author:
+silly testEngine { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine contributors:
+silly testEngine [ { name: 'TJ Holowaychuk',
+silly testEngine email: 'tj@vision-media.ca' },
+silly testEngine { name: 'Aaron Heckmann',
+silly testEngine email: 'aaron.heckmann+github@gmail.com' },
+silly testEngine { name: 'Ciaran Jessup', email: 'ciaranj@gmail.com' },
+silly testEngine { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' } ],
+silly testEngine dependencies:
+silly testEngine { connect: '>= 1.5.1 < 2.0.0',
+silly testEngine mime: '>= 0.0.1',
+silly testEngine qs: '>= 0.0.6' },
+silly testEngine devDependencies:
+silly testEngine { 'connect-form': '0.2.1',
+silly testEngine ejs: '0.4.2',
+silly testEngine expresso: '0.7.2',
+silly testEngine hamljs: '0.5.1',
+silly testEngine jade: '0.11.0',
+silly testEngine stylus: '0.13.0',
+silly testEngine should: '0.2.1',
+silly testEngine 'express-messages': '0.0.2',
+silly testEngine 'node-markdown': '>= 0.0.1',
+silly testEngine 'connect-redis': '>= 0.0.1' },
+silly testEngine keywords: [ 'framework', 'sinatra', 'web', 'rest', 'restful' ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/visionmedia/express.git' },
+silly testEngine main: 'index',
+silly testEngine bin: { express: './bin/express' },
+silly testEngine scripts: { test: 'make test', prepublish: 'npm prune' },
+silly testEngine engines: { node: '>= 0.4.1 < 0.5.0' },
+silly testEngine _id: 'express@2.4.0',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine dist: { shasum: 'c5d9d72d3d1c23467f625e83856409ad9c6e722c' } }
+verbose caching /home/Eric/.npm/express/2.4.0/package.json
+verbose mkdir done: /home/Eric/node_modules/___express.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /home/Eric/node_modules/express
+silly gunzTarPerm modes [ '755', '644' ]
+verbose success gzip "--decompress" "--stdout" "/home/Eric/.npm/express/2.4.0/package.tgz"
+verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/home/Eric/node_modules/___express.npm"
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/.npmignore
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/History.md
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/index.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/Makefile
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/LICENSE
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/package.json
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/Readme.md
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/bin/
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/bin/express
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/express.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/http.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/https.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/request.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/response.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/utils.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/view.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/view/
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/view/partial.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/view/view.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/router/
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/router/collection.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/router/index.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/router/route.js
+silly asyncMap in gTP /home/Eric/node_modules/___express.npm/package/lib/router/methods.js
+verbose gunzed /home/Eric/node_modules/___express.npm/package
+verbose rm'ed /home/Eric/node_modules/express
+verbose renamed [ '/home/Eric/node_modules/___express.npm/package',
+verbose renamed '/home/Eric/node_modules/express' ]
+verbose from cache /home/Eric/node_modules/express/package.json
+info preinstall express@2.4.0
+verbose from cache /home/Eric/node_modules/express/package.json
+verbose into /home/Eric/node_modules/express [ 'connect@>= 1.5.1 < 2.0.0',
+verbose into /home/Eric/node_modules/express 'mime@>= 0.0.1',
+verbose into /home/Eric/node_modules/express 'qs@>= 0.0.6' ]
+verbose cache add [ 'connect@>= 1.5.1 < 2.0.0', null ]
+info addNamed [ 'connect', '>= 1.5.1 < 2.0.0' ]
+verbose addNamed [ null, '>=1.5.1 <2.0.0' ]
+verbose cache add [ 'mime@>= 0.0.1', null ]
+info addNamed [ 'mime', '>= 0.0.1' ]
+verbose addNamed [ null, '>=0.0.1' ]
+verbose GET connect
+verbose raw, before any munging connect
+verbose url resolving [ 'http://registry.npmjs.org/', './connect' ]
+verbose url resolved http://registry.npmjs.org/connect
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/connect',
+verbose url parsed href: 'http://registry.npmjs.org/connect' }
+verbose etag "7IJ1D145P3PQK89Z6TI9YTR0J"
+verbose cache add [ 'qs@>= 0.0.6', null ]
+info addNamed [ 'qs', '>= 0.0.6' ]
+verbose addNamed [ null, '>=0.0.6' ]
+verbose GET mime
+verbose raw, before any munging mime
+verbose url resolving [ 'http://registry.npmjs.org/', './mime' ]
+verbose url resolved http://registry.npmjs.org/mime
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/mime',
+verbose url parsed href: 'http://registry.npmjs.org/mime' }
+verbose etag "8C585ETLHGCE8ML17IW9866IV"
+verbose GET qs
+verbose raw, before any munging qs
+verbose url resolving [ 'http://registry.npmjs.org/', './qs' ]
+verbose url resolved http://registry.npmjs.org/qs
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/qs',
+verbose url parsed href: 'http://registry.npmjs.org/qs' }
+verbose etag "2313UV8WXBK48UPU8Z0XXHLHR"
+verbose response http://registry.npmjs.org/connect
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"7IJ1D145P3PQK89Z6TI9YTR0J"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:36 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag connect from cache
+verbose GET connect/1.5.1
+verbose raw, before any munging connect/1.5.1
+verbose url resolving [ 'http://registry.npmjs.org/', './connect/1.5.1' ]
+verbose url resolved http://registry.npmjs.org/connect/1.5.1
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/connect/1.5.1',
+verbose url parsed href: 'http://registry.npmjs.org/connect/1.5.1' }
+verbose etag "7IJ1D145P3PQK89Z6TI9YTR0J"
+silly testEngine { name: 'socket.io',
+silly testEngine version: '0.7.6',
+silly testEngine description: 'Realtime apps made cross-browser & easy with a WebSocket-like API',
+silly testEngine homepage: 'http://socket.io',
+silly testEngine keywords:
+silly testEngine [ 'websocket',
+silly testEngine 'socket',
+silly testEngine 'realtime',
+silly testEngine 'socket.io',
+silly testEngine 'comet',
+silly testEngine 'ajax' ],
+silly testEngine author:
+silly testEngine { name: 'Guillermo Rauch',
+silly testEngine email: 'guillermo@learnboost.com' },
+silly testEngine contributors:
+silly testEngine [ { name: 'Guillermo Rauch', email: 'rauchg@gmail.com' },
+silly testEngine { name: 'Arnout Kazemier',
+silly testEngine email: 'info@3rd-eden.com' },
+silly testEngine { name: 'Vladimir Dronnikov',
+silly testEngine email: 'dronnikov@gmail.com' } ],
+silly testEngine repository:
+silly testEngine { type: 'git',
+silly testEngine url: 'git://github.com/LearnBoost/Socket.IO-node.git' },
+silly testEngine dependencies:
+silly testEngine { 'socket.io-client': '0.7.3',
+silly testEngine policyfile: '0.0.3',
+silly testEngine redis: '0.6.0' },
+silly testEngine devDependencies: { expresso: '0.7.7', should: '0.0.4' },
+silly testEngine main: 'index',
+silly testEngine engines: { node: '>= 0.4.0' },
+silly testEngine _id: 'socket.io@0.7.6',
+silly testEngine _engineSupported: true,
+silly testEngine _npmVersion: '1.0.6',
+silly testEngine _nodeVersion: 'v0.4.5',
+silly testEngine _defaultsLoaded: true,
+silly testEngine dist: { shasum: '84311aa351a98f4d1192e887f453290dbcd679ce' } }
+verbose caching /home/Eric/.npm/socket.io/0.7.6/package.json
+verbose mkdir done: /home/Eric/node_modules/___socket.io.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /home/Eric/node_modules/socket.io
+silly gunzTarPerm modes [ '755', '644' ]
+verbose response http://registry.npmjs.org/mime
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"8C585ETLHGCE8ML17IW9866IV"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:36 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag mime from cache
+verbose GET mime/1.2.2
+verbose raw, before any munging mime/1.2.2
+verbose url resolving [ 'http://registry.npmjs.org/', './mime/1.2.2' ]
+verbose url resolved http://registry.npmjs.org/mime/1.2.2
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/mime/1.2.2',
+verbose url parsed href: 'http://registry.npmjs.org/mime/1.2.2' }
+verbose etag "8C585ETLHGCE8ML17IW9866IV"
+verbose success gzip "--decompress" "--stdout" "/home/Eric/.npm/socket.io/0.7.6/package.tgz"
+verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/home/Eric/node_modules/___socket.io.npm"
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/.gitignore
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/.npmignore
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/History.md
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/index.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/Makefile
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/package.json
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/Readme.md
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/logger.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/manager.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/parser.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/namespace.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/socket.io.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/socket.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/store.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transport.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/util.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/stores/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/stores/memory.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/htmlfile.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/http-polling.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/http.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/jsonp-polling.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/index.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/websocket.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib-cov/transports/xhr-polling.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/logger.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/manager.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/namespace.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/parser.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/socket.io.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/socket.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/store.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transport.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/util.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/stores/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/stores/memory.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/stores/redis.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/flashsocket.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/htmlfile.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/http.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/http-polling.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/index.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/jsonp-polling.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/websocket.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/lib/transports/xhr-polling.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/app.js
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/index.jade
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/layout.jade
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/package.json
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/public/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/public/js/
+silly asyncMap in gTP /home/Eric/node_modules/___socket.io.npm/package/new-old/public/js/main.js
+verbose gunzed /home/Eric/node_modules/___socket.io.npm/package
+verbose rm'ed /home/Eric/node_modules/socket.io
+verbose renamed [ '/home/Eric/node_modules/___socket.io.npm/package',
+verbose renamed '/home/Eric/node_modules/socket.io' ]
+verbose from cache /home/Eric/node_modules/socket.io/package.json
+info preinstall socket.io@0.7.6
+verbose from cache /home/Eric/node_modules/socket.io/package.json
+verbose into /home/Eric/node_modules/socket.io [ 'socket.io-client@0.7.3',
+verbose into /home/Eric/node_modules/socket.io 'policyfile@0.0.3',
+verbose into /home/Eric/node_modules/socket.io 'redis@0.6.0' ]
+verbose cache add [ 'socket.io-client@0.7.3', null ]
+info addNamed [ 'socket.io-client', '0.7.3' ]
+verbose addNamed [ '0.7.3', '0.7.3' ]
+verbose GET socket.io-client/0.7.3
+verbose raw, before any munging socket.io-client/0.7.3
+verbose url resolving [ 'http://registry.npmjs.org/',
+verbose url resolving './socket.io-client/0.7.3' ]
+verbose url resolved http://registry.npmjs.org/socket.io-client/0.7.3
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/socket.io-client/0.7.3',
+verbose url parsed href: 'http://registry.npmjs.org/socket.io-client/0.7.3' }
+verbose etag "IWLI06ZGM2O0H47HQ9ZJTR8Y"
+verbose cache add [ 'policyfile@0.0.3', null ]
+info addNamed [ 'policyfile', '0.0.3' ]
+verbose addNamed [ '0.0.3', '0.0.3' ]
+verbose cache add [ 'redis@0.6.0', null ]
+info addNamed [ 'redis', '0.6.0' ]
+verbose addNamed [ '0.6.0', '0.6.0' ]
+verbose GET policyfile/0.0.3
+verbose raw, before any munging policyfile/0.0.3
+verbose url resolving [ 'http://registry.npmjs.org/', './policyfile/0.0.3' ]
+verbose url resolved http://registry.npmjs.org/policyfile/0.0.3
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/policyfile/0.0.3',
+verbose url parsed href: 'http://registry.npmjs.org/policyfile/0.0.3' }
+verbose etag "7T5NFWE5WGDWUN68SUJE77SHQ"
+verbose GET redis/0.6.0
+verbose raw, before any munging redis/0.6.0
+verbose url resolving [ 'http://registry.npmjs.org/', './redis/0.6.0' ]
+verbose url resolved http://registry.npmjs.org/redis/0.6.0
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/redis/0.6.0',
+verbose url parsed href: 'http://registry.npmjs.org/redis/0.6.0' }
+verbose etag "3EEDQACNLCLC8LE8BMQRRBCY6"
+verbose response http://registry.npmjs.org/qs
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"2313UV8WXBK48UPU8Z0XXHLHR"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:36 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag qs from cache
+verbose GET qs/0.2.0
+verbose raw, before any munging qs/0.2.0
+verbose url resolving [ 'http://registry.npmjs.org/', './qs/0.2.0' ]
+verbose url resolved http://registry.npmjs.org/qs/0.2.0
+verbose url parsed { protocol: 'http:',
+verbose url parsed slashes: true,
+verbose url parsed host: 'registry.npmjs.org',
+verbose url parsed hostname: 'registry.npmjs.org',
+verbose url parsed pathname: '/qs/0.2.0',
+verbose url parsed href: 'http://registry.npmjs.org/qs/0.2.0' }
+verbose etag "2313UV8WXBK48UPU8Z0XXHLHR"
+verbose response http://registry.npmjs.org/connect/1.5.1
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"7IJ1D145P3PQK89Z6TI9YTR0J"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:37 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag connect/1.5.1 from cache
+verbose bin dist [ '0.4-ares1.7.4-ev4.4-openssl0.9.8r-v83.1.8.8-cygwin-1.7.9(0.237/5/3)',
+verbose bin dist { shasum: '1061dbf18f5f4a00f6da52a0c9eab11e70620bfc',
+verbose bin dist tarball: 'http://registry.npmjs.org/connect/-/connect-1.5.1.tgz' } ]
+verbose addRemoteTarball [ 'http://registry.npmjs.org/connect/-/connect-1.5.1.tgz',
+verbose addRemoteTarball '1061dbf18f5f4a00f6da52a0c9eab11e70620bfc' ]
+verbose mkdir done: /tmp/npm-1309901555215/1309901557461-0.6375949750654399 755
+info fetch http://registry.npmjs.org/connect/-/connect-1.5.1.tgz
+verbose fetch to /tmp/npm-1309901555215/1309901557461-0.6375949750654399/tmp.tgz
+verbose response http://registry.npmjs.org/mime/1.2.2
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"8C585ETLHGCE8ML17IW9866IV"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:37 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag mime/1.2.2 from cache
+verbose bin dist [ '0.4-ares1.7.4-ev4.4-openssl0.9.8r-v83.1.8.8-cygwin-1.7.9(0.237/5/3)',
+verbose bin dist { shasum: 'b9d6355bf53e8d7d56693130e451daff340148cf',
+verbose bin dist tarball: 'http://registry.npmjs.org/mime/-/mime-1.2.2.tgz' } ]
+verbose addRemoteTarball [ 'http://registry.npmjs.org/mime/-/mime-1.2.2.tgz',
+verbose addRemoteTarball 'b9d6355bf53e8d7d56693130e451daff340148cf' ]
+verbose mkdir done: /tmp/npm-1309901555215/1309901557635-0.08366770250722766 755
+info fetch http://registry.npmjs.org/mime/-/mime-1.2.2.tgz
+verbose fetch to /tmp/npm-1309901555215/1309901557635-0.08366770250722766/tmp.tgz
+verbose response http://registry.npmjs.org/socket.io-client/0.7.3
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"IWLI06ZGM2O0H47HQ9ZJTR8Y"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:37 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag socket.io-client/0.7.3 from cache
+verbose bin dist [ '0.4-ares1.7.4-ev4.4-openssl0.9.8r-v83.1.8.8-cygwin-1.7.9(0.237/5/3)',
+verbose bin dist { shasum: '690c42c6de78a8cf3c619e7e2d2e4c3f609c8733',
+verbose bin dist tarball: 'http://registry.npmjs.org/socket.io-client/-/socket.io-client-0.7.3.tgz' } ]
+verbose addRemoteTarball [ 'http://registry.npmjs.org/socket.io-client/-/socket.io-client-0.7.3.tgz',
+verbose addRemoteTarball '690c42c6de78a8cf3c619e7e2d2e4c3f609c8733' ]
+verbose mkdir done: /tmp/npm-1309901555215/1309901557819-0.3318840654101223 755
+info fetch http://registry.npmjs.org/socket.io-client/-/socket.io-client-0.7.3.tgz
+verbose fetch to /tmp/npm-1309901555215/1309901557819-0.3318840654101223/tmp.tgz
+verbose response http://registry.npmjs.org/policyfile/0.0.3
+silly get cb [ 304,
+silly get cb { server: 'CouchDB/1.1.0 (Erlang OTP/R14B03)',
+silly get cb etag: '"7T5NFWE5WGDWUN68SUJE77SHQ"',
+silly get cb date: 'Tue, 05 Jul 2011 21:32:37 GMT',
+silly get cb 'content-length': '0' } ]
+verbose etag policyfile/0.0.3 from cache
+verbose bin dist [ '0.4-ares1.7.4-ev4.4-openssl0.9.8r-v83.1.8.8-cygwin-1.7.9(0.237/5/3)',
+verbose bin dist { shasum: 'd78b39879f585e8ffb964d468127e2386fd68c74',
+verbose bin dist tarball: 'http://registry.npmjs.org/policyfile/-/policyfile-0.0.3.tgz' } ]
+verbose addRemoteTarball [ 'http://registry.npmjs.org/policyfile/-/policyfile-0.0.3.tgz',
+verbose addRemoteTarball 'd78b39879f585e8ffb964d468127e2386fd68c74' ]
+verbose mkdir done: /tmp/npm-1309901555215/1309901557972-0.2694661542773247 755
+info fetch http://registry.npmjs.org/policyfile/-/policyfile-0.0.3.tgz
+verbose fetch to /tmp/npm-1309901555215/1309901557972-0.2694661542773247/tmp.tgz
+silly updated sha bytes 16530
+info shasum b9d6355bf53e8d7d56693130e451daff340148cf
+info shasum /tmp/npm-1309901555215/1309901557635-0.08366770250722766/tmp.tgz
+verbose mkdir done: /tmp/npm-1309901555215/1309901557635-0.08366770250722766/contents/___package.npm 755
+verbose unpack_ uid, gid [ undefined, undefined ]
+verbose unpackTarget /tmp/npm-1309901555215/1309901557635-0.08366770250722766/contents/package
+silly gunzTarPerm modes [ '755', '644' ]
+verbose response http://registry.npmjs.org/redis/0.6.0
+silly get cb [ 304,