def main()

in step3/src/loadgen/loadgen.py [0:0]


def main():
    target = os.environ.get("CLIENT_ADDR", "0.0.0.0:8080")

    exporter = CloudTraceSpanExporter()
    trace.get_tracer_provider().add_span_processor(
        export.SimpleSpanProcessor(exporter)
    )
    tracer = trace.get_tracer(__name__)
    propagators.set_global_textmap(CloudTraceFormatPropagator())
    trace.set_tracer_provider(TracerProvider())

    # connectivity check to client service
    healthz = f"http://{target}/_healthz"
    logger.info(f"check connectivity: {healthz}")
    wait_interval = 1.0
    while not check_client_connection(healthz):
        if wait_interval > 30:
            logger.error("exponential backoff exceeded the threshold")
            return
        logger.warning(f"not connected. wait for {wait_interval}sec and retry.")
        time.sleep(wait_interval)
        wait_interval *= 3

    # start request loop to client service
    logger.info("start client request loop")
    addr = f"http://{target}"
    while True:
        with tracer.start_as_current_span("loadgen") as root_span:
            root_span.add_event(name="request_start")
            logger.info("start request to client")
            call_client(addr)
            root_span.add_event(name="request_end")
            logger.info("end request to client")
        time.sleep(2.0)