mirror of https://github.com/lukechilds/node.git
Browse Source
Already tested in test/simple/test-buffer.js. Takes too long, uses too much memory.v0.7.4-release
Ryan Dahl
14 years ago
1 changed files with 0 additions and 136 deletions
@ -1,136 +0,0 @@ |
|||||
|
|
||||
var common = require("../common"); |
|
||||
var path = require("path"); |
|
||||
var assert = common.assert; |
|
||||
var bigFile = path.join(common.tmpDir, "bigFile"); |
|
||||
var fs = require("fs"); |
|
||||
var cp = require("child_process"); |
|
||||
|
|
||||
console.error("Note: This test requires the dd, base64, and shasum programs."); |
|
||||
|
|
||||
fs.stat(bigFile, function (er, s) { |
|
||||
if (er || s.size < 1024*1024*128) { |
|
||||
makeBigFile(); |
|
||||
} else { |
|
||||
doEncoding(); |
|
||||
} |
|
||||
}) |
|
||||
|
|
||||
function makeBigFile () { |
|
||||
console.error("making bigFile"); |
|
||||
// write 128mb of zeros to bigFile
|
|
||||
cp.exec("dd if=/dev/zero of="+bigFile+" bs=134217728 count=1", function (er) { |
|
||||
if (er) { |
|
||||
console.error("Failed to create "+bigFile); |
|
||||
throw er; |
|
||||
} |
|
||||
doEncoding(); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
function doEncoding () { |
|
||||
// encode with node.
|
|
||||
console.error("doing encoding"); |
|
||||
fs.readFile(bigFile, function (er, data) { |
|
||||
if (er) throw er; |
|
||||
var b64 = new Buffer(data.toString("base64")); |
|
||||
fs.writeFile(bigFile+"-enc-node", b64, encDone); |
|
||||
}); |
|
||||
// encode with base64
|
|
||||
cp.exec("base64 <"+bigFile+" >"+bigFile+"-enc-native", encDone); |
|
||||
|
|
||||
var encCalls = 2; |
|
||||
function encDone (er) { |
|
||||
if (er) { |
|
||||
console.error("failed to encode"); |
|
||||
throw er; |
|
||||
} |
|
||||
if (-- encCalls > 0) return; |
|
||||
doDecoding() |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function doDecoding () { |
|
||||
console.error("doing decoding"); |
|
||||
// decode both files both ways
|
|
||||
decodeNode( bigFile+"-enc-node" , decDone); |
|
||||
decodeNode( bigFile+"-enc-native", decDone); |
|
||||
decodeNative(bigFile+"-enc-node" , decDone); |
|
||||
decodeNative(bigFile+"-enc-native", decDone); |
|
||||
|
|
||||
var decCalls = 4; |
|
||||
function decDone (er) { |
|
||||
if (er) { |
|
||||
console.error("failed to decode"); |
|
||||
throw er; |
|
||||
} |
|
||||
if (-- decCalls > 0) return; |
|
||||
doShasum(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
function decodeNode (f, cb) { |
|
||||
// decode with node.
|
|
||||
console.error("decode "+path.basename(f)+" with node"); |
|
||||
fs.readFile(f, function (er, data) { |
|
||||
if (er) throw er; |
|
||||
var dec = new Buffer(data.toString(), "base64"); |
|
||||
fs.writeFile(f+"-dec-node", dec, cb); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
function decodeNative (f, cb) { |
|
||||
console.error("decode "+path.basename(f)+" natively"); |
|
||||
cp.exec("base64 -d <"+f+" >"+f+"-dec-native", cb); |
|
||||
} |
|
||||
|
|
||||
// check the shasums of all decoded files match the original.
|
|
||||
function doShasum () { |
|
||||
console.error("do shasums"); |
|
||||
// make sure to get the original first.
|
|
||||
shaFile(bigFile, function (file, out) { |
|
||||
checkSha(file, out); |
|
||||
shaFile(bigFile+"-enc-node-dec-node" , checkSha); |
|
||||
shaFile(bigFile+"-enc-native-dec-node" , checkSha); |
|
||||
shaFile(bigFile+"-enc-node-dec-native" , checkSha); |
|
||||
shaFile(bigFile+"-enc-native-dec-native", checkSha); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
function shaFile (file, cb) { |
|
||||
console.error("shasum "+path.basename(file)); |
|
||||
cp.exec("shasum "+file, function (er, out) { |
|
||||
if (er) { |
|
||||
console.error("failed to shasum "+path.basename(file)); |
|
||||
throw er; |
|
||||
} |
|
||||
cb(file, out); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
var sha = null; |
|
||||
var fail = null; |
|
||||
var checks = 5; |
|
||||
|
|
||||
function checkSha (file, out) { |
|
||||
var s = out.toString().match(/^([a-fA-F0-9]{40})/); |
|
||||
if (!s) { |
|
||||
console.error("bad sha: "+out); |
|
||||
throw new Error("fail"); |
|
||||
} |
|
||||
s = s[0]; |
|
||||
console.error(s+" "+path.basename(file)); |
|
||||
if (sha === null) { |
|
||||
sha = s; |
|
||||
} else { |
|
||||
// assert.equal(sha, s, file+" doesn't match shasum "+s);
|
|
||||
if (sha !== s) { |
|
||||
console.error(path.basename(file)+" sha doesn't match") |
|
||||
fail = fail || new Error("Some shasums didn't match"); |
|
||||
} |
|
||||
} |
|
||||
if (-- checks === 0) { |
|
||||
if (fail) throw fail; |
|
||||
} |
|
||||
} |
|
||||
|
|
Loading…
Reference in new issue