Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/faye-websocket/examples/autobahn_client.js b/node_modules/faye-websocket/examples/autobahn_client.js
new file mode 100644
index 0000000..0059b21
--- /dev/null
+++ b/node_modules/faye-websocket/examples/autobahn_client.js
@@ -0,0 +1,39 @@
+var WebSocket = require('..').Client,
+    deflate   = require('permessage-deflate'),
+    pace      = require('pace');
+
+var host    = 'ws://localhost:9001',
+    agent   = encodeURIComponent('node-' + process.version),
+    cases   = 0,
+    options = {extensions: [deflate]};
+
+var socket = new WebSocket(host + '/getCaseCount'),
+    url, progress;
+
+socket.onmessage = function(event) {
+  console.log('Total cases to run: ' + event.data);
+  cases = parseInt(event.data);
+  progress = pace(cases);
+};
+
+var runCase = function(n) {
+  if (n > cases) {
+    url = host + '/updateReports?agent=' + agent;
+    socket = new WebSocket(url);
+    socket.onclose = process.exit;
+    return;
+  }
+
+  url = host + '/runCase?case=' + n + '&agent=' + agent;
+  socket = new WebSocket(url, [], options);
+  socket.pipe(socket);
+
+  socket.on('close', function() {
+    progress.op();
+    runCase(n + 1);
+  });
+};
+
+socket.onclose = function() {
+  runCase(1);
+};
diff --git a/node_modules/faye-websocket/examples/client.js b/node_modules/faye-websocket/examples/client.js
new file mode 100644
index 0000000..7d12039
--- /dev/null
+++ b/node_modules/faye-websocket/examples/client.js
@@ -0,0 +1,32 @@
+var WebSocket = require('..').Client,
+    deflate   = require('permessage-deflate'),
+    fs        = require('fs');
+
+var url   = process.argv[2],
+    proxy = process.argv[3],
+    ca    = fs.readFileSync(__dirname + '/../spec/server.crt'),
+    tls   = {ca: ca};
+
+var ws = new WebSocket(url, [], {
+  proxy:      {origin: proxy, headers: {'User-Agent': 'Echo'}, tls: tls},
+  tls:        tls,
+  headers:    {Origin: 'http://faye.jcoglan.com'},
+  extensions: [deflate]
+});
+
+ws.onopen = function() {
+  console.log('[open]', ws.headers);
+  ws.send('mic check');
+};
+
+ws.onclose = function(close) {
+  console.log('[close]', close.code, close.reason);
+};
+
+ws.onerror = function(error) {
+  console.log('[error]', error.message);
+};
+
+ws.onmessage = function(message) {
+  console.log('[message]', message.data);
+};
diff --git a/node_modules/faye-websocket/examples/haproxy.conf b/node_modules/faye-websocket/examples/haproxy.conf
new file mode 100644
index 0000000..bb7bc9d
--- /dev/null
+++ b/node_modules/faye-websocket/examples/haproxy.conf
@@ -0,0 +1,20 @@
+defaults
+   mode http
+   timeout client  5s
+   timeout connect 5s
+   timeout server  5s
+
+frontend all 0.0.0.0:3000
+   mode http
+   timeout client 120s
+
+   option forwardfor
+   option http-server-close
+   option http-pretend-keepalive
+
+   default_backend sockets
+
+backend sockets
+   balance uri depth 2
+   timeout server  120s
+   server socket1 127.0.0.1:7000
diff --git a/node_modules/faye-websocket/examples/proxy_server.js b/node_modules/faye-websocket/examples/proxy_server.js
new file mode 100644
index 0000000..5780440
--- /dev/null
+++ b/node_modules/faye-websocket/examples/proxy_server.js
@@ -0,0 +1,7 @@
+var ProxyServer = require('../spec/proxy_server');
+
+var port   = process.argv[2],
+    secure = process.argv[3] === 'tls',
+    proxy  = new ProxyServer({debug: true, tls: secure});
+
+proxy.listen(port);
diff --git a/node_modules/faye-websocket/examples/server.js b/node_modules/faye-websocket/examples/server.js
new file mode 100644
index 0000000..c2cfa32
--- /dev/null
+++ b/node_modules/faye-websocket/examples/server.js
@@ -0,0 +1,69 @@
+var WebSocket = require('..'),
+    deflate   = require('permessage-deflate'),
+    fs        = require('fs'),
+    http      = require('http'),
+    https     = require('https');
+
+var port    = process.argv[2] || 7000,
+    secure  = process.argv[3] === 'tls',
+    options = {extensions: [deflate], ping: 5};
+
+var upgradeHandler = function(request, socket, head) {
+  var ws = new WebSocket(request, socket, head, ['irc', 'xmpp'], options);
+  console.log('[open]', ws.url, ws.version, ws.protocol, request.headers);
+
+  ws.pipe(ws);
+
+  ws.onclose = function(event) {
+    console.log('[close]', event.code, event.reason);
+    ws = null;
+  };
+};
+
+var requestHandler = function(request, response) {
+  if (!WebSocket.EventSource.isEventSource(request))
+    return staticHandler(request, response);
+
+  var es   = new WebSocket.EventSource(request, response),
+      time = parseInt(es.lastEventId, 10) || 0;
+
+  console.log('[open]', es.url, es.lastEventId);
+
+  var loop = setInterval(function() {
+    time += 1;
+    es.send('Time: ' + time);
+    setTimeout(function() {
+      if (es) es.send('Update!!', {event: 'update', id: time});
+    }, 1000);
+  }, 2000);
+
+  fs.createReadStream(__dirname + '/haproxy.conf').pipe(es, {end: false});
+
+  es.onclose = function() {
+    clearInterval(loop);
+    console.log('[close]', es.url);
+    es = null;
+  };
+};
+
+var staticHandler = function(request, response) {
+  var path = request.url;
+
+  fs.readFile(__dirname + path, function(err, content) {
+    var status = err ? 404 : 200;
+    response.writeHead(status, {'Content-Type': 'text/html'});
+    response.write(content || 'Not found');
+    response.end();
+  });
+};
+
+var server = secure
+           ? https.createServer({
+               key:  fs.readFileSync(__dirname + '/../spec/server.key'),
+               cert: fs.readFileSync(__dirname + '/../spec/server.crt')
+             })
+           : http.createServer();
+
+server.on('request', requestHandler);
+server.on('upgrade', upgradeHandler);
+server.listen(port);
diff --git a/node_modules/faye-websocket/examples/sse.html b/node_modules/faye-websocket/examples/sse.html
new file mode 100644
index 0000000..e11a911
--- /dev/null
+++ b/node_modules/faye-websocket/examples/sse.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html>
+  <head>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <title>EventSource test</title>
+  </head>
+  <body>
+
+    <h1>EventSource test</h1>
+    <ul></ul>
+
+    <script type="text/javascript">
+      var logger = document.getElementsByTagName('ul')[0],
+          socket = new EventSource('/');
+
+      var log = function(text) {
+        logger.innerHTML += '<li>' + text + '</li>';
+      };
+
+      socket.onopen = function() {
+        log('OPEN');
+      };
+
+      socket.onmessage = function(event) {
+        log('MESSAGE: ' + event.data);
+      };
+
+      socket.addEventListener('update', function(event) {
+        log('UPDATE(' + event.lastEventId + '): ' + event.data);
+      });
+
+      socket.onerror = function(event) {
+        log('ERROR: ' + event.message);
+      };
+    </script>
+
+  </body>
+</html>
diff --git a/node_modules/faye-websocket/examples/ws.html b/node_modules/faye-websocket/examples/ws.html
new file mode 100644
index 0000000..883cded
--- /dev/null
+++ b/node_modules/faye-websocket/examples/ws.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html>
+  <head>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <title>WebSocket test</title>
+  </head>
+  <body>
+
+    <h1>WebSocket test</h1>
+    <ul></ul>
+
+    <script type="text/javascript">
+      var logger = document.getElementsByTagName('ul')[0],
+          Socket = window.MozWebSocket || window.WebSocket,
+          protos = ['foo', 'bar', 'xmpp'],
+          socket = new Socket('ws://' + location.hostname + ':' + location.port + '/', protos),
+          index  = 0;
+
+      var log = function(text) {
+        logger.innerHTML += '<li>' + text + '</li>';
+      };
+
+      socket.addEventListener('open', function() {
+        log('OPEN: ' + socket.protocol);
+        socket.send('Hello, world');
+      });
+
+      socket.onerror = function(event) {
+        log('ERROR: ' + event.message);
+      };
+
+      socket.onmessage = function(event) {
+        log('MESSAGE: ' + event.data);
+        setTimeout(function() { socket.send(++index + ' ' + event.data) }, 2000);
+      };
+
+      socket.onclose = function(event) {
+        log('CLOSE: ' + event.code + ', ' + event.reason);
+      };
+    </script>
+
+  </body>
+</html>