Skip to content

Commit 00bdcd4

Browse files
committed
Merge pull request #4 from minrk/tweetnacl
use tweetnacl for bundled nacl instead of libsodium
2 parents 47dd75b + 45538ae commit 00bdcd4

File tree

7 files changed

+93
-104
lines changed

7 files changed

+93
-104
lines changed

.travis.yml

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ os:
1717
osx_image: xcode7.2
1818

1919
env:
20-
- ZMQ="4.1.3" SODIUM="1.0.5" NODE_VERSION="5"
21-
- ZMQ="4.1.3" SODIUM="1.0.5" NODE_VERSION="4"
20+
# libzmq-4.1.5 prerelease for tweetnacl build fixes
21+
- ZMQ="b539733cee0f47f9bf1a70dc7cb7ff20410d3380" NODE_VERSION="5"
22+
- ZMQ="b539733cee0f47f9bf1a70dc7cb7ff20410d3380" NODE_VERSION="4"
2223

2324
before_install:
2425
- curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
@@ -27,34 +28,23 @@ before_install:
2728
- nvm use $NODE_VERSION
2829
- node --version
2930
- npm --version
30-
- export CXX=g++-4.8
31-
- export CC=gcc-4.8
32-
- mkdir ldlocal
33-
- export LDHACK=`pwd`/ldlocal
34-
- export LDFLAGS=-L$LDHACK/lib
35-
- export CFLAGS=-I$LDHACK/include
36-
- export LD_RUN_PATH=$LDHACK/lib
37-
- export LD_LIBRARY_PATH=$LDHACK/lib
38-
- export PKG_CONFIG_PATH=$LDHACK/lib/pkgconfig
31+
- test "$(uname)" = "Darwin" || export CXX=g++-4.8 CC=gcc-4.8
32+
- gcc --version
33+
- mkdir zmq
34+
- export ZMQ_PREFIX=`pwd`/zmq
35+
- export CFLAGS=-fPIC
36+
- export CXXFLAGS=-fPIC
37+
- export PKG_CONFIG_PATH=$ZMQ_PREFIX/lib/pkgconfig
3938
- echo $PKG_CONFIG_PATH
40-
- wget http://download.zeromq.org/zeromq-$ZMQ.tar.gz
39+
- wget https://github.com/zeromq/zeromq4-1/archive/$ZMQ.tar.gz -O zeromq-$ZMQ.tar.gz
4140
- tar xzvf zeromq-$ZMQ.tar.gz
42-
- '[ -z "$SODIUM" ] || wget https://download.libsodium.org/libsodium/releases/libsodium-$SODIUM.tar.gz'
43-
- '[ -z "$SODIUM" ] || tar xzvf libsodium-$SODIUM.tar.gz'
44-
- '[ -z "$SODIUM" ] || cd libsodium-$SODIUM'
45-
- '[ -z "$SODIUM" ] || ./autogen.sh'
46-
- '[ -z "$SODIUM" ] || ./configure --prefix=$LDHACK'
47-
- '[ -z "$SODIUM" ] || make'
48-
- '[ -z "$SODIUM" ] || make install'
49-
- '[ -z "$SODIUM" ] || cd ..'
50-
- '[ -z "$SODIUM" ] || export LIBS=-lsodium && export sodium_CFLAGS=$CFLAGS && export sodium_LIBS=$LDFLAGS'
51-
- cd zeromq-$ZMQ
41+
- cd zeromq4-1-$ZMQ
5242
- ./autogen.sh
53-
- if [[ -z "$SODIUM" ]]; then ./configure --prefix=$LDHACK; else ./configure --prefix=$LDHACK --with-libsodium=$LDHACK; fi
54-
- make
43+
- ./configure --prefix=$ZMQ_PREFIX --with-tweetnacl --with-relaxed --enable-static --disable-shared
44+
- V=1 make -j
5545
- make install
5646
- cd ..
5747

58-
install: env LD_LIBRARY_PATH=$LDHACK/lib LD_RUN_PATH=$LDHACK/lib PKG_CONFIG_PATH=$LDHACK/lib/pkgconfig LDFLAGS=-L$LDHACK/lib CFLAGS=-I$LDHACK/lib/include npm install
48+
install: env PKG_CONFIG_PATH=$ZMQ_PREFIX/lib/pkgconfig npm install
5949

6050
script: travis_retry npm test

