From 45dd5071230551e5ed7e8cd1e75b44808d14ea71 Mon Sep 17 00:00:00 2001 From: Chad Redman Date: Thu, 13 Jul 2023 14:25:13 -0400 Subject: [PATCH] SHIBUI-2575: Telemetry integration Testing with Docker Compose --- testbed/mock-beacon/beacon/http_echo.py | 52 +++++++++++++++++++ testbed/mock-beacon/docker-compose.yml | 47 +++++++++++++++++ .../mock-beacon/shibui/conf/application.yml | 31 +++++++++++ testbed/mock-beacon/shibui/var/.gitkeep | 0 testbed/mock-beacon/shibui/var2/.gitkeep | 0 5 files changed, 130 insertions(+) create mode 100644 testbed/mock-beacon/beacon/http_echo.py create mode 100644 testbed/mock-beacon/docker-compose.yml create mode 100644 testbed/mock-beacon/shibui/conf/application.yml create mode 100644 testbed/mock-beacon/shibui/var/.gitkeep create mode 100644 testbed/mock-beacon/shibui/var2/.gitkeep diff --git a/testbed/mock-beacon/beacon/http_echo.py b/testbed/mock-beacon/beacon/http_echo.py new file mode 100644 index 000000000..c584e13ae --- /dev/null +++ b/testbed/mock-beacon/beacon/http_echo.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 + +# https://gist.github.com/gsauthof/276a6ca1bd28231dce20f60159f1f569 + +# SPDX-FileCopyrightText: © 2022 Georg Sauthoff +# SPDX-License-Identifier: BSL-1.0 + +import argparse +import http.server +import json +import sys +from datetime import datetime + + +class Dumper(http.server.BaseHTTPRequestHandler): + def do_GET(self, method='GET'): + print(f'\n{datetime.now()}\n{self.client_address[0]}\n{method} {self.path}\n{self.headers}') + self.send_response(200) + self.end_headers() + + def do_DELETE(self): + return self.do_get('DELETE') + + def do_POST(self, method='POST'): + n = int(self.headers.get('content-length', 0)) + body = self.rfile.read(n) + print(f'\n{datetime.now()}\n{self.client_address[0]}\n{method} {self.path}\n{self.headers}{body}\n') + if self.headers.get('content-type') == 'application/json': + d = json.loads(body) + print(json.dumps(d, indent=4, sort_keys=True)) + print() + self.send_response(200) + self.end_headers() + + def do_PUT(self): + return self.do_post('PUT') + + def log_message(self, _, *args): + pass + + +def main(): + p = argparse.ArgumentParser(description='Dump HTTP requests to stdout') + p.add_argument('address', help='bind address') + p.add_argument('port', type=int, help='bind port') + xs = p.parse_args() + s = http.server.HTTPServer((xs.address, xs.port), Dumper) + s.serve_forever() + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/testbed/mock-beacon/docker-compose.yml b/testbed/mock-beacon/docker-compose.yml new file mode 100644 index 000000000..674e6d189 --- /dev/null +++ b/testbed/mock-beacon/docker-compose.yml @@ -0,0 +1,47 @@ +version: "3.8" + +services: + + db: + image: "postgres:15" + restart: always + ports: + - '5432:5432' + environment: + - POSTGRES_USER=shibui + - POSTGRES_PASSWORD=shibui + - POSTGRES_DB=shibui + + beacon: + image: python:3 + volumes: + - ./beacon:/src + ports: + - "5678:5678" + command: ["python", "-u", "/src/http_echo.py", "0.0.0.0", "5678"] + shibui: + image: gcr.io/distroless/java + depends_on: + - db + volumes: + - ./shibui/war/shibui-1.18.0-SNAPSHOT.war:/app.war:ro + - ./shibui/conf/application.yml:/application.yml:ro + - ./shibui/var:/var/shibui + ports: + #- "5005:5005" + - "8080:8080" + #entrypoint: ["/usr/bin/java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-jar", "/app.war"] + entrypoint: ["/usr/bin/java", "-jar", "/app.war"] + + shibui2: + image: gcr.io/distroless/java + depends_on: + - shibui + - db + volumes: + - ./shibui/war/shibui-1.18.0-SNAPSHOT.war:/app.war:ro + - ./shibui/conf/application.yml:/application.yml:ro + - ./shibui/var2:/var/shibui + ports: + - "8081:8080" + entrypoint: ["/usr/bin/java", "-jar", "/app.war"] diff --git a/testbed/mock-beacon/shibui/conf/application.yml b/testbed/mock-beacon/shibui/conf/application.yml new file mode 100644 index 000000000..298dab9b2 --- /dev/null +++ b/testbed/mock-beacon/shibui/conf/application.yml @@ -0,0 +1,31 @@ +spring: + profiles: + include: + - dev + - very-dangerous + datasource: + platform: postgres + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://db:5432/shibui + username: shibui + password: shibui + jpa: + show-sql: false + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQL95Dialect + format_sql: true + +shibui: + default-password: "{noop}letmein7" + beacon: + enabled: true + productName: ShibUi + installationID: UNICON-SHIBUI-TESTING + url: http://beacon:5678/beacon-endpoint + send: + cron: 0 1/10 * * * ? + +logging: + level: + edu.internet2.tier.shibboleth.admin.ui.scheduled.BeaconReportingTask: "DEBUG" diff --git a/testbed/mock-beacon/shibui/var/.gitkeep b/testbed/mock-beacon/shibui/var/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/testbed/mock-beacon/shibui/var2/.gitkeep b/testbed/mock-beacon/shibui/var2/.gitkeep new file mode 100644 index 000000000..e69de29bb