From c513b1ec9fe8ef5528aa4842a14ffd3e801e6ee4 Mon Sep 17 00:00:00 2001 From: Qian Sun Date: Thu, 5 Jan 2017 18:31:07 -0800 Subject: [PATCH 1/2] Add sample echo backend. --- src/envoy/prototype/README.md | 4 +- test/backend/echo/echo.js | 84 +++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 test/backend/echo/echo.js diff --git a/src/envoy/prototype/README.md b/src/envoy/prototype/README.md index 09ad54fcd51..5b4e85bfb4d 100644 --- a/src/envoy/prototype/README.md +++ b/src/envoy/prototype/README.md @@ -29,10 +29,10 @@ This Proxy will use Envoy and talk to Mixer server. The server will run at port 9091 -* Start backend Echo server. At ESP repo (https://github.com/cloudendpoints/esp) +* Start backend Echo server. ``` - cd test/echo + cd test/backend/echo npm install node echo.js ``` diff --git a/test/backend/echo/echo.js b/test/backend/echo/echo.js new file mode 100644 index 00000000000..750b3be2087 --- /dev/null +++ b/test/backend/echo/echo.js @@ -0,0 +1,84 @@ +// Copyright (C) Extensible Service Proxy Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +// SUCH DAMAGE. +// +//////////////////////////////////////////////////////////////////////////////// +// +// A Google Cloud Endpoints example implementation of a simple bookstore API. + +"use strict"; + +var http = require('http'); +var server = http.createServer(); + +var totalReceived = 0; +var totalData = 0; + +server.on('request', function(req, res) { + totalReceived += 1; + var method = req.method; + var url = req.url; + if (method == 'GET' && url == '/version') { + res.writeHead(200, {"Content-Type": "application/json"}); + res.write('{"version":"${VERSION}"}'); + res.end(); + return; + } + req.on('data', function(chunk) { + totalData += chunk.length; + res.write(chunk); + }) + req.on('end', function() { + res.end(); + }); + + var cl = req.headers['content-length']; + var ct = req.headers['content-type']; + + var headers = {}; + if (cl !== undefined) { + headers['Content-Length'] = cl; + } + if (ct !== undefined) { + headers['Content-Type'] = ct; + } + + res.writeHead(200, headers); + req.resume(); +}); + +var totalConnection = 0; + +server.on('connection', function(socket) { + totalConnection += 1; +}); + +setInterval(function() { + console.log("Requests received:", totalReceived, " Data: ", totalData, " Connection: ", totalConnection); +}, 1000); + +var port = process.env.PORT || 8080; + +server.listen(port, function() { + console.log('Listening on port', port); +}); From cc5636a9504a3856a6fb81dc84315c94f161cefc Mon Sep 17 00:00:00 2001 From: Qian Sun Date: Thu, 5 Jan 2017 18:51:27 -0800 Subject: [PATCH 2/2] Remove duplicated file, only update instructions. --- test/backend/echo/echo.js | 84 --------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 test/backend/echo/echo.js diff --git a/test/backend/echo/echo.js b/test/backend/echo/echo.js deleted file mode 100644 index 750b3be2087..00000000000 --- a/test/backend/echo/echo.js +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (C) Extensible Service Proxy Authors -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -//////////////////////////////////////////////////////////////////////////////// -// -// A Google Cloud Endpoints example implementation of a simple bookstore API. - -"use strict"; - -var http = require('http'); -var server = http.createServer(); - -var totalReceived = 0; -var totalData = 0; - -server.on('request', function(req, res) { - totalReceived += 1; - var method = req.method; - var url = req.url; - if (method == 'GET' && url == '/version') { - res.writeHead(200, {"Content-Type": "application/json"}); - res.write('{"version":"${VERSION}"}'); - res.end(); - return; - } - req.on('data', function(chunk) { - totalData += chunk.length; - res.write(chunk); - }) - req.on('end', function() { - res.end(); - }); - - var cl = req.headers['content-length']; - var ct = req.headers['content-type']; - - var headers = {}; - if (cl !== undefined) { - headers['Content-Length'] = cl; - } - if (ct !== undefined) { - headers['Content-Type'] = ct; - } - - res.writeHead(200, headers); - req.resume(); -}); - -var totalConnection = 0; - -server.on('connection', function(socket) { - totalConnection += 1; -}); - -setInterval(function() { - console.log("Requests received:", totalReceived, " Data: ", totalData, " Connection: ", totalConnection); -}, 1000); - -var port = process.env.PORT || 8080; - -server.listen(port, function() { - console.log('Listening on port', port); -});