binding.gyp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
'/usr/local/include',
4848
],
4949
'libraries': [
50-
'<!@(pkg-config libzmq --libs)',
5150
'-L/opt/local/lib',
5251
'-L/usr/local/lib',
5352
]
@@ -56,19 +55,12 @@
5655
'include_dirs': [
5756
'<!@(pkg-config libzmq --cflags-only-I | sed s/-I//g)',
5857
'/usr/local/include',
59-
],
60-
'libraries': [
61-
'<!@(pkg-config libzmq --libs)',
62-
'-L/usr/local/lib',
6358
]
6459
}],
6560
['OS=="linux"', {
6661
'cflags': [
6762
'<!(pkg-config libzmq --cflags 2>/dev/null || echo "")',
6863
],
69-
'libraries': [
70-
'<!(pkg-config libzmq --libs 2>/dev/null || echo "")',
71-
],
7264
}],
7365
]
7466
}

test/util.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// cleanup utils for sockets
2+
var sockets = [];
3+
4+
exports.cleanup = function (done) {
5+
while (sockets.length) {
6+
sockets.pop().close();
7+
}
8+
// give underlying sockets some time to close
9+
// this shouldn't be necessary on *ix, but it seems to be
10+
setTimeout(function () {
11+
done();
12+
}, 500);
13+
};
14+
15+
exports.push_sockets = function () {
16+
sockets.push.apply(sockets, arguments);
17+
};
18+
19+
exports.done_countdown = function (done, counter) {
20+
// add a done-countdown, so multiple async events can be awaited before triggering done
21+
return function () {
22+
counter -= 1;
23+
if (counter === 0) {
24+
done();
25+
}
26+
}
27+
};

test/zmq_proxy.push-pull.js

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ var addr = 'tcp://127.0.0.1'
77
, backendAddr = addr+':5502'
88
, captureAddr = addr+':5503';
99

