dns-suite.js/test/packer.js

72 lines
1.7 KiB
JavaScript

;(function () {
'use strict';
var fs = require('fs');
var path = require('path');
var dnsjs = require('../').DNSPacket;
//var dirname = path.join(__dirname, 'fixtures');
//var expected; // shim
var onefile = process.argv[2];
if (!onefile) {
console.error('');
console.error('Usage:');
console.error('node test/packer.js <test/fixtures/packet.type.json>');
console.error('Example:');
console.error('node test/packer.js test/fixtures/www.linode.com.a.json');
console.error('');
process.exit(1);
}
var json = JSON.parse(fs.readFileSync(onefile, 'utf8'));
var ab = dnsjs.write(json);
//console.log(ab);
var ui8 = new Uint8Array(ab);
//console.log(ui8);
var bytecount = 0;
function hexdump() {
var head = ' 0 1 2 3 4 5 6 7 8 9 A B C D E F';
var trail;
var str = [].slice.call(ui8).map(function (i) {
var h = i.toString(16);
if (h.length < 2) {
h = '0' + h;
}
return h;
}).join('').match(/.{1,2}/g).join(' ').match(/.{1,48}/g).map(function (str) {
var lead = bytecount.toString(16);
bytecount += 16;
while (lead.length < 7) {
lead = '0' + lead;
}
return lead + ' ' + str;
}).join('\n');
trail = ab.byteLength.toString(16);
while (trail.length < 7) {
trail = '0' + trail;
}
return head + '\n' + str + '\n' + trail
}
console.log('');
console.log('DEBUG with hexdump: ');
console.log('hexdump ' + onefile.replace(/\.[^\.]*$/, '.bin'));
console.log('');
console.log(hexdump(ui8));
console.log('');
console.error('');
console.error('!!!');
console.error('Test implementation not complete.');
console.error('!!!');
console.error('');
process.exit(1);
}());