From bce12109cd82853ef017ee19e8ecb9a215a02e38 Mon Sep 17 00:00:00 2001 From: Eugene Miloslavsky Date: Tue, 17 Apr 2012 10:04:11 -0700 Subject: [PATCH] test session expiration by reusing client id and password --- test/test | 3 ++- test/zk_test_end_session.js | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 test/zk_test_end_session.js diff --git a/test/test b/test/test index c43e1470..63575bd8 100755 --- a/test/test +++ b/test/test @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # arg1 is the connection string @@ -23,3 +23,4 @@ runtest zk_test_utf8.js $1 runtest zk_test_watcher.js 2 $1 runtest zk_test_watcher_promise.js $1 runtest zk_test_watcher_session.js 2 $1 +runtest zk_test_end_session.js $1 diff --git a/test/zk_test_end_session.js b/test/zk_test_end_session.js new file mode 100644 index 00000000..02642963 --- /dev/null +++ b/test/zk_test_end_session.js @@ -0,0 +1,27 @@ +// test session expiration as described in zk FAQ +var ZK = require('../lib/zookeeper'); +var assert = require('assert'); +var connect = (process.argv[2] || 'localhost:2181'); +var timeout = 5000; + +var zk = new ZK({connect: connect, timeout: timeout, debug_level: ZK.ZOO_LOG_LEVEL_INFO, host_order_deterministic: false}); + +var zkClosed = false; +zk.on('close', function() { zkClosed = true;} ); + +zk.connect(function (err) { + if(err) throw err; + assert.equal(zk.client_password.length, 32); + + var zk2 = new ZK({connect: connect, timeout: timeout, debug_level: ZK.ZOO_LOG_LEVEL_INFO, host_order_deterministic: false, + client_id: zk.client_id,client_password: zk.client_password}); + zk2.connect(function (err) { + if(err) throw err; + zk2.close(); + zk.a_create ('/test_end_session', 'x', ZK.ZOO_SEQUENCE |ZK.ZOO_EPHEMERAL, function (rc, error, path) { + console.log ("zk node create result: %d, error: '%s', path=%s", rc, error, path); + assert(rc != 0); + assert(zkClosed); + }); + }); +});