10-
describe('proxy.push-pull', function() {
10+
var testutil = require('./util');
1111

12+
describe('proxy.push-pull', function() {
13+
afterEach(testutil.cleanup);
14+
1215
it('should proxy push-pull connected to pull-push',function (done) {
1316

1417
var frontend = zmq.socket('pull');
@@ -22,14 +25,9 @@ describe('proxy.push-pull', function() {
2225

2326
push.connect(frontendAddr);
2427
pull.connect(backendAddr);
28+
testutil.push_sockets(frontend, backend, push, pull);
2529

2630
pull.on('message',function (msg) {
27-
28-
frontend.close();
29-
backend.close();
30-
push.close();
31-
pull.close();
32-
3331
msg.should.be.an.instanceof(Buffer);
3432
msg.toString().should.equal('foo');
3533
done();
@@ -53,36 +51,30 @@ describe('proxy.push-pull', function() {
5351

5452
var pull = zmq.socket('pull');
5553
var push = zmq.socket('push');
56-
54+
testutil.push_sockets(frontend, backend, push, pull, capture, capSub);
55+
5756
frontend.bindSync(frontendAddr);
5857
backend.bindSync(backendAddr);
5958
capture.bindSync(captureAddr);
6059

6160
pull.connect(frontendAddr);
6261
push.connect(backendAddr);
6362
capSub.connect(captureAddr);
63+
64+
var countdown = testutil.done_countdown(done, 2);
6465

6566
pull.on('message',function (msg) {
6667
msg.should.be.an.instanceof(Buffer);
6768
msg.toString().should.equal('foo');
6869
console.log(msg.toString());
70+
countdown();
6971
});
7072

7173
capSub.subscribe('');
7274
capSub.on('message',function (msg) {
73-
capture.close();
74-
capSub.close();
75-
76-
setTimeout(function() {
77-
frontend.close();
78-
backend.close();
79-
push.close();
80-
pull.close();
81-
82-
msg.should.be.an.instanceof(Buffer);
83-
msg.toString().should.equal('foo');
84-
done();
85-
},100.0);
75+
msg.should.be.an.instanceof(Buffer);
76+
msg.toString().should.equal('foo');
77+
countdown();
8678
});
8779

8880
setTimeout(function() {

test/zmq_proxy.router-dealer.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ var addr = 'tcp://127.0.0.1'
77
, backendAddr = addr+':5505'
88
, captureAddr = addr+':5506';
99

10+
var testutil = require('./util');
11+
1012
describe('proxy.router-dealer', function() {
13+
afterEach(testutil.cleanup);
1114

1215
it('should proxy req-rep connected over router-dealer', function (done){
1316

@@ -22,14 +25,11 @@ describe('proxy.router-dealer', function() {
2225

2326
req.connect(frontendAddr);
2427
rep.connect(backendAddr);
28+
testutil.push_sockets(frontend, backend, req, rep);
2529

2630
req.on('message',function(msg){
2731
msg.should.be.an.instanceof(Buffer);
2832
msg.toString().should.equal('foo bar');
29-
frontend.close();
30-
backend.close();
31-
req.close();
32-
rep.close();
3333
done();
3434
});
3535

@@ -64,26 +64,23 @@ describe('proxy.router-dealer', function() {
6464
rep.connect(backendAddr);
6565
capSub.connect(captureAddr);
6666
capSub.subscribe('');
67+
testutil.push_sockets(frontend, backend, req, rep, capture, capSub);
68+
var countdown = testutil.done_countdown(done, 2);
6769

6870
req.on('message',function (msg) {
69-
req.close();
70-
rep.close();
7171
console.log(msg.toString());
72+
countdown();
7273
});
7374

7475
rep.on('message', function (msg) {
7576
rep.send(msg+' bar');
7677
});
7778

7879
capSub.on('message',function (msg) {
79-
backend.close();
80-
frontend.close();
81-
capture.close();
82-
capSub.close();
8380
setTimeout(function() {
8481
msg.should.be.an.instanceof(Buffer);
8582
msg.toString().should.equal('foo bar');
86-
done();
83+
countdown();
8784
},100.0)
8885
});
8986

test/zmq_proxy.xpub-xsub.js

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ var addr = 'tcp://127.0.0.1'
88
, captureAddr = addr+':5509';
99

1010
var version = semver.gte(zmq.version, '3.1.0');
11+
var testutil = require('./util');
1112

1213
describe('proxy.xpub-xsub', function() {
13-
14+
afterEach(testutil.cleanup);
15+
1416
it('should proxy pub-sub connected to xpub-xsub', function (done) {
1517
if (!version) {
1618
done();
@@ -22,18 +24,13 @@ describe('proxy.xpub-xsub', function() {
2224

2325
var sub = zmq.socket('sub');
2426
var pub = zmq.socket('pub');
27+
testutil.push_sockets(frontend, backend, sub, pub);
2528

2629
sub.subscribe('');
2730
sub.on('message',function (msg) {
28-
29-
frontend.close();
30-
backend.close();
31-
sub.close();
32-
pub.close();
33-
3431
msg.should.be.an.instanceof(Buffer);
3532
msg.toString().should.equal('foo');
36-
33+
console.log(msg.toString());
3734
done();
3835
});
3936

@@ -45,7 +42,11 @@ describe('proxy.xpub-xsub', function() {
4542

4643
setTimeout(function() {
4744
pub.send('foo');
48-
}, 200.0);
45+
}, 500);
46+
47+
setTimeout(function () {
48+
throw Error("Timeout");
49+
}, 10000);
4950

5051
zmq.proxy(frontend,backend);
5152

@@ -67,33 +68,24 @@ describe('proxy.xpub-xsub', function() {
6768

6869
var sub = zmq.socket('sub');
6970
var pub = zmq.socket('pub');
71+
testutil.push_sockets(frontend, backend, sub, pub, capture, capSub);
72+
73+
var countdown = testutil.done_countdown(done, 2);
7074

7175
sub.subscribe('');
7276
sub.on('message', function (msg) {
73-
74-
sub.close();
75-
pub.close();
76-
backend.close();
77-
frontend.close();
78-
7977
msg.should.be.an.instanceof(Buffer);
8078
msg.toString().should.equal('foo');
8179

8280
console.log(msg.toString());
83-
81+
countdown();
8482
});
8583

8684
capSub.subscribe('');
8785
capSub.on('message',function (msg) {
88-
89-
capture.close();
90-
capSub.close();
91-
92-
setTimeout(function(){
93-
msg.should.be.an.instanceof(Buffer);
94-
msg.toString().should.equal('foo');
95-
done();
96-
},100.0);
86+
msg.should.be.an.instanceof(Buffer);
87+
msg.toString().should.equal('foo');
88+
countdown();
9789
});
9890

9991
capture.bind(captureAddr,function() {
@@ -106,7 +98,11 @@ describe('proxy.xpub-xsub', function() {
10698

10799
setTimeout(function () {
108100
pub.send('foo');
109-
}, 200.0);
101+
}, 500);
102+
103+
setTimeout(function () {
104+
throw Error("Timeout");
105+
}, 10000);
110106

111107
zmq.proxy(frontend,backend,capture);
112108
});
@@ -131,6 +127,7 @@ describe('proxy.xpub-xsub', function() {
131127

132128
sub.connect(frontendAddr);
133129
pub.connect(backendAddr);
130+
testutil.push_sockets(frontend, backend, sub, pub);
134131

135132
try{
136133

@@ -141,15 +138,9 @@ describe('proxy.xpub-xsub', function() {
141138
e.message.should.equal('wrong socket order to proxy');
142139

143140
} finally{
144-
frontend.close();
145-
backend.close();
146-
pub.close();
147-
sub.close();
148-
149-
//allow time for TCP sockets to close
150-
setTimeout(function(){
151-
done();
152-
},200)
141+
142+
done();
143+
153144
}
154145
})
155146
});

0 commit comments

Comments
 (0)