improve the demo app

This commit is contained in:
Tom Wilkie
2016-05-12 17:02:21 +01:00
committed by Tom Wilkie
parent b5a8b1971e
commit c44b5b2d50
6 changed files with 32 additions and 23 deletions
+1 -1
View File
@@ -37,4 +37,4 @@ endif
touch $@
clean:
rm -f qotd/*.o qotd/qotd searchapp/searchapp shout/shout *.marker
rm -f qotd/*.o qotd/qotd searchapp/searchapp shout/shout .*.marker
+11 -6
View File
@@ -7,7 +7,6 @@ $ docker-machine create -d virtualbox --virtualbox-memory=4096 scope-tastic
$ eval $(docker-machine env scope-tastic)
$ sudo curl -L git.io/weave -o /usr/local/bin/weave
$ sudo chmod +x /usr/local/bin/weave
$ weave launch
$ curl -o run.sh https://raw.githubusercontent.com/weaveworks/scope/master/experimental/example/run.sh
$ ./run.sh
$ sudo wget -O /usr/local/bin/scope https://github.com/weaveworks/scope/releases/download/latest_release/scope
@@ -18,9 +17,15 @@ $ scope launch
# "architecture"
```
curl -> frontend --> app --> searchapp -> elasticsearch
(nginx) |
--> qotd -> internet
|
--> redis
client -> frontend --> app --> searchapp -> elasticsearch
(nginx) |
--> qotd -> internet
|
--> redis
```
# To push new images
```
for img in $(docker images | grep tomwilkie | cut -d' ' -f1); do docker push $img:latest; done
```
+5 -2
View File
@@ -16,6 +16,7 @@ app = Flask(__name__)
redis = Redis(host='redis', port=6379)
pool = ThreadPoolExecutor(max_workers=10)
sessions = threading.local()
args = None
def do_redis():
redis.incr('hits')
@@ -24,6 +25,7 @@ def do_redis():
def do_qotd():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.settimeout(args.timeout)
s.connect((args.qotd, 4446))
s.send("Hello")
return s.recv(1024)
@@ -33,13 +35,13 @@ def do_qotd():
def do_search():
if getattr(sessions, 'session', None) == None:
sessions.session = requests.Session()
r = sessions.session.get(args.search)
r = sessions.session.get(args.search, timeout=args.timeout)
return r.text
def do_echo(text):
if getattr(sessions, 'session', None) == None:
sessions.session = requests.Session()
r = sessions.session.get(args.echo, data=text)
r = sessions.session.get(args.echo, data=text, timeout=args.timeout)
return r.text
def ignore_error(f):
@@ -75,6 +77,7 @@ if __name__ == "__main__":
parser.add_argument('-search', default="http://search.weave.local:80/")
parser.add_argument('-qotd', default="qotd.weave.local")
parser.add_argument('-echo', default="http://echo.weave.local:80/")
parser.add_argument('-timeout', default=0.5, type=float)
args = parser.parse_args()
logging.basicConfig(format='%(asctime)s %(levelname)s %(filename)s:%(lineno)d - %(message)s', level=logging.INFO)
+13 -7
View File
@@ -8,15 +8,17 @@ import socket
import sys
def do_request(s, args):
addrs = socket.getaddrinfo(args.target, 80)
addrs = socket.getaddrinfo(args.target, args.port)
addrs = [a
for a in addrs
if a[0] == socket.AF_INET]
logging.info("got %s", addrs)
if len(addrs) <= 0:
logging.info("Could not resolve %s", args.target)
return
addr = random.choice(addrs)
s.get("http://%s:%d" % addr[4], timeout=1.0)
url = "http://%s:%d%s" % (addr[4][0], args.port, args.path)
s.get(url, timeout=args.timeout)
logging.info("Did request %s", url)
def do_requests(args):
s = requests.Session()
@@ -29,14 +31,18 @@ def do_requests(args):
except:
logging.error("Error doing request", exc_info=sys.exc_info())
time.sleep(1)
logging.info("Did request")
time.sleep(args.period)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-target', default="frontend")
parser.add_argument('-concurrency', default=2, type=int)
parser.add_argument('-target', default="frontend.weave.local")
parser.add_argument('-port', default=80, type=int)
parser.add_argument('-path', default="/")
parser.add_argument('-concurrency', default=1, type=int)
parser.add_argument('-persist', default=True, type=bool)
parser.add_argument('-timeout', default=1.0, type=float)
parser.add_argument('-period', default=0.1, type=float)
args = parser.parse_args()
logging.info("Starting %d threads, targeting %s", args.concurrency, args.target)
+1 -6
View File
@@ -6,7 +6,6 @@ import time
import threading
import logging
from flask import Flask
from flask import request
from werkzeug.serving import WSGIRequestHandler
@@ -14,11 +13,7 @@ from werkzeug.serving import WSGIRequestHandler
app = Flask(__name__)
@app.route('/')
def hello():
if random.random() > 0.6:
time.sleep(2)
else:
time.sleep(0.5)
def echo():
return request.data
if __name__ == "__main__":
@@ -3,7 +3,7 @@ kind: Deployment
metadata:
name: client
spec:
replicas: 2
replicas: 1
template:
metadata:
labels: