|
33 | 33 | from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
34 | 34 | from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
|
35 | 35 | from opentelemetry.sdk.resources import Resource
|
| 36 | + |
| 37 | +from openfeature import api |
| 38 | +from openfeature.contrib.provider.flagd import FlagdProvider |
| 39 | + |
| 40 | +# TODO: once openfeature otel hook for python is released, this will work |
| 41 | +# from openfeature.contrib.hooks.otel import TracingHook |
| 42 | + |
36 | 43 | from playwright.async_api import Route, Request
|
37 | 44 |
|
38 | 45 | logger_provider = LoggerProvider(resource=Resource.create(
|
|
64 | 71 | URLLib3Instrumentor().instrument()
|
65 | 72 | logging.info("Instrumentation complete")
|
66 | 73 |
|
| 74 | +# Initialize Flagd provider |
| 75 | +api.set_provider(FlagdProvider(host=os.environ.get('FLAGD_HOST', 'flagd'), port=os.environ.get('FLAGD_PORT', 8013))) |
| 76 | + |
| 77 | +# Get flagd value |
| 78 | +def check_flagd(flag_name: str): |
| 79 | + # Initialize OpenFeature |
| 80 | + client = api.get_client() |
| 81 | + # TODO: once openfeature otel hook for python is released, this will work |
| 82 | + # api.add_hooks(TracingHook()) |
| 83 | + return client.get_boolean_value("loadgeneratorFloodHomepage", False) |
| 84 | + |
| 85 | +# Amount of iterations |
| 86 | +flood_count = int(os.environ.get("FLOOD_COUNT", 100)) |
| 87 | + |
67 | 88 | categories = [
|
68 | 89 | "binoculars",
|
69 | 90 | "telescopes",
|
@@ -153,6 +174,12 @@ def checkout_multi(self):
|
153 | 174 | checkout_person["userId"] = user
|
154 | 175 | self.client.post("/api/checkout", json=checkout_person)
|
155 | 176 |
|
| 177 | + @task(5) |
| 178 | + def flood_home(self): |
| 179 | + if check_flagd("loadgeneratorFloodHomepage"): |
| 180 | + for _ in range(0, flood_count): |
| 181 | + self.client.get("/") |
| 182 | + |
156 | 183 | def on_start(self):
|
157 | 184 | ctx = baggage.set_baggage("synthetic_request", "true")
|
158 | 185 | context.attach(ctx)
|
|
0 commit comments