blob: f9c52a18449468824d8840e7154d51f00b7f43db [file] [log] [blame]
Alex Klein6bb06942023-03-13 16:45:16 -06001# Copyright 2023 The ChromiumOS Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Telemetry POC script."""
6
7import argparse
8import time
9from typing import List, Optional
10
Lizzy Preslandc251a212023-05-17 06:52:26 +000011from chromite.third_party.opentelemetry import trace
Anuj Jamwal36a607e2023-05-02 16:45:21 +000012
Anuj Jamwal3dadf7e2023-06-02 19:39:17 +000013from chromite.lib import chromite_config
Alex Klein6bb06942023-03-13 16:45:16 -060014from chromite.lib import commandline
Anuj Jamwal5fe14392023-05-01 14:26:02 +000015from chromite.utils import telemetry
Alex Klein6bb06942023-03-13 16:45:16 -060016
17
18def get_parser() -> commandline.ArgumentParser:
19 """Build the argument parser."""
20 parser = commandline.ArgumentParser(description=__doc__)
21
22 parser.add_argument(
23 "-t",
24 "--time",
25 type=int,
26 default=1,
27 help="Seconds to sleep.",
28 )
29
30 return parser
31
32
33def parse_arguments(argv: List) -> argparse.Namespace:
34 """Parse and validate arguments."""
35 parser = get_parser()
36 opts = parser.parse_args(argv)
37
38 opts.Freeze()
39 return opts
40
41
Anuj Jamwal84d66ed2023-04-14 17:41:59 +000042tracer = trace.get_tracer(__name__)
43
44
Alex Klein6bb06942023-03-13 16:45:16 -060045def main(argv: Optional[List[str]]) -> Optional[int]:
46 """Main."""
47 opts = parse_arguments(argv)
Lizzy Preslandbba75e22023-05-03 22:03:01 +000048
Anuj Jamwal3dadf7e2023-06-02 19:39:17 +000049 chromite_config.initialize()
50 telemetry.initialize(chromite_config.TELEMETRY_CONFIG)
51
Lizzy Preslandbba75e22023-05-03 22:03:01 +000052 if opts.debug:
Anuj Jamwal3dadf7e2023-06-02 19:39:17 +000053 telemetry.export_to_console(chromite_config.TELEMETRY_CONFIG)
Lizzy Preslandbba75e22023-05-03 22:03:01 +000054
Anuj Jamwal84d66ed2023-04-14 17:41:59 +000055 with tracer.start_as_current_span("test") as span:
56 time.sleep(opts.time / 2)
57 span.add_event(name="mid-sleep-event", attributes={"attr": "val"})
58 time.sleep(opts.time / 2)