diff --git a/experimental/example/Makefile b/experimental/example/Makefile index 8607c61b2..4492632bf 100644 --- a/experimental/example/Makefile +++ b/experimental/example/Makefile @@ -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 diff --git a/experimental/example/README.md b/experimental/example/README.md index d76e2b0f6..79b5d582f 100644 --- a/experimental/example/README.md +++ b/experimental/example/README.md @@ -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 +``` \ No newline at end of file diff --git a/experimental/example/app/app.py b/experimental/example/app/app.py index 29be0ca05..398cbb0ff 100644 --- a/experimental/example/app/app.py +++ b/experimental/example/app/app.py @@ -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) diff --git a/experimental/example/client/client.py b/experimental/example/client/client.py index 86a775570..b184d2362 100644 --- a/experimental/example/client/client.py +++ b/experimental/example/client/client.py @@ -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) diff --git a/experimental/example/echo/echo.py b/experimental/example/echo/echo.py index 68fd95ab6..fd2564cb5 100644 --- a/experimental/example/echo/echo.py +++ b/experimental/example/echo/echo.py @@ -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__": diff --git a/experimental/example/k8s/client-deployment.yaml b/experimental/example/k8s/client-deployment.yaml index c57db495e..eeedd65c8 100644 --- a/experimental/example/k8s/client-deployment.yaml +++ b/experimental/example/k8s/client-deployment.yaml @@ -3,7 +3,7 @@ kind: Deployment metadata: name: client spec: - replicas: 2 + replicas: 1 template: metadata: labels: